Исправление ошибок флешки linux

Ремонт USB в Linux Рекомендуемые

Флешка есть у всех. Это отличные мелочи, которые упрощают перемещение данных. Однако иногда флешки могут быть повреждены или просто полностью перестать работать. К счастью, если вы используете Linux, у вас уже есть доступ к набору инструментов, которые могут помочь вам решить проблему. В этом руководстве мы используем Ubuntu, но все применимо к большинству современных дистрибутивов Linux. Вот как вы можете восстановить поврежденный USB-накопитель в Linux.

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

Сделайте сжатый полный образ резервной копии

В Linux есть множество инструментов для резервного копирования любого устройства хранения. Однако проверенный подход основан на dd и GunZip (более известном как gzip).

1. Чтобы сделать резервную копию флешки, сначала подключите ее к компьютеру. Запустите свой любимый терминал (или нажмите CTRL + Alt + T).

2. Найдите флешку:

Восстановить Usb в Linux Список дисков по идентификатору

4. Чтобы создать резервную копию вашего флеш-накопителя в файл изображения, сжатый с помощью ZIP, с помощью одной команды, используйте:

sudoddif=/dev/disk/by-id/YOUR_FLASH_DRIVE status=progress |gzip-c>/home/USERNAME/backups/BACKUP_NAME.img.gz
Восстановление USB в Linux Dd Backup To Img Gz

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

sudogzip-c/home/USERNAME/backups/BACKUP_NAME.img.gz |sudoddof=/dev/disk/by-id/YOUR_FLASH_DRIVE status=progress
Восстановление USB-накопителя в Linux Dd обратно на USB-накопитель

Исправить поврежденную файловую систему с помощью FSCK

После резервного копирования содержимого флеш-накопителя пора попытаться исправить это. Для этого вы можете обратиться к fsck. Этот инструмент отлично подходит для удаления плохих файловых блоков, поскольку большая часть (если не все) повреждение и нечитаемость происходит из-за подобных проблем.

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

Затем запустите на нем fsck с помощью:

sudo fsck -v-a/dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION-TO-CHECK
Восстановление USB в Linux Fsck Fix Disk

В этой команде:

  • sudo fsck запускает инструмент исправления с правами администратора.
  • -v указывает ему показать нам подробную информацию о процессе.
  • -a указывает, что мы хотим, чтобы он автоматически пытался исправить все найденные ошибки.
  • / dev / disk… — это раздел, который будет проверяться на наличие ошибок.

Отформатируйте USB-накопитель с помощью Fdisk / MKFS из Терминала

Если fsck не удалось восстановить файловую систему устройства, вы можете попробовать отформатировать ее, чтобы использовать как новую.

1. Первый шаг — стереть все существующие структуры файловой системы и воссоздать их с нуля. Для этого вы можете использовать fdisk. Запустите его с помощью sudo на своем устройстве с помощью:

sudofdisk/dev/disk/by-id/YOUR_FLASH_DRIVE
Восстановление Usb в Linux Запустите Fdisk на диске

2. Нажмите o, а затем Enter, чтобы создать новую таблицу разделов DOS, чтобы ваш USB-накопитель был доступен для чтения повсюду. Если вы хотите использовать его только на своем современном компьютере и ОС, вы можете заменить o на g, чтобы вместо этого создать новую таблицу разделов GPT.

3. Нажмите n, а затем Enter, чтобы создать новый раздел, затем p, чтобы сделать его основным. Если вы использовали e вместо p, он был бы создан как расширенный раздел, но нет смысла делать это, если вы не планируете создавать более трех разделов на драйве. Затем вы можете просто нажать Enter, когда вас спросят о номере раздела, первом и последнем секторах, чтобы принять значения по умолчанию и разделить весь USB-накопитель.

Восстановить Usb в Linux Fdisk Создать раздел

4. Нажмите p, а затем Enter, чтобы проверить новую структуру хранения на вашем USB-накопителе. Затем нажмите w, а затем Enter, чтобы записать изменения на USB-накопитель и выйти из fdisk.

Восстановление Usb в разделах списка Linux Fdisk

5. Ваш раздел будет неформатирован, и, поскольку на нем еще не будет файловой системы, его нельзя будет использовать. Чтобы создать файловую систему, вы можете использовать один из инструментов mkfs, который поставляется со всеми современными дистрибутивами Linux. Чтобы отформатировать раздел в FAT32, который можно использовать на большинстве устройств, используйте:

sudo mkfs.fat -F32/dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION
Восстановление Usb в Linux Mkfs Fat

6. Чтобы отформатировать раздел в NTFS для использования с современными версиями Windows или с EXT4 для использования только с Linux, используйте:

sudo mkfs.ntfs /dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION

или же

sudo mkfs.ext4 /dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION
Восстановление USB в Linux Mkfs Ntfs

Если вам не нравится вводить команды, вы можете воспользоваться инструментом «Диски» для проверки и форматирования USB-накопителя. Диски предустановлены в Ubuntu.

1. Зайдите в меню приложений и найдите «диски». Запустите приложение, когда найдете его.

Ремонт USB в Linux Найдите диски

2. Выберите USB-накопитель из списка слева и щелкните значок с двумя шестеренками. Выберите «Восстановить файловую систему» ​​и следуйте инструкциям мастера, чтобы исправить файловую систему.

3. В нашем случае мы имели дело не с аппаратной проблемой, а с повреждением файловой системы. Хотя проблема не подлежала устранению, мы могли переформатировать USB-накопитель и продолжать его использовать. Чтобы сделать это с дисками, с выбранным USB-накопителем, снова щелкните значок с двумя шестеренками и выберите «Форматировать раздел…»

Восстановление USB в разделах формата дисков Linux

4. Введите имя USB-накопителя в поле Имя тома и выберите для него одну из трех самых популярных файловых систем:

  • Ext4 для использования с Linux
  • NTFS для использования с современными версиями Windows
  • FAT для использования с обоими, а также с другими типами устройств (от смартфонов до игровых консолей)
Восстановить Usb в параметрах формата дисков Linux

5. Обратите внимание на опцию «Стереть». Оставьте его отключенным для быстрого форматирования. Установите для него значение «Вкл.», Чтобы выполнить полное форматирование, при котором содержимое вашего устройства будет полностью удалено. При работе с поврежденными устройствами, на которых также могут быть плохие блоки, лучше использовать опцию полного стирания.

Восстановление USB на дисках Linux Включено полное стирание

Обновленный USB-накопитель

Теперь, когда вы отремонтировали свой поврежденный USB-накопитель, вы можете снова использовать его как новый накопитель. А если вы хотите создать USB-накопитель Linux Live, следуйте приведенным здесь инструкциям.

По теме:

Содержание

  1. Программный ремонт USB flash в Linux
  2. программный ремонт usb flash накопителей в linux
  3. Как «вылечить» поврежденный USB-накопитель в Linux?
  4. Удаление бэд-блоков с USB-накопитель с помощью fsck
  5. Полная очистка
  6. Создание новой файловой системы
  7. Восстановление флешки в Linux
  8. Форматирование с помощью командной строки
  9. Утилита Palimpsest
  10. Программа Gparted
  11. Утилита «Управление дисками» (gnome-среда)
  12. Заключение
  13. Как восстановить данные с флешки при помощи инструментов Linux.
  14. Техника безопасности: снимаем образ
  15. TestDisk
  16. О TestDisk
  17. PhotoRec
  18. О PhotoRec
  19. Чиним FAT32
  20. Ищем смещения
  21. Создаем загрузочную запись
  22. Собираем чудовище Франкенштейна
  23. Читаем данные
  24. Работа над ошибками
  25. Выводы

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

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

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

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

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

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

# 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

# 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 минуты
Теперь «по-фирменному» создаём раздел.

# mkdosfs /dev/sdb1
mkdosfs 2.11 (12 Mar 2005)

Источник

программный ремонт usb flash накопителей в linux

Довольно таки часто занимался программным восстановлением usb flash накопителей на Windows, ну и заинтересовался как можно это реализовать на Linux. Как раз под рукой лежала флэшка JetFlash TS4GJF160 на 4Gb, которая не хотела работать

Так как же боротся с этим?! Весьма просто…

Вставляем usb flash накопитель в компьютер и определяем какое имя ему присваивается При подключении usb flash накопителя к компьютеру, Linux присваивает ему имя типа sdX (первому устройству присваивается sda, второму sdb и так далее. Но чтобы узнать какое имя он ему присвоил наверняка, используем 1 из способов:

Из этого всего нам нужна только 1 строка:

которая и говорит нам что присвоено имя устройству sdc1

Аналогично первой команде ищем среди последних строк:

Имхо самый оптимальный вариант, выведет весь список смонтированных устройств и в самом конце видим следующее:

Думаю тут все понятно, /dev/sdc1 то что нам и нужно

Забиваем usb flash накопитель нулевыми байтами, набирая:

После чего нам выдаст следующее:

На ошибку можете не обращать внимание, мы же не указали необходимый размер

Форматируем usb flash накопитель, командой:

Создаем новый раздел, командой n:

Просматриваем что получилось, командой p:

Так как Linux раздел нам никчему сменим его, командой t:

Смотрим результат, командой p:

Ну и записываем таблицу разделов на usb flash накопитель, командой w:

Форматируем usb flash накопитель, командой:

После форматирования в раздел FAT16, выведет следующее:

Команда для форматирования в FAT32:

После выполнения этих пунктов, в WinXP usb flash накопитель выдал «Диск не отформатирован» и только после того как я отформатировал стандартными средствами Win все заработало

Вот вообщем-то и все… Удачи в восстановлении!)

Для дополнительной информации об устройстве, введите:

Источник

Как «вылечить» поврежденный USB-накопитель в Linux?

Флэшки есть у всех. Маленькие, удобные – что может быть лучше для сохранения данных. Но бывает, что флэшки повреждаются или вообще отказываются работать. Если вы пользователь Linux и подобное случилось с вами, исправить все будет несложно.

Примечание: описанные методы работают не только для USB-накопителей, но и для жестких дисков тоже.

Интересно: Как отформатировать защищенную от записи флешку. Читаем здесь.

Удаление бэд-блоков с USB-накопитель с помощью fsck

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

Сначала нужно узнать метки дисков. Сделайте это, введя команду lsblk. Появится список всех подключенных накопителей.

Примечание: по команде lsblk появляется список всех дисков, не только USB-накопителей. Будьте внимательны, чтобы не перепутать флэшку с жестким диском.

Чтобы удалить бэд-блок, запустите команду fsck либо в отдельном разделе (например, /dev/sdc1), либо на всем диске (например, /dev/sdc). По окончании процесса ваша флэшка будет снова полностью работоспособна в Linux.

sudo fsck /dev/sdc1

Примечание: здесь предполагается, что метка флэш-накопителя — /dev/sdc (или /dev/sdc1). У разных пользователей метки могут быть другими.

Полная очистка

Иногда USB-накопитель совершенно не читается, и спасти что-то с него уже не получится. Все, что остается в этой ситуации – очистить все данные и начать сначала. Лучший инструмент для этого – dd.

Возьмите метку накопителя, которую вы нашли прежде командой lsblk, и дальше действуйте по предыдущему алгоритму (/dev/sdc1 – раздел, /dev/sdc – весь диск):

sudo dd if=/dev/zero of=/dev/sdc

Создание новой файловой системы

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

Ext4

NTFS

Заключение

USB-флэшки – полезные девайсы. С ними легко переносить данные с одного компьютера на другой вне зависимости от установленной ОС. Вот почему важно знать, что делать, если флэшка вдруг стала недоступной. К счастью у Linux есть мощные инструменты, способные легко «вылечить» флэш-накопитель.

Источник

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

vosstanovlenie fleshki v linux 5

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

Существует немало способов, как выполнить данные операции с флешкой в системе Linux, но остановимся на самых простых и распространенных.

Форматирование с помощью командной строки

После запуска консоли необходимо прописать следующую команду: «# dmesg | tail», благодаря которой системой определяется имя устройства. В командной строке отобразятся данные, где присвоенное системой имя флешки указано в квадратных скобках – в данном случае [sdb]. Это выглядит следующим образом:

vosstanovlenie fleshki v linux 1

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

Утилита Palimpsest

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

vosstanovlenie fleshki v linux 2

Программа Gparted

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

vosstanovlenie fleshki v linux 3

Утилита «Управление дисками» (gnome-среда)

Графическая среда Gnome – довольно распространенная оболочка во многих операционных системах Linux. Она отличается большим количеством удобных приложений, инструментов и утилит по управлению системой компьютера, среди которых имеется замечательная программа «Disk Utility» («Дисковая утилита» или «Управление дисками»). Потому, чтобы восстановить флеш-накопитель, достаточно запустить «Диск Утилити», подключить устройство к компьютеру и проделать следующие действия:

1. Выбрать устройство в специальном поле устройств слева, затем нажать кнопку «Настройки» (иконка с шестеренками).

vosstanovlenie fleshki v linux 4

2. Далее в открывшейся вкладке с пунктами выбрать первый «Форматировать раздел…».

vosstanovlenie fleshki v linux 5

3. Затем задать необходимые параметры: ввести любое имя для тома и определить тип файловой системы. После чего кликнуть по кнопке «Далее» и начать операцию восстановления.

vosstanovlenie fleshki v linux 6

Заключение

Перечисленные в статье способы восстановления могут отлично применяться по разным причинам:

Перед тем как проводить форматирование устройства, обязательно удостоверьтесь, что на флешке нет важных для вас файлов. В противном случае, вы рискуете потерять все записанные ранее данные. Ну а если вам необходимо восстановить файлы, то это можно сделать с помощью других специальных программ: TestDisk, Extundelete, R-Studio, R-Linux, DMDE, Foremost, Mondo Rescue и т. д.

Источник

Как восстановить данные с флешки при помощи инструментов Linux.

Сбой с данными всегда проблема. Но если это критически важные данные которые находятся как всегда на флешке, это вдвое большая проблема. Сегодня мы рассмотрим не типичный случай восстановления данных с такого носителя. Как восстановить данные с флешки при помощи инструментов Linux таких как TestDisk, PhotoRec мы рассмотрим в данной статье.

usb data recovery

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

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

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

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

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

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

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

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

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

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

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

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

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

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. Эта утилита предназначена в первую очередь для восстановления потерянных разделов на носителях информации, а также для восстановления загрузочного сектора.

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

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

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

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

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

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

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

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

PhotoRec

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

О PhotoRec

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

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

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

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

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

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

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

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

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

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

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

Чиним FAT32

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

fat 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Второе вхождение (по адресу 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 сектора в наш образ — и готово! 🙂

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

Создаем загрузочную запись

Для начала определим размер раздела.

Размер раздела равен равен размеру флешки минус смещение раздела. Получается 15 676 211 200 – 0x15E800 = 15 674 775 552 байта.

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

Откроем файл в 010 Editor. И воспользуемся шаблоном Drive (возможно, его потребуется установить, см. меню Templates Repository). Если появится окошко с предупреждением о долгой работе, соглашаемся на продолжение работы скрипта.

hex mkfs 1Смотрим сгенерированный образ hex mkfs 2Разбор полей образа hex mkfs 3Разбор полей BPB

Прекрасно! Теперь у нас есть заполненные структуры загрузочного сектора. Надо бы их перенести в наш образ.

Выделяем мышкой структуру FAT_BOOTSECTOR в окне Templates Results, автоматически выделится диапазон данных, скопируем их в буфер (щелкнуть правой кнопкой мыши в окне данных и выбрать пункт Copy).

Собираем чудовище Франкенштейна

Для сборки образа вставим сгенерированный загрузочный сектор и скопируем вторую копию FAT поверх первой.

Начнем с вставки загрузочного сектора. Он у нас уже в ОЗУ. Перейдем на вычисленный адрес 0x15E800 и вставим данные из буфера.

build 1Вставленные данные

Выясняется, что после сектора идут байты 0xFF, а в сгенерированном образе после этого сектора есть еще данные.

build 2Сгенерированный образ

Непорядок. После первого сектора ведь идет структура FSInfo! Да и по смещению 0xC00 находится копия загрузочного сектора (на случай его повреждения). Нет, лучше скопируем все 32 сектора (0x4000 байт). Кстати, заодно убедились, что в образе, сгенерированном mkfs, по смещению 0x4000 будет последовательность F8 FF FF FF. После вставки в наш образ мы оказались по адресу 0x162800, который ранее и рассчитали. Пока все совпадает.

Теперь нам надо скопировать вторую копию FAT поверх первой. Выделяем участок длиной 0x74BC00 с адреса 0x8AE400, копируем его и вставляем по адресу 0x162800. Для выделения участка удобно воспользоваться фичей Select Range (Ctrl + Shift + A) — просто введем в поля адрес и размер.

build 3Корневая директория

После вставки оказались в начале корневой директории. Пока все сходится.

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

Читаем данные

Для монтирования файловой системы выполним следующие команды.

1’: Ошибка ввода/вывода ls: невозможно получить доступ к ‘mnt/map_n’: Ошибка ввода/вывода 10_10_2016 2019.07.13 28-02-

Потрясающе! Образ примонтировался, и даже есть названия файлов и директорий. Но есть и какие-то странные ошибки. Посмотрим подробнее (часть записей в выводе специально пропущено).

Очень странно. Да и просмотр содержимого директорий дает понять, что где-то закралась ошибка.

$ ls mnt/some_dir/ ls: невозможно получить доступ к ‘mnt/some_dir/%PDF-1.4.’$’n»%╨’: Ошибка ввода/вывода ls: чтение каталога ‘mnt/some_dir/’: Ошибка ввода/вывода

Имя файла совпадает с заголовком PDF. Похоже, кластер, на который указывает запись для этой директории, содержит PDF.

Волшебства не произошло, придется разбираться, в чем косяк. Но перед этим немного упростим себе жизнь и создадим таблицу разделов. Забегая вперед, скажу, что шаблон Drive в редакторе 010 Editor вроде бы шибко умный, но начать разбор с определенного смещения не может, только с начала файла.

Для создания таблицы разделов воспользуемся утилитой fdisk. Создадим один раздел, начинающийся с сектора номер 2804. Смещение нестандартное (по умолчанию — 2048), возможно, что на флешке было два раздела, первый был маленький и погиб целиком. Но это уже неважно. Сам сектор вычисляется легко — просто делим начало смещения раздела на размер сектора (0x15E800/512 = 2804).

build 4Вывод fdisk

Обращаю внимание, что fdisk определил наличие по этому смещению раздела с FAT32 (vfat) и спросил, не удалить ли. Кроме того, не забываем поменять тип раздела на W95 FAT32 (LBA) (код 0c).

Работа над ошибками

Поиск ошибки занял у меня где-то час, в течение которого я активно курил спецификации и сверял значения в структурах, разобранных шаблоном Drive в 010 Editor. Вкратце опишу свои поиски.

build 5Скриншот полей BPB

Сначала я заметил, что корневая директория расположена по адресу 0xFFA800, а не по адресу 0xFFA000.

Я подумал, что неверно определен размер кластера. Утилита mkfs создала кластеры по 16 секторов, а секторы по 512 байт (см. на скриншоте поля BytesPerSector и SectorsPerCluster ). Сначала я попробовал поиграть значениями этих параметров, каждый раз перемонтируя образ.

Или можно еще проще (читай man losetup):

Далее можем монтировать и перемонтировать раздел сколько угодно.

После каждой правки не надо заново подключать loop-устройство, смещение раздела в образе у нас не меняется.

Ничего путного из этого не вышло. Становилось только хуже.

Через некоторое время я понял, что и вторая копия таблицы начинается не там, где надо.

И тут я обратил внимание на поле SectorsPerFat32 (на скриншоте). Это поле описывает размер таблицы FAT в секторах. Его значение равно 0x3A60, а должно оно быть 0x74BC00/512 = 0x3A5E. Разница в два сектора на каждую копию таблицы FAT как раз дает нам 2 * 2 * 0x200 = 0x800 байт разницы между правильным смещением корневой директории и имеющимся у нас ошибочным.

Правим его (прямо в окне структуры, что очень удобно), сохраняем изменения и проверяем.

Отлично! Ошибки пропали! Все файлы и папки читаются. Структура похожа на корректную.

Натравив на образ fsck, все равно видим ворох ошибок. Однако первое, что бросается в глаза, — это несоответствие загрузочных записей.

Что ж, исправим и вторую копию. К сожалению, шаблон 010 Editor не разбирает вторую копию загрузочного сектора, поэтому сами найдем нужный байт и поправим его. Его легко найти — смещение 0x24 от начала сектора, в нашем случае 0x15F424, меняем 0x60 на 0x5E.

Запускаем еще раз fsck.

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

Я восстановил из бэкапа (ты же прочел врезку о технике безопасности?) оригинальный образ флешки и заново прошел этапы копирования таблиц, загрузочного сектора (с правкой поля SectorsPerFat32 ) и его копии. Повторный запуск fsck меня порадовал.

Выводы

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

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

Источник

Сегодня речь пойдет о так называемом «программном
ремонте» 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      40 

Venix 80286     84  OS/2 hidden C: 
c6  DRDOS/sec (FAT-


 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 61 

SpeedStor       a9 
NetBSD          f4 
SpeedStor


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В восстановление данных на первоисточник.

Информация о чипе заложена в сам чип памяти, если он отдаёт идентификатор Samsung’а, то Samsung’ом он и является. Если чип не маркирован то это скорее всего отбраковка собранная китайцами в «третью» смену :). На счёт скорости и стабильности флеш ничего сказать не могу, скорость записичтения зависит от многих факторов, ничего удивительно что запустив два раза один и тот же тест получаем разные результаты нет. Разница должна быть не значительной. Доверять такой флеш я бы не стал, ибо она ни что иное как дешёвая китайская подделка. Но даже они бывает работают лучше и дольше своих фирменных аналогов.

Пока плохо ориентируюсь тут! Сори если не там пишу!
Вопрос следующий!: на чипе флеш карты нету маркировки
Опрос контроллера флешки с помощью утилиты ChipEasy
Показывает что чип производства Samsung !
На сколько эта информация достоверна?
И является ли это реальным подтверждением что чип Samsung?
И на сколько плохо что на чипе нет маркировки?
При этом он записывает и считывает с хорошей скоростью!
И еще очень важный вопрос если проверяешь флешку дважды
И скорость считывания и записи отличалась это плохо?
Это вобще на что-то влияет?
Может говорит о том что флешка не стабильна?
Жду вашего ответа!!!!
Это очень важно узнать как можно скорей!

Спасибо! мне помогло! gparted не справился, проделал по этой инструкции. В конце правда не сработала команда mkdosfs /dev/sdb1, но после всего и gparted заработал и довершил дело.

«Линукс — очень дружелюбная ОС. Просто она придирчива в выборе друзей.» :)
Выполнение hdparm без параметров не имеет никакого смысла.
«Permission denied» — отсутствие прав?
Опишите проблему подробно.

помогите после hdparm [b]/dev/sdb[/b] выдаёт [b]/dev/sdc: Permission denied[/b] что делать?

Ох….ть,ох….но,я сразу несколько флешек поднял ….и на одном сатовском диске все под чистую снес(пофиг он все равно в зеркале),почет и уважение ….и низкий поклон!!!

Автору респектище! И с наступающим!
Вчера купил новую флеху наигрался с MultiSystem и она у меня оппп, крякнула после Дебиянчика. За новой флехой бежать неохота, да и жаба давит, 200-300 рублей лучше пропью. На сайте флехи Kingmax микропграммы гавно полное, парился под виндой пол ночи и не куя. А тут на тебе гугл эту статью указал и флешка заработала. 

Не путайте вендор-утилиты, толкающие в флешку супер-он, дефектующие модули памяти, формирующие новый транслятор со всякими «реально перемагничивающими» (с) зерофиллами под виндовз, суть которые и есть dd.
Да и вы что-то не договариваете: если для Изиной Рековырялки по логике было доступно 4 ГБ, то эти же 4 ГБ будут доступны хоть под фряхой, хоть под соляркой и для dd и для любого софта. Именно этим  свойством я и пользуюсь для создания под линуксом образов флешек с программными глюками, наглухо вешающими винду.

Использование утилиты fsck для исправления ошибок файловой системы в Linux

Оригинал: How to Use ‘fsck’ to Repair File System Errors in Linux
Автор: Marin Todorov
Дата публикации: 1 октября 2018 года
Перевод: А. Кривошей
Дата перевода: июль 2019 г.

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

Это можно выполнить с помощью системной утилиты fsck (file system consistency check). Эта проверка может быть выполнена автоматически во время загрузки или запущена вручную.

В этой статье мы рассмотрим утилиту fsck и ее использование, чтобы помочь вам исправить дисковые ошибки.

Когда нужно использовать fsck в Linux

Существуют разные сценарии, когда вам понадобится запустить fsck. Вот несколько примеров:

Система не загружается.
Файлы в системе поврежденны (часто вы можете увидеть ошибку ввода/вывода).
Подключенный диск (включая флэшки/SD-карты) не работает должным образом.

Опции fsck

Команда Fsck должна быть запущена с привилегиями суперпользователя (root). Вы можете использовать ее с разными аргументами. Их использование зависит от вашего конкретного случая. Ниже вы увидите некоторые из наиболее важных опций:

-A — используется для проверки всех файловых систем. Список берется из /etc/fstab.
-C — показывать индикатор выполнения.
-l — блокирует устройство, чтобы гарантировать, что никакая другая программа не попытается использовать раздел во время проверки.
-M — не проверять смонтированные файловые системы.
-N — только показывать, что будет сделано — не делать никаких реальных изменений.
-P — если вы хотите проверять файловые системы параллельно, включая корневую.
-R — не проверять корневую файловую систему. Это полезно только вместе с ‘-A‘.
-r — предоставить статистику для каждого проверяемого устройства.
-T — не показывает заголовок.
-t — исключительно указать типы файловых систем, которые будут проверяться. Типы могут быть разделены запятыми.
-V — предоставить описание того, что делается.

Как запустить fsck для исправления ошибок файловой системы Linux

Чтобы запустить fsck, вам нужно убедиться, что раздел, который вы собираетесь проверить, не смонтирован. Для этой статьи я буду использовать мой второй диск /dev/sdb, смонтированный в /mnt.

Вот что произойдет, если я попытаюсь запустить fsck на смонтированном разделе.

Чтобы избежать этого, размонтируйте раздел с помощью команды:

Теперь fsck можно запустить безопасно.

Понимание кодов выхода fsck

После запуска fsck она вернет код выхода. Эти коды можно увидеть в руководстве fsck, выполнив:

Исправление ошибок файловой системы Linux

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

Флаг -y автоматически даёт ответ «да» на любые запросы от fsck для исправления ошибок.

Точно так же вы можете запустить команду на всех файловых системах (без корневой):

Как запустить fsck в корневом разделе Linux

В некоторых случаях вам может потребоваться запустить fsck в корневом разделе вашей системы. Поскольку вы не можете запустить fsck на смонтированном разделе, вы можете попробовать один из следующих вариантов:

1. Принудительно использовать fsck при загрузке системы
2. Запустить fsck в режиме восстановления

Мы рассмотрим обе ситуации.

Принудительная проверка корневой файловой системы с помощью fsck при загрузке системы

Это относительно легко выполнить, единственное, что вам нужно сделать, это создать файл с именем forcefsck в корневом разделе вашей системы. Используйте следующую команду:

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

После загрузки системы проверьте, существует ли этот файл:

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

Запуск fsck в режиме восстановления

Запуск fsck в режиме восстановления требует еще нескольких шагов. Сначала подготовьте систему к перезагрузке. Остановите все важные службы, такие как MySQL/MariaDB и т. д., а затем перезагрузите компьютер.

Во время загрузки удерживайте нажатой клавишу Shift, чтобы отобразилось меню grub. Выберите «Advanced options».

Затем выберите «Recovery mode».

В следующем меню выберите «fsck».

Вас спросят, хотите ли вы перемонтировать вашу корневую файловую систему. Выберите «yes».

Вы должны увидеть что-то похожее на это.

Затем вы можете вернуться к нормальной загрузке, выбрав «Resume».

Заключение

Из этого руководства вы узнали, как использовать fsck и выполнять проверки согласованности в разных файловых системах Linux. Если у вас есть какие-либо вопросы о fsck, пожалуйста, не стесняйтесь задавать их в разделе комментариев ниже.

Источник

Программный ремонт 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, смотрим вывод:

# 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. Попытаемся познакомиться с ней поближе:

# 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 минуты
Теперь «по-фирменному» создаём раздел.

# 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

# mkdosfs /dev/sdb1
mkdosfs 2.11 (12 Mar 2005)

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

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

Источник

Флэшки есть у всех. Маленькие, удобные – что может быть лучше для сохранения данных. Но бывает, что флэшки повреждаются или вообще отказываются работать. Если вы пользователь Linux и подобное случилось с вами, исправить все будет несложно.

Примечание: описанные методы работают не только для USB-накопителей, но и для жестких дисков тоже.

Интересно: Как отформатировать защищенную от записи флешку. Читаем здесь.

Содержание

  1. Удаление бэд-блоков с USB-накопитель с помощью fsck
  2. Полная очистка
  3. Создание новой файловой системы

Удаление бэд-блоков с USB-накопитель с помощью fsck

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

Сначала нужно узнать метки дисков. Сделайте это, введя команду lsblk. Появится список всех подключенных накопителей.

Примечание: по команде lsblk появляется список всех дисков, не только USB-накопителей. Будьте внимательны, чтобы не перепутать флэшку с жестким диском.

команда lsblk

Чтобы удалить бэд-блок, запустите команду fsck либо в отдельном разделе (например, /dev/sdc1), либо на всем диске (например, /dev/sdc). По окончании процесса ваша флэшка будет снова полностью работоспособна в Linux.

sudo fsck /dev/sdc1

Примечание: здесь предполагается, что метка флэш-накопителя — /dev/sdc (или /dev/sdc1). У разных пользователей метки могут быть другими.

метка флэш-накопителя

Понравилась статья? Поделить с друзьями:
  • Исправление ошибок предыдущего отчетного периода
  • Исправление ошибок флеш карты
  • Исправление ошибок после утверждения годовой отчетности
  • Исправление ошибок после сдачи годового отчета
  • Исправление ошибок после отчетной даты