Уничтожения любой таблицы разделов с помощью 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
Уничтожение таблиц разделов GPT и MBR с помощью gdisk
Этот способ хорошо справляется с удалением таблиц разделов GPT и MBR, но бесполезен «против» Live систем записанных в виде ISO образов на флешку, поскольку программа gdisk не предназначена работать с данной файловой системой.
Откройте флешку для очистки программой gdisk:
sudo gdisk /dev/sdb
Для перехода в экспертный режим введите
x
Затем для удаления GPT введите
z
Дважды согласитесь, чтобы полностью очистить диск.
Для выхода из программы нажмите Ctrl c или Ctrl d.
Можно ещё раз проверить разметку флешки, чтобы убедиться, что изменения сохранены:
sudo fdisk -l
Связанные статьи:
Очистка флешки с помощью wipefs
Данные методы в комментариях предложил пользователь redking.
Эти методы, с одной стороны, самые быстрые и простые, но, с другой стороны, должны использоваться очень осознанно чтобы не очистить данные с неверного носителя.
Программа wipefs очищает сигнатуры файловой системы, массива или таблицы разделов с указанного устройства в результате чего они становятся невидимыми для libblkid. wipefs не удаляет саму файловую систему или какие-либо данные с устройства.
Нам нужно начать с того, чтобы определить, какое название имеет флешка среди дисковых устройств. Чуть ниже показан ещё один способ определения имени. Как альтернативный вариант, вы можете отключить/подключить флешку и посмотреть, какое устройство удалилось/добавилось.
Следующая команда показывает список устройств и мониторит появление новых:
watch -t lsblk -d
Как только к компьютеру была подключена флешка, мы можем увидеть, что добавилось устройство sdb, следовательно, это и есть искомое имя устройства.
Размонтируем все разделы, которые могли бы быть смонтированы:
sudo umount -A /dev/sdb*
Удаляем все разделы и файловые системы с указанного устройства:
sudo wipefs --all /dev/sdb
Поиск имени устройства и очистку можно автоматизировать с помощью следующего небольшого скрипта — вы можете скопировать/вставить в консоль весь фрагмент кода за один раз. Для работы скрипта у вас должен быть установлен пакет fzf.
Поиск имени диска и размонтирование разделов
Рассмотрим ещё один метод поиска имени флешки среди дисковых устройств.
Независимо от того, какую программу вы выберите, вам нужно быть твёрдо уверенным в имени флешки, которую вы будете очищать и восстанавливать, и не в коем случае не перепутать её с другим постоянным хранилищем (твёрдым диском или 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
Пример вывода:
Восстановление флешки в графическом интерфейсе с помощью GParted
Программа GParted предназначена для управления разметкой диска, она позволяет создавать, удалять, изменять и форматировать разделы дисков.
Если в вашей системе отсутствует GParted, то установите пакет gparted.
Запустить программу вы можете через меню или в командной строке:
sudo gparted
Работа с программой достаточно интуитивно понятная. Начните с того, что в выпадающем меню, расположенном в верхнем правом углу, выберите флешку, которую вы хотите очистить или восстановить. Затем кликните правой кнопкой мыши по диску и выберите желаемые операции, например, форматировать в exFAT.
Вы можете выбрать несколько действий, например, создать или удалить разделы, выбрать файловую систему для форматирования — на этом этапе фактически ещё не выполняются никакие действия. Чтобы применить выбранные изменения, нажмите на кнопку с зелёной галочкой.
Очистка флешки в Disks
Disks (Диски) — это утилита управления дисками. Она позволяет монтировать, отмонтировать разделы, создавать, удалять, изменять и форматировать разделы дисков.
Для получения Disks установите пакет gnome-disk-utility.
Запустить программу вы можете через меню или в командной строке:
sudo gnome-disks
У программы много разных кнопок и меню, позволяющих делать все необходимые действия, но интерфейс программы интуитивно понятен.
В отличии от предыдущей программы, Disks правильно показывает структуру разделов флешки: 3 раздела с разными функциями и разными файловыми системами и свободная область.
Photorec
PhotoRec — это программа для восстановления утерянных (удаленных) файлов. Изначально она разрабатывалась для восстановления изображений из памяти цифровых камер, отсюда и название — PHOTO RECovery. Со временем она обросла функциями восстановления и других типов данных, но название осталось.
О photorec
PhotoRec ищет известные заголовки файлов. Если нет фрагментации, которая часто бывает, он может восстановить весь файл. PhotoRec распознает многочисленные форматы файлов, включая ZIP, Office, PDF, HTML, JPEG и другие форматы графических файлов. Полный список форматов, поддерживаемых PhotoRec содержит более 390 расширений (около 225 семейств форматов).
Если данные не фрагментированы, восстановленный файл должен быть идентичного размера или больше, чем исходный файл. В некоторых случаях PhotoRec может узнать оригинальный размер файла из заголовка, так что восстановленный файл усекается до необходимого размера. Однако, если восстановленный файл заканчивается раньше, чем указывает его заголовок, он отбрасывается. Некоторые файлы, такие как MP3, представляют собой поток данных. В этом случае PhotoRec анализирует полученные данные, а затем останавливает восстановление, когда поток завершается.
Натравим эту утилитку на наш образ флешки и посмотрим, что получится.
$ photorec flash.img

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

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

Беглый осмотр показал, что какие-то файлы восстановились: и документы, и картинки, и исходники. Но нет ни имен файлов, ни даты их создания, ни структуры папок. Кроме того, как оказалось, на флешке была какая-то документация в виде страничек HTML с кучей мелких картинок. В связи с чем поиск ценных файлов занял бы не один час…
Да и, как указано на врезке, фрагментированные файлы или не восстановились, или повреждены (обрезаны).
Видимо, придется напрячь все свои силы и руками восстановить структуру FAT32.
Testdisk
TestDisk — не просто утилита, а мощный комбайн по восстановлению данных.
Запускаем TestDisk такой командой:
$ testdisk flash.img
Видим меню.

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

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

TestDisk ничего не нашел, но и это ожидаемо, ведь раздел FAT32 тоже поврежден. TestDisk теперь предлагает нам прописать разделы вручную, но мы не знаем, что где лежало. Поэтому пока отложим эту утилиту в сторону. Для выхода достаточно несколько раз нажать кнопку q.
Что ж, возьмем тогда на вооружение другое изобретение того же автора — PhotoRec.
Восстанавливаем убитые жесткие диски, флешки и данные с них в linux
Предисловие:
Данная статья не является новой, цель ее – структурировать накопленные с форумов и собственного опыта знания для будущих похожих занятий.
За утраченную навсегда информацию ровно как и за окирпиченные винты и флешки никто кроме Вас никакой ответственности не несет.
В случае аппаратных неисправностей носителей нижеперечисленные методы восстановления бессильны.
Всем доброго вечера)
Сегодня пятница, 29 марта и сегодня мы будем восстанавливать убитые винты и флешки, а если быть точнее, то данные с них.
А поможет нам в этом незаменимый Linux Debian.
Приступая к работе:
Все устройства в линуксе определяется в каталоге /dev. Файловые обычно имеют вид типа /dev/sda, /dev/sdb и т.д. Внимательно узнайте какая из /dev/sdX ваш поциент, иначе есть вероятность ушатнуть корневую файловую систему.
Если не уверенеы : наберите команду df -h, она выведет подмонтирование в данный момент каталоги, которые вам не слудет трогать.
Итак, помолясь начнем.
1) Диагностируем, создаем таблицу разделов
В принципе дальнейшие действия аналогичны как для винтов так и для флешек
Чиним флешку. Обычная убитая флешка Инь Янь, не определяется в винде. Излазив сайты типа flashtools и отчаявшись починить ее в винде, втыкаем ее в Линукс.
# dmesg | tail
[10693.304167] usb-storage: device scan complete
[10693.304908] scsi 5:0:0:0: Direct-Access Qumo USB Flash Drive 1.00 PQ: 0 ANSI: 2
[10693.309293] sd 5:0:0:0: [sdc] 7819136 512-byte logical blocks: (4.00 GB/3.72 GiB)
[10693.310035] sd 5:0:0:0: [sdc] Write Protect is on
[10693.310045] sd 5:0:0:0: [sdc] Mode Sense: 23 00 80 00
[10693.310050] sd 5:0:0:0: [sdc] Assuming drive cache: write through
[10693.313037] sd 5:0:0:0: [sdc] Assuming drive cache: write through
[10693.313076] sdc: unknown partition table
[10693.322069] sd 5:0:0:0: [sdc] Assuming drive cache: write through
Отлично, флешка подала признаки жизни. Как мы видим, тут у нас Qumo USB Flash Drive на 4 гига.
Черт, write protect is on, вынимаем флешку и изменяем рычажок на ней разрешая запись. Перетыкаем. Ага, защита от записи снята.
# fdisk -l
Disk /dev/sdc: 4003 MB, 4003397632 bytes
124 heads, 62 sectors/track, 1017 cylinders
Units = cylinders of 7688 * 512 = 3936256 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Ага, вот оно че. На диске нет действительной таблицы разделов. Потому и не определяется.
Нажимаем NEW, создаем новый раздел. Выбираем Primary. Если уверены и все в порядке, нажимаем Write – таблица разделов успешно создастся.
Можно зайти в параметр Type и вручную задать тип файловой системы для задаваемой таблицы. Напечатав код взятый отсюда:
Я выбрал 83, так как для линукса это будет роднее. Итак, таблица разделов создалась, все дальше дело техники:
Монтируем флешку:
home# mkdir FLASH
home#chmod 777 /home/FLASH
home#mount /dev/sdc1 /home/FLASH
Все, флешкой можно пользоваться.
Если у вас по прежнему в fdisk -l устройство отображается как без таблицы разделов значит проблема кроется ещё где-то глубже. Печаль.
2) Форматируем в нужную вам файловую систему.
Теперь я вставил в док станцию SATA винт (тоже убитый и не определяющийся в винде и проделал для него все перечисленное в первом пункте. Винт успешно восстановился и после монтирования в midnight commander можно увидеть всю оставшуюся инфу с былых времен
Далее форматнем этот винт, или говоря по-научному, установим на него файловую систему:
Да, надо не забыть отмонтировать этот раздел
#umount /dev/sdc1 /home/SATA
#mkfs -t ext3 /dev/sdc1
Можете поставить другую ФС, например ReiserFS или Xfs. Почему нельзя поставить NTFS думаю догадаетесь.
на экране приветливо будет выведено следующее:
mke2fs 1.41.12 (17-May-2022)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4890624 inodes, 19537040 blocks
976852 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
597 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
Восстановление флешки в linux
В Linux кроме того, что диски и флешки с разделами восстанавливаются другими утилитами, нужно учитывать, что в большинстве современных дистрибутивов разделы носителей монтируются автоматически, а для успешного завершения операций по очистке и восстановлению, необходимо, чтобы флешка не использовалась никакой программой.
Кстати, автоматическое монтирование же может стать причиной некоторых проблем: например, если вы пытаетесь установить Linux на USB флешку и разметка диска заканчивается неудачей, то самая вероятная причина этого автоматическое монтирование разделов флешки. Очистка, показанная в данной инструкции, поможет избежать подобной проблемы с разметкой диска.
Восстановление флешки в windows
Для просмотра дисков выполните (нажмите Win r и введите, либо найдите в меню Пуск, либо запустите в командной строке):
diskmgmt.msc
На скриншоте показана флешка, на которую записан ISO образ с Live системой Linux. Как вы можете видеть, никакие действия для данного носителя недоступны.
Также невозможно удалить или отформатировать разделы.
Ищем смещения
Начнем с того, что нам надо вычислить адреса, с которых начинаются раздел FAT32 и первая копия таблицы FAT.
Сначала поймем, повреждена у нас первая копия FAT или обе. Из документации мы знаем, что таблица FAT начинается с последовательности F8 FF FF FF (число 0xFFFFFFF8 в Little Endian). Поищем ее.

Нам повезло — такая сигнатура нашлась. Значит, повреждена только первая копия таблицы FAT и мы можем скопировать данные второй таблицы в первую. Конечно, стоит помнить, что если флешка была отключена внезапно, то вторая копия может не полностью совпадать с первой (в нее просто не успели сохраниться изменения).
Смотрим адрес — 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 сектора в наш образ — и готово! 🙂
Попробуем воплотить этот план в жизнь.
О photorec
PhotoRec ищет известные заголовки файлов. Если нет фрагментации, которая часто бывает, он может восстановить весь файл. PhotoRec распознает многочисленные форматы файлов, включая ZIP, Office, PDF, HTML, JPEG и другие форматы графических файлов. Полный список форматов, поддерживаемых PhotoRec содержит более 390 расширений (около 225 семейств форматов).
Если данные не фрагментированы, восстановленный файл должен быть идентичного размера или больше, чем исходный файл. В некоторых случаях PhotoRec может узнать оригинальный размер файла из заголовка, так что восстановленный файл усекается до необходимого размера.
Однако, если восстановленный файл заканчивается раньше, чем указывает его заголовок, он отбрасывается. Некоторые файлы, такие как MP3, представляют собой поток данных. В этом случае PhotoRec анализирует полученные данные, а затем останавливает восстановление, когда поток завершается.
Полная очистка
Иногда USB-накопитель совершенно не читается, и спасти что-то с него уже не получится. Все, что остается в этой ситуации – очистить все данные и начать сначала. Лучший инструмент для этого – dd.
Возьмите метку накопителя, которую вы нашли прежде командой lsblk, и дальше действуйте по предыдущему алгоритму (/dev/sdc1 – раздел, /dev/sdc – весь диск):
sudodd if=/dev/zero of=/dev/sdc
Предыстория
Недавно ко мне пришел товарищ с фразой: «У меня флешка сломалась, можешь посмотреть? В принципе, если не получится, то и ладно, но там есть несколько файлов, копий которых нет».
Я, конечно, флешку взял и обещал посмотреть, что можно сделать. Грех не помочь другу! Входные данные были такие: «винда перестала видеть флешку». Других внятных объяснений произошедшего я не добился.
И вот, когда выдалось немного свободного времени, настала пора попробовать восстановить какие-то данные с флешки.
Первым делом, подключив флешку к ноуту с 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 не обрезала файл-назначение, когда закончатся данные в файле-источнике.
Сняв образ флешки, я взглянул на содержимое. Увиденное несколько меня удивило.
В образе первые 4 Мбайт данных были забиты 0xFF. Поврежден блок флеш-памяти? Чья-то попытка стереть данные? Сбой какого-то приложения? Почему затерта область — неважно. Главное, что у нас нет ни таблицы разделов, ни структуры файловой системы… Хотя если приглядеться, то видна закономерность.
Что ж, попробуем восстановить данные. Для начала возьмем утилиту TestDisk.
Программный ремонт 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 <32m>
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 <3>
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-дисков попутали буквы и постирали информацию со своих винчестеров (а такие будут, это я гарантирую 🙂 ) . Если вы из статьи ничего не поняли, и проблеск мысли в мозгу не воссиял 🙂 , то лучше статью сразу забыть, флешку выкинуть и идти в магазин за новой.
Автор искренне благодарит Алексея Хована за помощь в написании статьи и дополнительную проверку работоспособности метода.
Виталий Розизнаный, специально для rlab.ru.
Оригинальная статть http://rlab.ru/doc/repair_usb_flash_linux.html
Создание новой файловой системы
Очистка флэшки (или любого другого накопителя) делает все записанные данные на ней бесполезными. Это значит, что нужно создать новый раздел данных. Выберите желаемую файловую систему и введите соответствующую команду:
Fat32
sudo mkfs.msdos -f 32 /dev/sdc1
Ext4
sudo mkfs.ext4 -f /dev/sdc1
NTFS
sudo mkfs.ntfs -f /dev/sdc1
Заключение
USB-флэшки – полезные девайсы. С ними легко переносить данные с одного компьютера на другой вне зависимости от установленной ОС. Вот почему важно знать, что делать, если флэшка вдруг стала недоступной. К счастью у 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 не обрезала файл-назначение, когда закончатся данные в файле-источнике.
Удаление бэд-блоков с usb-накопитель с помощью fsck
Простой способ починить флэш-накопитель (и вообще любой накопитель) – инструмент fsck. Он удаляет поврежденные сектора, или «бэд-блоки», из-за которых чаще всего и возникают проблемы с чтением. Чтобы удалить поврежденные сектора с флэшки, откройте терминальное окно и введите следующие команды.
Сначала нужно узнать метки дисков. Сделайте это, введя команду lsblk. Появится список всех подключенных накопителей.
Примечание: по команде lsblk появляется список всех дисков, не только USB-накопителей. Будьте внимательны, чтобы не перепутать флэшку с жестким диском.
Чтобы удалить бэд-блок, запустите команду fsck либо в отдельном разделе (например, /dev/sdc1), либо на всем диске (например, /dev/sdc). По окончании процесса ваша флэшка будет снова полностью работоспособна в Linux.
sudo fsck /dev/sdc1
Примечание: здесь предполагается, что метка флэш-накопителя — /dev/sdc (или /dev/sdc1). У разных пользователей метки могут быть другими.
Чиним fat32
Для восстановления структуры FAT32 надо внимательно почитать документацию, вычислить значения ключевых параметров, а затем внести их в загрузочную запись FAT32. Кратко суть структуры FAT32 изображена на рисунке.