ZaLinux.ru

Как восстановить работоспособность USB диска/флешки после записи ISO или установки ОС (РЕШЕНО)

Опытные пользователи могут делать с USB носителями (дисками и флешками) разные нетривиальные вещи:

  • устанавливать на них ОС
  • разбивать USB флешку на несколько разделов
  • записывать Live образ и делать загрузочную флешку
  • разрушать таблицу разделов

Все эти действия являются, с одной стороны, обратимыми, но, с другой стороны, могут вызвать непредвиденные последствия. Например:

  1. Если вы записали Live или установочный образ на флешку, вы можете столкнуться с тем что обычными средствами не получается отформатировать флешку и вернуть её в нормальное состояния для обычного использования, то есть для записи файлов.
  2. Установка ОС на флешку также ведёт к созданию нескольких разделов, в результате чего может возникнуть затруднение к их удалением и форматированием.
  3. Флешку, на которой удалили таблицу разделов, невозможно использовать.
  4. Операционная система не устанавливается на флешку из-за ошибки разметки диска, хотя флешка в полном порядке

Данная статья посвящена подобным вопросам — как вернуть флешку в нормальное состояние, удалить все разделы и отформатировать, чтобы можно было записывать файлы и/или установить ОС на неё.

Восстановление флешки в Windows

Для просмотра дисков выполните (нажмите Win+r и введите, либо найдите в меню Пуск, либо запустите в командной строке):

diskmgmt.msc

На скриншоте показана флешка, на которую записан ISO образ с Live системой Linux. Как вы можете видеть, никакие действия для данного носителя недоступны.

Также невозможно удалить или отформатировать разделы.

Для исправления, откройте командную строку с правами администратора — это можно сделать нажав Win+x и выбрав Windows Terminal (Admin).

Запустите утилиту diskpart, для этого в открывшейся командной строке выполните:

diskpart

Следующей командой выведите список дисков:

list disk

Теперь выберите диск, который необходимо восстановить, это делается командой вида

select disk X

Где в качестве X нужно указать номер вашей USB флешки, которую вы хотите восстановить.

Например, номер моего диска 2, тогда команда следующая:

select disk 2

Следующая команда очищает диск:

clean

Если всё прошло нормально, то будет выведено сообщение

DiskPart succeeded in cleaning the disk.

Вы можете столкнуться с ошибкой:

DiskPart has encountered an error: Access is denied.
See the System Event Log for more information.

Одной из частых её причин является то, что диск используется в другой программе, например, в данный момент диск открыт в файловом менеджере. Закройте файловый менеджер и другие программы, которые могут использовать диск, и повторите команду.

Теперь создайте таблицу разделов:

create partition primary

Если всё прошло нормально, будет выведено сообщение:

DiskPart succeeded in creating the specified partition.

Теперь создайте файловую систему, выбрав одну из следующих команд:

format fs=fat32 quick
# ИЛИ
format fs=exfat quick
# ИЛИ
format fs=ntfs quick

Смотрите также:

Для выхода из программы введите:

exit

Как вы можете убедиться, флешка вернулась в нормальное состояние — ей присвоена буква, с ней можно выполнять обычные действия, например, записать на неё файлы.

Восстановление флешки в Linux

В Linux кроме того, что диски и флешки с разделами восстанавливаются другими утилитами, нужно учитывать, что в большинстве современных дистрибутивов разделы носителей монтируются автоматически, а для успешного завершения операций по очистке и восстановлению, необходимо, чтобы флешка не использовалась никакой программой.

Кстати, автоматическое монтирование же может стать причиной некоторых проблем: например, если вы пытаетесь установить Linux на USB флешку и разметка диска заканчивается неудачей, то самая вероятная причина этого автоматическое монтирование разделов флешки. Очистка, показанная в данной инструкции, поможет избежать подобной проблемы с разметкой диска.

1. Очистка флешки с помощью wipefs

Данные методы в комментариях предложил пользователь redking.

Эти методы, с одной стороны, самые быстрые и простые, но, с другой стороны, должны использоваться очень осознанно чтобы не очистить данные с неверного носителя.

Программа wipefs очищает сигнатуры файловой системы, массива или таблицы разделов с указанного устройства в результате чего они становятся невидимыми для libblkid. wipefs не удаляет саму файловую систему или какие-либо данные с устройства. Коротко говоря, wipefs удалит все разделы и для возвращения флешки к нормальной работе достаточно будет её отформатировать в нужную вам файловую систему.

Нам нужно начать с того, чтобы определить, какое название имеет флешка среди дисковых устройств. Чуть ниже показан ещё один способ определения имени. Как альтернативный вариант, вы можете отключить/подключить флешку и посмотреть, какое устройство удалилось/добавилось.

Следующая команда показывает список устройств и мониторит появление новых:

watch -t lsblk -d

Как только к компьютеру была подключена флешка, мы можем увидеть, что добилось устройство sdb, следовательно, это и есть искомое имя устройства.

Размонтируем все разделы, которые могли бы быть смонтированы:

sudo umount -A /dev/sdb*

Удаляем все разделы и файловые системы с указанного устройства:

sudo wipefs --all /dev/sdb

Поиск имени устройства и очистку можно автоматизировать с помощью следующего небольшого скрипта — вы можете скопировать/вставить в консоль весь фрагмент кода за один раз. Для работы скрипта у вас должен быть установлен пакет fzf.

disk=`lsblk -dpo "NAME,PTTYPE,TRAN,SIZE,VENDOR,MODEL" | fzf --bind 'ctrl-r:reload(lsblk -dpo "NAME,PTTYPE,TRAN,SIZE,VENDOR,MODEL")' --header $'Ctrl+c - выйти\nCtrl+r - обновить\nEnter - стереть\n\n' --header-lines=1 --layout=reverse | awk '{print $1}'`
echo -n "Будет очищен диск $disk. Если всё верно, то введите yes заглавными буквами > "
read
if [ "$REPLY" == "YES" ]; then
	echo 'Вы согласились на очистку ' $disk
	sudo umount -qA ${disk}*; 
	sudo wipefs --all $disk
fi

На скриншоте ниже вы можете увидеть два диска:

Подключаем флешку и нажимаем Ctrl+r.

Можно увидеть, что добавлена флешка. Выбираем её и нажимаем ENTER.

Если всё верно, введите YES и нажмите ENTER ещё раз. В результате выбранный диск будет очищен.

2. Поиск имени диска и размонтирование разделов

Рассмотрим ещё один метод поиска имени флешки среди дисковых устройств.

Независимо от того, какую программу вы выберите, вам нужно быть твёрдо уверенным в имени флешки, которую вы будете очищать и восстанавливать, и не в коем случае не перепутать её с другим постоянным хранилищем (твёрдым диском или SSD).

Вывести список дисков вы можете командой:

sudo fdisk -l

На скриншоте ниже представлено два диска (1), чтобы сориентироваться, смотрите на размер диска (2), модель диска (3), перечень разделов (4).

Предположим, я хочу восстановить диск с именем /dev/sdb имеющий следующую разметку:

Устр-во    Загрузочный  начало     Конец   Секторы Размер Идентификатор Тип
/dev/sdb1  *                64   7866239   7866176   3,8G            17 Скрытый HPFS/NTFS
/dev/sdb2              7866240   7867711      1472   736K             1 FAT12
/dev/sdb3              7867712 195312500 187444789  89,4G            83 Linux

Рекомендуется размонтировать его разделы, которые могли быть смонтированы автоматически. Для поиска смонтированных разделов:

mount | grep sdb

Пример вывода:

/dev/sdb1 on /run/media/mial/Kali Live type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=1000,gid=985,dmode=500,fmode=400,iocharset=utf8,uhelper=udisks2)
/dev/sdb2 on /run/media/mial/6170-006B type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=985,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

То есть смонтированы разделы /dev/sdb1 и /dev/sdb2. Для их размонтирования выполним следующие команды:

sudo umount /dev/sdb1
sudo umount /dev/sdb2

На самом деле, некоторые программы (например, GParted) автоматически размонтируют разделы флешки. Некоторые программы очищают диск независимо от того, смонтированы его разделы или нет. Но для того, чтобы не понадобилось отключать и подключать флешку (или перезагружать компьютер, если вы очищаете диск), рекомендуется предварительно отмонтировать разделы.

3. Восстановление флешки в графическом интерфейсе с помощью GParted

Программа GParted предназначена для управления разметкой диска, она позволяет создавать, удалять, изменять и форматировать разделы дисков.

Если в вашей системе отсутствует GParted, то установите пакет gparted.

Запустить программу вы можете через меню или в командной строке:

sudo gparted

Работа с программой достаточно интуитивно понятная. Начните с того, что в выпадающем меню, расположенном в верхнем правом углу, выберите флешку, которую вы хотите очистить или восстановить. Затем кликните правой кнопкой мыши по диску и выберите желаемые операции, например, форматировать в exFAT.

Вы можете выбрать несколько действий, например, создать или удалить разделы, выбрать файловую систему для форматирования — на этом этапе фактически ещё не выполняются никакие действия. Чтобы применить выбранные изменения, нажмите на кнопку с зелёной галочкой.

4. Очистка флешки в Disks

Disks (Диски) — это утилита управления дисками. Она позволяет монтировать, отмонтировать разделы, создавать, удалять, изменять и форматировать разделы дисков.

Для получения Disks установите пакет gnome-disk-utility.

Запустить программу вы можете через меню или в командной строке:

sudo gnome-disks

У программы много разных кнопок и меню, позволяющих делать все необходимые действия, но интерфейс программы интуитивно понятен.

В отличии от предыдущей программы, Disks правильно показывает структуру разделов флешки: 3 раздела с разными функциями и разными файловыми системами и свободная область.

5. Уничтожения любой таблицы разделов с помощью dd

Далее будет показано ещё два способа восстановления и полной очистки диска от разделов. Эти способы не являются тождественными: первый является более универсальным и работает во всех случаях.

С помощью dd удалите таблицу разделов:

sudo dd if=/dev/zero of=/dev/sdX bs=1M count=1

Замените sdX на действительное имя диска, например:

sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1

Чтобы форматировать USB флешку в файловую систему FAT32 используйте команду (замените имя диска или раздела на нужное):

sudo mkfs.vfat /dev/sdb

Чтобы форматировать USB флешку в файловую систему NTFS используйте команду (замените имя диска или раздела на нужное):

sudo mkfs.ntfs /dev/sdb

Чтобы форматировать USB флешку в файловую систему exFAT используйте команду (замените имя диска или раздела на нужное):

sudo mkfs.exfat /dev/sdb

6. Уничтожение таблиц разделов GPT и MBR с помощью gdisk

Этот способ хорошо справляется с удалением таблиц разделов GPT и MBR, но бесполезен «против» Live систем записанных в виде ISO образов на флешку, поскольку программа gdisk не предназначена работать с данной файловой системой.

Откройте флешку для очистки программой gdisk:

sudo gdisk /dev/sdb

Для перехода в экспертный режим введите

x

Затем для удаления GPT введите

z

Дважды согласитесь, чтобы полностью очистить диск.

Для выхода из программы нажмите Ctrl+c или Ctrl+d.

Можно ещё раз проверить разметку флешки, чтобы убедиться, что изменения сохранены:

sudo fdisk -l

Рекомендуемые статьи:

4 Комментарии

  1. redking

    думаю всё можно немного упростить

    Мониторим что подключаем методом всунь/высунь:

    watch -t lsblk -d

    запоминаем имя диска которое присвоила система, пусть будет sda

    Размонтируем на диске всё что движется:

    sudo umount -A /dev/sda*

    Производим надругательство:

    sudo wipefs --all /dev/sda
    
    1. Alexey (Автор записи)

      Ваши комментарии становятся самой полезной частью моих статей 😂

      Спасибо за полезные дополнения — чуть позже допишу в статье.

      1. redking

        ради интереса написал немного "толстый" однострочник, который позволяет интерактивно выбрать нужный диск для удаления

        lsblk -dpo "NAME,PTTYPE,TRAN,SIZE,VENDOR,MODEL" |fzf --bind 'ctrl-r:reload(lsblk -dpo "NAME,PTTYPE,TRAN,SIZE,VENDOR,MODEL")' --header $'Ctrl+c - выйти\nCtrl+r - обновить\nEnter - стереть\n\n' --header-lines=1 --layout=reverse |awk '{print $1}' |while read disk; do sudo umount -qA ${disk}*; sudo wipefs --all $disk;done

        для работы нужен предустановленный fzf

        1. Alexey (Автор записи)

          Снимаю шляпу — это круто! Добавил всё в статью, разве что перед стиранием вставил проверку, чтобы было не так страшно пользоваться скриптом )))

          P.S. Анекдот, как-то сам собой всплыл в голове ))))

          Интревью с Ф. Бондарчуком:

          - Скажите, Федор, как Вам фильм "Пираты карибского моря 4"?

          - О, это замечательный фильм! Отличная режиссерская работа! Я снимаю шляпу!

          - Федор, мы знаем, что Вы снимаете! Расскажите, как Вам фильм?

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *