Перейти к содержимому

Как восстановить флешку после загрузочной флешки linux

  • автор:

Как восстановить работоспособность 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

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

  • В чем разница между FAT32, exFAT и NTFS?
  • Что такое файловая система и почему их так много?
  • Почему съёмные диски по-прежнему используют FAT32 вместо NTFS?
  • Как отформатировать USB-накопители более 32 ГБ в FAT32 в Windows
  • В чем разница между быстрым и полным форматированием?
  • Какую файловую систему использовать для USB-накопителя?

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

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 ''` echo -n "Будет очищен диск $disk. Если всё верно, то введите yes заглавными буквами > " read if [ "$REPLY" == "YES" ]; then echo 'Вы согласились на очистку ' $disk sudo umount -qA $*; sudo wipefs --all $disk fi

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

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

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

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

Если вы столкнулись с ошибкой

wipefs: error: /dev/sdb: probing initialization failed: Device or resource busy
wipefs: ошибка: /dev/sdb: ошибка инициализации зондирования: устройство или ресурс занят

То для её исправление размонтируйте все разделы данного диска и закройте все программы, которые используют этот диск или файлы на нём.

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

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

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

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

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

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

Данным — жить! Восстанавливаем в Linux информацию с «убитой» флешки

Восстановление данных с неработающих флешек — частая просьба, с которой обращаются к «тыжпрограммисту». Давай посмотрим, что можно сделать с «убитой» флешкой, применяя такие утилиты, как TestDisk и PhotoRec, а потом и без них — используя Hex-редактор и голову на плечах.

Предыстория

Недавно ко мне пришел товарищ с фразой: «У меня флешка сломалась, можешь посмотреть? В принципе, если не получится, то и ладно, но там есть несколько файлов, копий которых нет».

Я, конечно, флешку взял и обещал посмотреть, что можно сделать. Грех не помочь другу! Входные данные были такие: «винда перестала видеть флешку». Других внятных объяснений произошедшего я не добился.

И вот, когда выдалось немного свободного времени, настала пора попробовать восстановить какие-то данные с флешки.

INFO

В этой статье рассматривается восстановление флешек в среде Linux. В Windows тоже можно восстанавливать данные: есть разные утилиты и проприетарные продукты (например, R-Studio), но это тема для отдельных статей.

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

Второе, что я сделал, — снял образ.

Техника безопасности: снимаем образ

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

$ dd if=/dev/sdc of=flash.img bs=512 

Как вариант, можно использовать команду ddrescue:

$ ddrescue /dev/sdc flash.img /tmp/flash.log 

Лично я предпочитаю второй способ, поскольку ddrescue пытается считать данные в несколько проходов, а также (если ты дал команду писать лог) прервать чтение и продолжить с места остановки. Плюс к этому утилита дает красивый отчет о том, сколько данных считалось, а сколько нет, и оценку времени до конца съема образа.

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

$ ddrescue flash.img backup_part.img bs=10M count=1 $ ddrescue backup_part.img flash.img conv=notrunc 

Параметр notrunc нужен для того, чтобы dd не обрезала файл-назначение, когда закончатся данные в файле-источнике.

Сняв образ флешки, я взглянул на содержимое. Увиденное несколько меня удивило.

$ hexdump -C flash.img|less

00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |. | * 00400000 01 76 0a 00 02 76 0a 00 03 76 0a 00 04 76 0a 00 |.v. v. v. v..| 00400010 05 76 0a 00 06 76 0a 00 07 76 0a 00 08 76 0a 00 |.v. v. v. v..| 00400020 09 76 0a 00 0a 76 0a 00 0b 76 0a 00 0c 76 0a 00 |.v. v. v. v..| 00400030 0d 76 0a 00 0e 76 0a 00 0f 76 0a 00 10 76 0a 00 |.v. v. v. v..| 00400040 11 76 0a 00 12 76 0a 00 13 76 0a 00 14 76 0a 00 |.v. v. v. v..| .

В образе первые 4 Мбайт данных были забиты 0xFF. Поврежден блок флеш-памяти? Чья-то попытка стереть данные? Сбой какого-то приложения? Почему затерта область — неважно. Главное, что у нас нет ни таблицы разделов, ни структуры файловой системы. Хотя если приглядеться, то видна закономерность. Перед нами последовательность увеличивающихся на единицу 32-битных чисел (в формате LittleEndian): 0x000a7601, 0x000a7602, 0x000a7603. Следовательно, у нас на флешке, скорее всего, была файловая система FAT32.

Что ж, попробуем восстановить данные. Для начала возьмем утилиту TestDisk.

TestDisk

TestDisk — не просто утилита, а мощный комбайн по восстановлению данных.

О TestDisk

TestDisk разработан Кристофом Гренье и распространяется по лицензии GPL v2. Эта утилита предназначена в первую очередь для восстановления потерянных разделов на носителях информации, а также для восстановления загрузочного сектора.

  • исправлять таблицу разделов, восстанавливать удаленные разделы;
  • восстанавливать загрузочный сектор FAT32 из резервной копии;
  • перестраивать (реконструировать) загрузочный сектор FAT12/FAT16/FAT32;
  • исправлять таблицу FAT;
  • перестраивать (реконструировать) загрузочный сектор NTFS;
  • восстанавливать загрузочный сектор NTFS из резервной копии;
  • восстанавливать MFT;
  • определять резервный SuperBlock ext2/ext3/ext4;
  • восстанавливать удаленные файлы на файловых системах FAT, NTFS и ext2;
  • копировать файлы с удаленных разделов FAT, NTFS и ext2/ext3/ext4.

Запускаем TestDisk такой командой:

$ testdisk flash.img 

Стартовый экран TestDisk

Выбираем пункты меню Procced → Intel → Analyse и получим следующее.

Выбор типа разметки Выбор опций Таблица разделов Еще одна таблица разделов

Видим, что TestDisk не нашел таблицы разделов. Ожидаемо, ведь она затерта. Попробуем ее восстановить с использованием «быстрого поиска» разделов на диске. Выбираем пункт Quick Search.

Все еще без таблицы разделов

TestDisk ничего не нашел, но и это ожидаемо, ведь раздел FAT32 тоже поврежден. TestDisk теперь предлагает нам прописать разделы вручную, но мы не знаем, что где лежало. Поэтому пока отложим эту утилиту в сторону. Для выхода достаточно несколько раз нажать кнопку q.

Что ж, возьмем тогда на вооружение другое изобретение того же автора — PhotoRec.

PhotoRec

PhotoRec — это программа для восстановления утерянных (удаленных) файлов. Изначально она разрабатывалась для восстановления изображений из памяти цифровых камер, отсюда и название — PHOTO RECovery. Со временем она обросла функциями восстановления и других типов данных, но название осталось.

О PhotoRec

PhotoRec ищет известные заголовки файлов. Если нет фрагментации, которая часто бывает, он может восстановить весь файл. PhotoRec распознает многочисленные форматы файлов, включая ZIP, Office, PDF, HTML, JPEG и другие форматы графических файлов. Полный список форматов, поддерживаемых PhotoRec содержит более 390 расширений (около 225 семейств форматов).

Если данные не фрагментированы, восстановленный файл должен быть идентичного размера или больше, чем исходный файл. В некоторых случаях PhotoRec может узнать оригинальный размер файла из заголовка, так что восстановленный файл усекается до необходимого размера. Однако, если восстановленный файл заканчивается раньше, чем указывает его заголовок, он отбрасывается. Некоторые файлы, такие как MP3, представляют собой поток данных. В этом случае PhotoRec анализирует полученные данные, а затем останавливает восстановление, когда поток завершается.

Натравим эту утилитку на наш образ флешки и посмотрим, что получится.

$ photorec flash.img 

Стартовый экран PhotoRec

Видим уже знакомый интерфейс, выбираем Proceed → Search → Other, указываем папку, куда сохранять (лучше ее создать заранее), жмем кнопку c. И ждем.

Выбор раздела Выбор типа файловой структуры Выбор папки назначения Процесс восстановления

В итоге получаем несколько папок с тысячами файлов в них.

Куча сохраненных файлов

Беглый осмотр показал, что какие-то файлы восстановились: и документы, и картинки, и исходники. Но нет ни имен файлов, ни даты их создания, ни структуры папок. Кроме того, как оказалось, на флешке была какая-то документация в виде страничек HTML с кучей мелких картинок. В связи с чем поиск ценных файлов занял бы не один час.

Да и, как указано на врезке, фрагментированные файлы или не восстановились, или повреждены (обрезаны).

Видимо, придется напрячь все свои силы и руками восстановить структуру FAT32.

Чиним FAT32

Для восстановления структуры FAT32 надо внимательно почитать документацию, вычислить значения ключевых параметров, а затем внести их в загрузочную запись FAT32. Кратко суть структуры FAT32 изображена на рисунке.

Сюда входит загрузочный сектор, структура FSInfo, две копии таблиц FAT и область данных. Загрузочный сектор (он же BPB — Boot Parameter Block) содержит основные данные, которые описывают характеристики раздела, и код загрузчика.

В таблице FAT хранятся записи номеров следующих кластеров цепочки файла/директории, признак последнего кластера в цепочке (значение 0xFFFFFFFF) или признак свободного кластера (значение 0). Область данных начинается с корневой директории, содержимое дальнейшей области зависит от данных в записях корневой директории и соответствующих цепочках таблицы FAT. Более подробное описание файловой системы смотри по ссылкам, приведенным во врезке.

WWW

  • Официальная спецификация FAT (Microsoft, DOC)
  • Understanding FAT32 Filesystems (GitHub, PDF)
  • Design of the FAT file system (GitHub, PDF)
  • Загрузочный сектор, FSINFO, таблица FAT и записи каталогов FAT (Hetman Data Recovery)
  • Системные структуры данных FAT32 («Инфопедия»)

Для удобной работы с образом нам потребуется Hex-редактор. Лично мне очень нравится редактор 010 Editor. Он позволяет задавать шаблоны структуры на C-подобном языке и подсвечивать поля структуры в редакторе.

Откроем в нем наш образ флешки.

Ищем смещения

Начнем с того, что нам надо вычислить адреса, с которых начинаются раздел FAT32 и первая копия таблицы FAT.

Сначала поймем, повреждена у нас первая копия FAT или обе. Из документации мы знаем, что таблица FAT начинается с последовательности F8 FF FF FF (число 0xFFFFFFF8 в Little Endian). Поищем ее.

Поиск сигнатуры

Нам повезло — такая сигнатура нашлась. Значит, повреждена только первая копия таблицы FAT и мы можем скопировать данные второй таблицы в первую. Конечно, стоит помнить, что если флешка была отключена внезапно, то вторая копия может не полностью совпадать с первой (в нее просто не успели сохраниться изменения). Но все же мы сможем восстановить больше данных, чем при помощи только PhotoRec. Как минимум получим дополнительно имена файлов, даты их создания, корректные цепочки для фрагментированных файлов и даже структуру директорий.

Смотрим адрес — 0x8AE400. Это адрес начала второй копии таблицы. Теперь надо вычислить длину самой таблицы. Можно, конечно, руками полистать дамп, пока не заметим данные корневой директории. Но есть вариант попроще. Поскольку это две копии, то и запись, с которой начинается кусок первой копии таблицы, должна быть и во второй копии. А разница между ними и будет размером!

Поищем последовательность 01 76 0A 00, которую мы видели вначале, когда воспользовались hexdump. Быстро начинают находиться варианты. Остановим поиск нажатием ESC — нас интересуют первые два вхождения.

Первое вхождение последовательности

Первое вхождение (адрес 0x400000) — первая уцелевшая запись в первой копии FAT. Перед ней затертое пространство.

Второе вхождение последовательности

Второе вхождение (по адресу 0xB4BC00) — эта же запись во второй копии FAT. Перед ней мы видим сохранившиеся данные цепочек.

Вычислим размер таблицы FAT: 0xB4BC00 – 0x400000 = 0x74BC00 байт. Следовательно, если вычтем этот размер из адреса начала второй копии таблицы, то получим адрес начала первой копии: 0x8AE400 – 0x74BC00 = 0x162800.

Итак, у нас есть смещение начала таблиц FAT. Теперь надо найти адрес начала раздела. Согласно данным в спецификациях и статьях, приведенных во врезке, обычно первая копия таблицы начинается с 32-го сектора. Сектора, напомню, по 512 байт, значит, начало раздела должно находиться по адресу 0x162800 – 32×512 = 0x15E800.

Кстати, зная размеры таблиц и смещения их начала, можем найти адрес начала корневой директории.

Смещение корневой директории равно 0x15E800 + 32×512 + 2×0x74BC00 = 0xFFA000. И начинается она записью Transcend, что, очевидно, является меткой раздела.

Отлично. Смещения таблиц, корневой директории и адрес начала раздела знаем, осталось придумать, что записать в загрузочную запись. Можно сидеть и читать спецификации, высчитывая каждое значение. А я предлагаю сделать ход конем! Создаем пустой файл размером с раздел. Далее мы его форматируем в FAT32. Затем копируем первые 32 сектора в наш образ — и готово! ��

Попробуем воплотить этот план в жизнь.

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Программный ремонт USB flash в Linux

Сегодня речь пойдет о так называемом «программном ремонте» USB flash накопителей. Вопросы аппаратного ремонта рассматриваться не будут по причине копеечной стоимости новых абсолютно исправных устройств; вопрос же снятия данных с неисправных флешей не рассматривается из-за отсутствия у автора желания публично его рассматривать 🙂 .

Поводом для написания статьи послужило обилие на различных форумах советов по устранению программных глюков флешек с помощью различных утилит «низкоуровневого форматирования» и пр. Не отрицая существования утилит «от производителя», хочу заметить, что существует весьма простой и вполне надежный метод удаления софт-бэдов на флешках, устранения проблем с файловой системой, бутсектором и MBR, возникающих, как правило, при небезопасном извлечении этих устройств из компьютера, либо же из-за иных программных или аппаратных сбоев компьютера (одни только глючные южные мосты ICH5 от Intel чего стоят).

Существующие методы «излечения» этих болезней под ОС Microsoft Windows имеют ряд существенных недостатков, причиной которых является отсутствие в Windows достаточно функциональных средств дискменеджмента даже от сторонних производителей. Простой пример: после «заливки» флешки нулями, Windows форматирует её как super-floppy, т. е. без организации MBR, что для корректной работы флешки под разными ОС недопустимо. Сторонние дискменеджеры либо не умеют работать с USB-устройствами (Norton Partition Magic), либо работают некорректно (Paragon Partition Manager). Работа же с флешкой под различными ОС ведется именно как с жестким диском, поэтому и предъявляемые требования к организации логической структуры аналогичны винчестеру, а не дискете. Для этих целей воспользуемся правильной ОС и правильным софтом, который, как оказалось, к тому же абсолютно бесплатен, в отличие от недофункциональных платных поделок.

Итак. Имеет место флешка, которая либо виснет в Windows, либо просится быть отформатированной, но не форматируется («Виндовз не может завершить форматирование», о, ужас!), либо сыплет бэдами при сканировании тем же HDDScan’ом.

Если с Линуксом вы незнакомы, то я предложу для начала выкачать один из LiveCD-дистрибутивов и, предварительно записав образ на CD, загрузиться с него. Я, как Слаковод, естественно, предложу Slax — он невелик по размерам, несложен (впрочем, как и всякий LiveCD общего назначения) , быстро грузится и в нем есть всё необходимое для «ремонта». Если же какой-либо из Линуксов у вас уже стоит на HDD и вы с ним дружите, то буду рад добавить в вашу копилку знаний еще несколько советов.

Лично мной работа велась под локализованным неофициальным портом Slackware для 64-битных процессоров BlueWhite64

Немного о форматировании: сейчас пойдут большие куски кода. Обычным моноширинным шрифтом мы будем показывать вывод консоли, жирным — наш ввод. Сразу за решеткой красным — #мои комментарии .

Итак, загрузились. Если вы не root, то станьте им , выполнив команду su и введя пароль , ибо борьба с ополоумевшим железом по праву только суперпользователю 🙂 .

Подключаем флешку, смотрим список USB-устройств. Вводим lsusb, нажимаем Enter, смотрим вывод:

root@H84_103:~# lsusb
#Наблюдаем вывод: вот она, родимая, даже, вроде «аппаратно» живая.
Bus 005 Device 003: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash 2.0 / Astone USB Drive
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
#Это сканер, он нам не мешает.
Bus 001 Device 003: ID 04a5:20fc Acer Peripherals Inc. (now BenQ Corp.) Benq 5000
Bus 001 Device 001: ID 0000:0000

Флеш-накопители распознаются как SCSI-диски, т.е., устройства /dev/sdX, но работает с ними почему-то типично IDE-дисковая утилита hdparm 🙂 . Внимание. SATA-винчестеры у нас тоже обозначаются как /dev/sdX! У меня SATA-винчестер, потому ему по праву принадлежит /dev/sda, а флешке — следующая буква b, т. е. /dev/sdb. Попытаемся познакомиться с ней поближе:

root@H84_103:~# hdparm /dev/sdb

/dev/sdb:
#Защита от записи выключена
readonly = 0 (off)
readahead = 256 (on)
#Транслируемая геометрия соответсвует реальной: 1017856 секторов это ~512 МБ
geometry = 1014/17/59, sectors = 1017856, start = 0

Теперь сделаем ей «низкоуровневое форматирование», т. е. забъем всё пространства накопителями нулевыми байтами. Таким образом мы удалим софт-бэды, сотрем ошибочные таблицы FAT, загрузочный сектор, MBR. Внимание! Все оставшиеся данные на флешке будут безвозвратно утеряны!

root@H84_103:~# dd if=/dev/zero of=/dev/sdb
#dd вводили без параметров, теперь он ругается на нехватку места на флешке. И правильно, генератор нулей то у нас безразмерный 🙂
dd: запись в `/dev/sdb’: No space left on device
1017857+0 записей считано
1017856+0 записей написано
скопировано 521142272 байта (521 MB), 144,185 секунд, 3,6 MB/s

Флешка USB 2.0 на 512 МБ стиралась 2,5 минуты
Теперь «по-фирменному» создаём раздел.

root@H84_103:~# fdisk /dev/sdb
#fdisk ругается, что не нашел ни DOS-овской таблицы разделов, ни метки диска в стиле BSD. Оно и понятно — вся флеш забита нулями.
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

#Умный fdisk сразу предлагает помощь. Давим m
Command (m for help): m
#Вывод списка команд:
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

#Нам нужна новый раздел. Жмем n, как написано:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
#Естественно, первичный раздел. Жмем p
p
#И первый, естественно. Жмем 1
Partition number (1-4): 1
#Здесь соглашаемся со всем, что предлагает fdisk. Он умный, сам разберется 🙂
First cylinder (1-1014, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1014, default 1014):
Using default value 1014

#Смотрим, чего мы наваяли 🙂 . Жмем p
Command (m for help): p

Disk /dev/sdb: 521 MB, 521142272 bytes
17 heads, 59 sectors/track, 1014 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 1014 508491+ 83 Linux

#По умолчанию фдиск создал, естественно, линуксовый раздел (ну не виндовый же ему создавать). Надо поменять ID раздела. Жмем t.
Command (m for help): t
#Выбираем первый раздел для изменения ID
Selected partition 1
#предусмотрительный fdisk предлагает посмотреть, на что мы можем поменять тип раздела
Hex code (type L to list codes): l

0 Empty 1e Hidden W95 FAT1 80 Old Minix be Solaris boot
1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris
2 XENIX root 39 Plan 9 82 Linux swap c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 5 Extended 41 PPC PReP Boot 85 Linux extended c7 Syrinx
6 FAT16 42 SFS 86 NTFS volume set da Non-FS data
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 Hidden FAT16 16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Hidden W95 FAT3 75 PC/IX

#Елки-палки, а мы думали, что кроме Винды и ФАТ32 на свете ничего и нет 🙂 . Меняем ID партишна на ФАТ16 — топчем 6
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

#Еще раз посмотрим на дело рук своих
Command (m for help): p

Disk /dev/sdb: 521 MB, 521142272 bytes
17 heads, 59 sectors/track, 1014 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 1014 508491+ 6 FAT16

#Всё ОК. Пишем изменения и выходим
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

И всё!? Ан нет. Это создан раздел для FAT16. А его надо отформатировать, а по науке говоря, создать на нем чистую файловую систему. В Линуксе есть простая и прямая как рельс утилитка для этого — mkdosfs. Просто пишем, на каком разделе мы хотим создать чистую FAT16

root@H84_103:~# mkdosfs /dev/sdb1
mkdosfs 2.11 (12 Mar 2005)

Линкусоиды могут тут же примонтировать новообретенный девайс и что-нибудь записать на него. Пользователи дружественной и удовлетворяющей все запросы пользователей ОС грузятся в Windows и радуются, что стали «настоящими» линуксоидами 🙂 .

Автор не несет никакой ответственности за то, что счастливые обладатели SATA-дисков попутали буквы и постирали информацию со своих винчестеров (а такие будут, это я гарантирую 🙂 ) . Если вы из статьи ничего не поняли, и проблеск мысли в мозгу не воссиял 🙂 , то лучше статью сразу забыть, флешку выкинуть и идти в магазин за новой. Данная технология справедлива для флешек до 2 ГБ включительно.
Автор искренне благодарит Алексея Хована за помощь в написании статьи и дополнительную проверку работоспособности метода.

Виталий Розизнаный, специально для rlab.ru.

Перепечатка или цитирование разрешены при условии сохранения ссылки вида R.LAВ восстановление данных на первоисточник.

Как сделать флешку обычной из загрузочной

Как сделать флешку обычной из загрузочной

В последнее время в комментариях часто получаю вопрос: как сделать обычную флешку из загрузочной, например, после того как была создана загрузочная USB флешка Windows 10. И если раньше был простой ответ: отформатировать её средствами системы, сегодня это не всегда правильно.

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

  • Когда можно использовать простое форматирование
  • Как сделать обычную флешку из загрузочной путем удаления разделов

Форматирование для возврата USB накопителя к исходному состоянию

Во многих случаях, когда речь идет о загрузочной флешке сравнительно небольшого объема со стандартными дистрибутивами Windows 10, 8.1 или Windows 7, для возврата её в обычное состояние достаточно выполнить простое форматирование. Но не всегда (о чем в следующей части инструкции), а потому, прежде чем использовать этот метод, рекомендую выполнить следующие шаги:

Один или несколько разделов на флешке

  1. Нажмите клавиши Win+R на клавиатуре, введите diskmgmt.msc в окно «Выполнить» и нажмите Enter (Win — клавиша с эмблемой Windows).
  2. В нижней части окна управления дисками найдите вашу флешку и посмотрите: содержит ли она один единственный раздел и никаких дополнительных разделов или незанятого пространства (скриншот слева) или более одного раздела, а также раздел и незанятое пространство (скриншот справа).

Если на флешке всего один раздел, можно смело её форматировать в нужную вам файловую систему в проводнике (правый клик по накопителю — форматировать) или прямо в «Управлении дисками», нажав правой кнопкой по разделу и выбрав пункт «Форматировать».

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

Как сделать обычную флешку из загрузочной с удалением разделов

Вопрос о превращении USB накопителя в простой из загрузочного чаще всего задается по той причине, что при создании загрузочной (установочной) флешки из накопителя большого объема или с некоторыми необычными дистрибутивами, она «уменьшается» в объеме (например, до 32 Гб при использовании Windows Installation Media Creation Tool), либо начинает отображаться в системе как два отдельных съемных накопителя. И простое форматирование этого не решает.

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

  1. Запустите командную строку от имени администратора ( способы запуска командной строки от Администратора), после чего по порядку используйте следующие команды.
  2. diskpart
  3. list disk (в результате выполнения этой команды отобразится список дисков, вам понадобится номер диска, соответствующий вашей флешке, в моем случае — номер 3, ВАЖНО: в вашем случае используйте свой номер в следующей команде, если укажите не тот диск, данные с него исчезнут.
  4. select disk 3 Выбор загрузочной флешки в Diskpart
  5. clean (после этой команды вам могут сообщить: вставьте диск в устройство, не обращайте внимания)
  6. create partition primary
  7. format fs=ntfs quick или format fs=fat32 quick (в зависимости от того, какую файловую систему нужно выбрать для флешки). Удаление разделов с загрузочной флешки
  8. exit

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

Надеюсь, статья оказалась полезной. Если же что-то осталось не ясным или сработало не так, как ожидалось, сообщите детали в комментарии, я постараюсь подсказать решение.

А вдруг и это будет интересно:

  • Лучшие бесплатные программы для Windows
  • PhoneExperienceHost.exe — что это и как отключить?
  • Как убрать страницу «Главная» в Параметрах Windows 11
  • Как сделать, чтобы ноутбук не выключался при закрытии крышки в Windows 11
  • HxTsr.exe — что это за процесс?
  • Пропали значки на панели задач Windows 11 — как исправить?
  • Windows 11
  • Windows 10
  • Android
  • Загрузочная флешка
  • Лечение вирусов
  • Восстановление данных
  • Установка с флешки
  • Настройка роутера
  • Всё про Windows
  • В контакте
  • Одноклассники

    Peveksky 31.12.2019 в 10:43

Добавить комментарий

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