Флешка есть у всех. Это отличные мелочи, которые упрощают перемещение данных. Однако иногда флешки могут быть повреждены или просто полностью перестать работать. К счастью, если вы используете Linux, у вас уже есть доступ к набору инструментов, которые могут помочь вам решить проблему. В этом руководстве мы используем Ubuntu, но все применимо к большинству современных дистрибутивов Linux. Вот как вы можете восстановить поврежденный USB-накопитель в Linux.
В этой статье мы уделяем приоритетное внимание безопасности ваших данных. Сначала вы увидите, как создать резервную копию содержимого флэш-накопителя, а затем приступите к различным исправлениям возникшей проблемы. Таким образом, если попытка решить проблему приведет к ее усугублению, вы все равно сможете вернуться к моментальному снимку текущего состояния вашего флеш-накопителя.
Сделайте сжатый полный образ резервной копии
В Linux есть множество инструментов для резервного копирования любого устройства хранения. Однако проверенный подход основан на dd
и GunZip (более известном как gzip).
1. Чтобы сделать резервную копию флешки, сначала подключите ее к компьютеру. Запустите свой любимый терминал (или нажмите CTRL + Alt + T).
2. Найдите флешку:
4. Чтобы создать резервную копию вашего флеш-накопителя в файл изображения, сжатый с помощью ZIP, с помощью одной команды, используйте:
sudoddif=/dev/disk/by-id/YOUR_FLASH_DRIVE status=progress |gzip-c>/home/USERNAME/backups/BACKUP_NAME.img.gz
5. Чтобы восстановить резервную копию, вам нужно будет изменить последовательность двух команд и определить свою флешку в качестве устройства вывода. Полная команда будет выглядеть так:
sudogzip-c/home/USERNAME/backups/BACKUP_NAME.img.gz |sudoddof=/dev/disk/by-id/YOUR_FLASH_DRIVE status=progress
Исправить поврежденную файловую систему с помощью FSCK
После резервного копирования содержимого флеш-накопителя пора попытаться исправить это. Для этого вы можете обратиться к fsck
. Этот инструмент отлично подходит для удаления плохих файловых блоков, поскольку большая часть (если не все) повреждение и нечитаемость происходит из-за подобных проблем.
Для этой команды вам нужно будет определить раздел, а не полный диск. Вы найдете его с таким же именем, как и ваше устройство, введя:
Затем запустите на нем fsck
с помощью:
sudo fsck -v-a/dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION-TO-CHECK
В этой команде:
sudo fsck
запускает инструмент исправления с правами администратора.-v
указывает ему показать нам подробную информацию о процессе.-a
указывает, что мы хотим, чтобы он автоматически пытался исправить все найденные ошибки./ dev / disk…
– это раздел, который будет проверяться на наличие ошибок.
Отформатируйте USB-накопитель с помощью Fdisk / MKFS из Терминала
Если fsck не удалось восстановить файловую систему устройства, вы можете попробовать отформатировать ее, чтобы использовать как новую.
1. Первый шаг – стереть все существующие структуры файловой системы и воссоздать их с нуля. Для этого вы можете использовать fdisk
. Запустите его с помощью sudo
на своем устройстве с помощью:
sudofdisk/dev/disk/by-id/YOUR_FLASH_DRIVE
2. Нажмите o, а затем Enter, чтобы создать новую таблицу разделов DOS, чтобы ваш USB-накопитель был доступен для чтения повсюду. Если вы хотите использовать его только на своем современном компьютере и ОС, вы можете заменить o на g, чтобы вместо этого создать новую таблицу разделов GPT.
3. Нажмите n, а затем Enter, чтобы создать новый раздел, затем p, чтобы сделать его основным. Если вы использовали e вместо p, он был бы создан как расширенный раздел, но нет смысла делать это, если вы не планируете создавать более трех разделов на драйве. Затем вы можете просто нажать Enter, когда вас спросят о номере раздела, первом и последнем секторах, чтобы принять значения по умолчанию и разделить весь USB-накопитель.
4. Нажмите p, а затем Enter, чтобы проверить новую структуру хранения на вашем USB-накопителе. Затем нажмите w, а затем Enter, чтобы записать изменения на USB-накопитель и выйти из fdisk.
5. Ваш раздел будет неформатирован, и, поскольку на нем еще не будет файловой системы, его нельзя будет использовать. Чтобы создать файловую систему, вы можете использовать один из инструментов mkfs, который поставляется со всеми современными дистрибутивами Linux. Чтобы отформатировать раздел в FAT32, который можно использовать на большинстве устройств, используйте:
sudo mkfs.fat -F32/dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION
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-накопителя. Диски предустановлены в Ubuntu.
1. Зайдите в меню приложений и найдите “диски”. Запустите приложение, когда найдете его.
2. Выберите USB-накопитель из списка слева и щелкните значок с двумя шестеренками. Выберите “Восстановить файловую систему” и следуйте инструкциям мастера, чтобы исправить файловую систему.
3. В нашем случае мы имели дело не с аппаратной проблемой, а с повреждением файловой системы. Хотя проблема не подлежала устранению, мы могли переформатировать USB-накопитель и продолжать его использовать. Чтобы сделать это с дисками, с выбранным USB-накопителем, снова щелкните значок с двумя шестеренками и выберите “Форматировать раздел…”
4. Введите имя USB-накопителя в поле Имя тома и выберите для него одну из трех самых популярных файловых систем:
- Ext4 для использования с Linux
- NTFS для использования с современными версиями Windows
- FAT для использования с обоими, а также с другими типами устройств (от смартфонов до игровых консолей)
5. Обратите внимание на опцию “Стереть”. Оставьте его отключенным для быстрого форматирования. Установите для него значение “Вкл.”, Чтобы выполнить полное форматирование, при котором содержимое вашего устройства будет полностью удалено. При работе с поврежденными устройствами, на которых также могут быть плохие блоки, лучше использовать опцию полного стирания.
Обновленный USB-накопитель
Теперь, когда вы отремонтировали свой поврежденный USB-накопитель, вы можете снова использовать его как новый накопитель. А если вы хотите создать USB-накопитель Linux Live, следуйте приведенным здесь инструкциям.
По теме:
Содержание
- Программный ремонт USB flash в Linux
- программный ремонт usb flash накопителей в linux
- Как «вылечить» поврежденный USB-накопитель в Linux?
- Удаление бэд-блоков с USB-накопитель с помощью fsck
- Полная очистка
- Создание новой файловой системы
- Восстановление флешки в Linux
- Форматирование с помощью командной строки
- Утилита Palimpsest
- Программа Gparted
- Утилита «Управление дисками» (gnome-среда)
- Заключение
- Как восстановить данные с флешки при помощи инструментов Linux.
- Техника безопасности: снимаем образ
- TestDisk
- О TestDisk
- PhotoRec
- О PhotoRec
- Чиним FAT32
- Ищем смещения
- Создаем загрузочную запись
- Собираем чудовище Франкенштейна
- Читаем данные
- Работа над ошибками
- Выводы
Программный ремонт 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
Для многих начинающих пользователей система Linux является непривычной средой, в связи с чем, в зависимости от дистрибутива данной операционной системы, многие функции могут выполняться иначе, нежели в Windows. В частности, при использовании съемных носителей информации возникают нередко вопросы об их подключении, форматировании и восстановлении.
Существует немало способов, как выполнить данные операции с флешкой в системе Linux, но остановимся на самых простых и распространенных.
Форматирование с помощью командной строки
После запуска консоли необходимо прописать следующую команду: «# dmesg | tail», благодаря которой системой определяется имя устройства. В командной строке отобразятся данные, где присвоенное системой имя флешки указано в квадратных скобках – в данном случае [sdb]. Это выглядит следующим образом:
Далее необходимо прописать операцию форматирования, однако пользователю должен быть известен файловый формат, заданный на устройстве – FAT32 или NTFS. Каждый формат имеет собственную команду:
Утилита Palimpsest
С помощью данной программы можно легко и быстро восстановить устройство. Для этого достаточно воспользоваться функцией форматирования, а именно:
Программа Gparted
Еще один быстрый и распространенный способ форматирования внешних носителей информации. Чтобы восстановить флешку, достаточно выбрать ее в разделе отображенных в утилите устройств, после чего, кликнув правой кнопкой мыши, нажать в контекстном меню на пункт «Форматировать в». Далее необходимо определить нужный файловый формат, после чего начнется процесс восстановления.
Утилита «Управление дисками» (gnome-среда)
Графическая среда Gnome – довольно распространенная оболочка во многих операционных системах Linux. Она отличается большим количеством удобных приложений, инструментов и утилит по управлению системой компьютера, среди которых имеется замечательная программа «Disk Utility» («Дисковая утилита» или «Управление дисками»). Потому, чтобы восстановить флеш-накопитель, достаточно запустить «Диск Утилити», подключить устройство к компьютеру и проделать следующие действия:
1. Выбрать устройство в специальном поле устройств слева, затем нажать кнопку «Настройки» (иконка с шестеренками).
2. Далее в открывшейся вкладке с пунктами выбрать первый «Форматировать раздел…».
3. Затем задать необходимые параметры: ввести любое имя для тома и определить тип файловой системы. После чего кликнуть по кнопке «Далее» и начать операцию восстановления.
Заключение
Перечисленные в статье способы восстановления могут отлично применяться по разным причинам:
Перед тем как проводить форматирование устройства, обязательно удостоверьтесь, что на флешке нет важных для вас файлов. В противном случае, вы рискуете потерять все записанные ранее данные. Ну а если вам необходимо восстановить файлы, то это можно сделать с помощью других специальных программ: TestDisk, Extundelete, R-Studio, R-Linux, DMDE, Foremost, Mondo Rescue и т. д.
Источник
Как восстановить данные с флешки при помощи инструментов Linux.
Сбой с данными всегда проблема. Но если это критически важные данные которые находятся как всегда на флешке, это вдвое большая проблема. Сегодня мы рассмотрим не типичный случай восстановления данных с такого носителя. Как восстановить данные с флешки при помощи инструментов Linux таких как TestDisk, PhotoRec мы рассмотрим в данной статье.
Недавно ко мне пришел товарищ с фразой: «У меня флешка сломалась, можешь посмотреть? В принципе, если не получится, то и ладно, но там есть несколько файлов, копий которых нет».
Я, конечно, флешку взял и обещал посмотреть, что можно сделать. Грех не помочь другу! Входные данные были такие: «винда перестала видеть флешку». Других внятных объяснений произошедшего я не добился.
И вот, когда выдалось немного свободного времени, настала пора попробовать восстановить какие-то данные с флешки.
В этой статье рассматривается восстановление флешек в среде 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
Выбираем пункты меню Procced → Intel → Analyse и получим следующее.
Выбор типа разметки Выбор опций Таблица разделов Еще одна таблица разделов
Видим, что TestDisk не нашел таблицы разделов. Ожидаемо, ведь она затерта. Попробуем ее восстановить с использованием «быстрого поиска» разделов на диске. Выбираем пункт Quick Search.
Все еще без таблицы разделов
TestDisk ничего не нашел, но и это ожидаемо, ведь раздел FAT32 тоже поврежден. TestDisk теперь предлагает нам прописать разделы вручную, но мы не знаем, что где лежало. Поэтому пока отложим эту утилиту в сторону. Для выхода достаточно несколько раз нажать кнопку q.
Что ж, возьмем тогда на вооружение другое изобретение того же автора — PhotoRec.
PhotoRec
PhotoRec — это программа для восстановления утерянных (удаленных) файлов. Изначально она разрабатывалась для восстановления изображений из памяти цифровых камер, отсюда и название — PHOTO RECovery. Со временем она обросла функциями восстановления и других типов данных, но название осталось.
О PhotoRec
PhotoRec ищет известные заголовки файлов. Если нет фрагментации, которая часто бывает, он может восстановить весь файл. PhotoRec распознает многочисленные форматы файлов, включая ZIP, Office, PDF, HTML, JPEG и другие форматы графических файлов. Полный список форматов, поддерживаемых PhotoRec содержит более 390 расширений (около 225 семейств форматов).
Если данные не фрагментированы, восстановленный файл должен быть идентичного размера или больше, чем исходный файл. В некоторых случаях PhotoRec может узнать оригинальный размер файла из заголовка, так что восстановленный файл усекается до необходимого размера. Однако, если восстановленный файл заканчивается раньше, чем указывает его заголовок, он отбрасывается. Некоторые файлы, такие как MP3, представляют собой поток данных. В этом случае PhotoRec анализирует полученные данные, а затем останавливает восстановление, когда поток завершается.
Натравим эту утилитку на наш образ флешки и посмотрим, что получится.
Стартовый экран PhotoRec
Видим уже знакомый интерфейс, выбираем Proceed → Search → Other, указываем папку, куда сохранять (лучше ее создать заранее), жмем кнопку c. И ждем.
Выбор раздела Выбор типа файловой структуры Выбор папки назначения Процесс восстановления
В итоге получаем несколько папок с тысячами файлов в них.
Куча сохраненных файлов
Беглый осмотр показал, что какие-то файлы восстановились: и документы, и картинки, и исходники. Но нет ни имен файлов, ни даты их создания, ни структуры папок. Кроме того, как оказалось, на флешке была какая-то документация в виде страничек HTML с кучей мелких картинок. В связи с чем поиск ценных файлов занял бы не один час…
Да и, как указано на врезке, фрагментированные файлы или не восстановились, или повреждены (обрезаны).
Видимо, придется напрячь все свои силы и руками восстановить структуру FAT32.
Чиним FAT32
Для восстановления структуры FAT32 надо внимательно почитать документацию, вычислить значения ключевых параметров, а затем внести их в загрузочную запись FAT32. Кратко суть структуры FAT32 изображена на рисунке.
Сюда входит загрузочный сектор, структура 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). Поищем ее.
Поиск сигнатуры
Нам повезло — такая сигнатура нашлась. Значит, повреждена только первая копия таблицы FAT и мы можем скопировать данные второй таблицы в первую. Конечно, стоит помнить, что если флешка была отключена внезапно, то вторая копия может не полностью совпадать с первой (в нее просто не успели сохраниться изменения). Но все же мы сможем восстановить больше данных, чем при помощи только PhotoRec. Как минимум получим дополнительно имена файлов, даты их создания, корректные цепочки для фрагментированных файлов и даже структуру директорий.
Смотрим адрес — 0x8AE400. Это адрес начала второй копии таблицы. Теперь надо вычислить длину самой таблицы. Можно, конечно, руками полистать дамп, пока не заметим данные корневой директории. Но есть вариант попроще. Поскольку это две копии, то и запись, с которой начинается кусок первой копии таблицы, должна быть и во второй копии. А разница между ними и будет размером!
Поищем последовательность 01 76 0A 00, которую мы видели вначале, когда воспользовались hexdump. Быстро начинают находиться варианты. Остановим поиск нажатием ESC — нас интересуют первые два вхождения.
Первое вхождение последовательности
Первое вхождение (адрес 0x400000) — первая уцелевшая запись в первой копии FAT. Перед ней затертое пространство.
Второе вхождение последовательности
Второе вхождение (по адресу 0xB4BC00) — эта же запись во второй копии FAT. Перед ней мы видим сохранившиеся данные цепочек.
Вычислим размер таблицы FAT: 0xB4BC00 – 0x400000 = 0x74BC00 байт. Следовательно, если вычтем этот размер из адреса начала второй копии таблицы, то получим адрес начала первой копии: 0x8AE400 – 0x74BC00 = 0x162800.
Итак, у нас есть смещение начала таблиц FAT. Теперь надо найти адрес начала раздела. Согласно данным в спецификациях и статьях, приведенных во врезке, обычно первая копия таблицы начинается с 32-го сектора. Сектора, напомню, по 512 байт, значит, начало раздела должно находиться по адресу 0x162800 – 32 * 512 = 0x15E800.
Кстати, зная размеры таблиц и смещения их начала, можем найти адрес начала корневой директории.
Смещение корневой директории равно 0x15E800 + 32 * 512 + 2 * 0x74BC00 = 0xFFA000. И начинается она записью Transcend, что, очевидно, является меткой раздела.
Отлично. Смещения таблиц, корневой директории и адрес начала раздела знаем, осталось придумать, что записать в загрузочную запись. Можно сидеть и читать спецификации, высчитывая каждое значение. А я предлагаю сделать ход конем! Создаем пустой файл размером с раздел. Далее мы его форматируем в FAT32. Затем копируем первые 32 сектора в наш образ — и готово! 🙂
Попробуем воплотить этот план в жизнь.
Создаем загрузочную запись
Для начала определим размер раздела.
Размер раздела равен равен размеру флешки минус смещение раздела. Получается 15 676 211 200 – 0x15E800 = 15 674 775 552 байта.
Чтобы не занимать кучу места на диске нашим пустым образом, воспользуемся фишкой файловой системы ext2 — разреженными файлами.
Откроем файл в 010 Editor. И воспользуемся шаблоном Drive (возможно, его потребуется установить, см. меню Templates Repository). Если появится окошко с предупреждением о долгой работе, соглашаемся на продолжение работы скрипта.
Смотрим сгенерированный образ Разбор полей образа Разбор полей BPB
Прекрасно! Теперь у нас есть заполненные структуры загрузочного сектора. Надо бы их перенести в наш образ.
Выделяем мышкой структуру FAT_BOOTSECTOR в окне Templates Results, автоматически выделится диапазон данных, скопируем их в буфер (щелкнуть правой кнопкой мыши в окне данных и выбрать пункт Copy).
Собираем чудовище Франкенштейна
Для сборки образа вставим сгенерированный загрузочный сектор и скопируем вторую копию FAT поверх первой.
Начнем с вставки загрузочного сектора. Он у нас уже в ОЗУ. Перейдем на вычисленный адрес 0x15E800 и вставим данные из буфера.
Вставленные данные
Выясняется, что после сектора идут байты 0xFF, а в сгенерированном образе после этого сектора есть еще данные.
Сгенерированный образ
Непорядок. После первого сектора ведь идет структура FSInfo! Да и по смещению 0xC00 находится копия загрузочного сектора (на случай его повреждения). Нет, лучше скопируем все 32 сектора (0x4000 байт). Кстати, заодно убедились, что в образе, сгенерированном mkfs, по смещению 0x4000 будет последовательность F8 FF FF FF. После вставки в наш образ мы оказались по адресу 0x162800, который ранее и рассчитали. Пока все совпадает.
Теперь нам надо скопировать вторую копию FAT поверх первой. Выделяем участок длиной 0x74BC00 с адреса 0x8AE400, копируем его и вставляем по адресу 0x162800. Для выделения участка удобно воспользоваться фичей Select Range (Ctrl + Shift + A) — просто введем в поля адрес и размер.
Корневая директория
После вставки оказались в начале корневой директории. Пока все сходится.
Теперь нам бы смонтировать этот раздел и посмотреть, что удастся с него считать.
Читаем данные
Для монтирования файловой системы выполним следующие команды.
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).
Вывод fdisk
Обращаю внимание, что fdisk определил наличие по этому смещению раздела с FAT32 (vfat) и спросил, не удалить ли. Кроме того, не забываем поменять тип раздела на W95 FAT32 (LBA) (код 0c).
Работа над ошибками
Поиск ошибки занял у меня где-то час, в течение которого я активно курил спецификации и сверял значения в структурах, разобранных шаблоном Drive в 010 Editor. Вкратце опишу свои поиски.
Скриншот полей 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 не дают хороших результатов, то не стоит отчаиваться и надо попробовать восстановить данные с флешки с использованием головы и прямых рук. В итоге всей работы, которая суммарно заняла около двух часов, мы восстановили фактически все данные с «умершей» флешки, включая структуру директорий и всю метаинформацию.
Кроме того, крайне рекомендую делать бэкапы как можно чаще. Как образов, с которыми работаешь при восстановлении, так и важных данных на своих собственных флешках, чтобы не приходилось их восстанавливать. Ведь, как известно, люди делятся на две категории: на тех, кто еще не делает бэкапы, и на тех, кто уже их делает.
Источник
Мир Linux притягателен и полон различными вариантами того, как ваше знакомство с ним завершится. Например, вы можете психануть, удалить с жесткого диска Linux-дистрибутив, чтобы вернуться на любимую пиратскую версию Windows. И вот, вы вставляете флэшку в USB-порт другого ПК или ноутбука, чтобы записать собранный на коленке образ UberAlesWindowsMegapackISO от какого-нибудь прыщавого школьника и… Гадкая Linux даже тут смогла испортить вам малину, так как флэшка в Windows не читается, не определяется и вообще не подает признаков жизни. Неужели злобные линуксоиды сломали ее?
Различные файловые системы в Windows и Linux
Главная проблема того, почему ваша флэшка не читается и не определяется в Windows состоит в том, что при записи установочного образа Linux-дистрибутива программа изменила файловую систему USB-накопителя и разделила его на разделы, которые Windows прочитать не может.
Если упростить, то Windows привычнее работать с файловой системой NTFS, тогда как Linux связана с Ext4 или BTRFS. Есть, правда, и общая для них файловая система FAT, которую поймет, как Linux-дистрибутив, так и Windows.
Так что флэшка после экспериментов с Linux просто имеет иную файловую систему, из-за чего не желает работать в творении от Microsoft. Никакого злобного плана по умышленному уничтожению флэшэк среди разработчиков дистрибутивов нет. Наверное…
Основы разметки диска при установке Linux-дистрибутивов
Очищаем флэшку
Чтобы восстановить флэшку нужно использовать, ВНЕЗАПНО, командную строку. Как видим, даже после попытки бегства мир Linux настигает вас. Открываем меню Пуск и вводим Powershell или CMD. Запускать их нужно от имени Администратора. В открывшейся консоль вводим команду:
diskpart
Это запустит консольную утилиту для работы с разделами жесткого диска, которая появилась в семействе Windows NT с Windows 2000. Далее нам нужно увидеть список подключенных устройств:
list disk
В выводе отобразится перечень имеющихся дисковых устройств, каждое из которых будет иметь номер. Определить нужное устройство можно по размеру. После флэшку нужно выбрать:
select disk <номер_диска>
Последней командой в терминале будет очистка выбранного диска:
clean
После окончания можете закрывать командную строку и переходить к привычному пользователям Windows графическому интерфейсу.
Восстанавливаем работоспособность флэшки
Для выполнения дальнейших операций понадобится утилита «Управление дисками». Разработчики Windows 10 и 11 оказались настолько талантливыми, что запихнули этот пункт хрен пойми куда, потому для открытия утилиты воспользуемся сочетанием клавиш Win + R и в открывшемся окне введем:
diskmgmt.msc
Команда запустить службу управления разделами жесткого диска. В ней нужно найти нужную флэшку, кликнуть по ней ПКМ и создать новый раздел. Процесс добавления раздела прост донельзя и включает в себя выбор буквы, под которой флэшка будет определяться в системе, файловой системы и метки (т. е. названия устройства). После всех этих процедур начнется процесс создания на флэшке раздела. Скорость выполнения будет зависеть от объема флэшки и скорости работы USB-порта.
Надеюсь, что инструкцией этой вы будете пользоваться лишь для того, чтобы на восстановленную флэшку со временем записать образ дистрибутива Linux и попробовать перейти на него еще раз. Ведь почему не получалось раньше?
Потому, что вы не были читателями и подписчиками канала Просто Код, где есть содержательные и интересные материалы по переходу с Windows, рекомендации по замене софта и уроки по работе с Linux. Так что подписываемся, комментируем и ставим лайки!
5 причин перехода с Windows на Linux
5 советов желающим перейти на Linux
Выбираем Linux-дистрибутив для новичка
Заменяем Windows-программы: подборка софта для Linux
Гейминг на 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 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 и для любого софта. Именно этим свойством я и пользуюсь для создания под линуксом образов флешек с программными глюками, наглухо вешающими винду.
Содержание
- 1 Как «вылечить» поврежденный USB-накопитель в Linux?
- 2 Удаление бэд-блоков с USB-накопитель с помощью fsck
- 3 Полная очистка
- 4 Как восстановить запоротую флешку? — General — Форум
- 5 программный ремонт usb flash накопителей в linux — ProLinux
Как «вылечить» поврежденный 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
Читайте также:
Восстанавливаем удаленные текстовые сообщения на Android-телефоне
Создание новой файловой системы
Очистка флэшки (или любого другого накопителя) делает все записанные данные на ней бесполезными. Это значит, что нужно создать новый раздел данных. Выберите желаемую файловую систему и введите соответствующую команду:
Fat32
sudo
mkfs.msdos -f 32 /
dev/
sdc1Ext4
sudo
mkfs.ext4 -f /
dev/
sdc1NTFS
sudo
mkfs.ntfs -f /
dev/
sdc1
Заключение
USB-флэшки – полезные девайсы. С ними легко переносить данные с одного компьютера на другой вне зависимости от установленной ОС. Вот почему важно знать, что делать, если флэшка вдруг стала недоступной. К счастью у Linux есть мощные инструменты, способные легко «вылечить» флэш-накопитель.
Free Download WordPress Themes
Premium WordPress Themes Download
Download WordPress Themes
Free Download WordPress Themes
online free course
download coolpad firmware
Download Premium WordPress Themes Free
Как восстановить запоротую флешку? — General — Форум
Форум — General
Был вчера в стоматологии, выгружали КТ снимки с флешки, а после повторного включения в USB, у них в компе выдавало, мол, надо флешку отформатировать.
Ну ладно, сказал я, дома разберусь.
Пришел домой и о ужас, флешка не читается.
Вот, что выдает fdisk -l
~$ sudo fdisk -l [sudo] password for lexxus: Disk /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xd488d871 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 1953521663 1953519616 931,5G 7 HPFS/NTFS/exFAT Disk /dev/sdb: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x000d314d Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 1761032191 1761030144 839,7G 83 Linux /dev/sdb2 1761034238 1953523711 192489474 91,8G 5 Extended /dev/sdb5 1936812032 1953523711 16711680 8G 82 Linux swap / Solaris /dev/sdb6 1761034240 1936812031 175777792 83,8G 83 Linux Partition table entries are not in disk order. Disk /dev/sdc: 7,4 GiB, 7910457344 bytes, 15450112 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
/dev/sdc — это и есть моя флешка. Как её восстановить, чтобы она начала читаться. У меня там личные файлы. :(((
P.S. Ну или хотя бы, как её форматнуть, т.к. partionmagic (из KDE) её не видит тоже 🙁
~# hdparm /dev/sdc /dev/sdc: SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 multcount = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 1021/244/62, sectors = 15450112, start = 0
программный ремонт usb flash накопителей в linux — ProLinux
Довольно таки часто занимался программным восстановлением usb flash накопителей на Windows
, ну и заинтересовался как можно это реализовать на Linux
. Как раз под рукой лежала флэшка JetFlash TS4GJF160
на 4Gb, которая не хотела работать
И так для начала разберемся что же есть программный ремонт. В любой флэшке установлена микросхема-контроллер. Она отвечает за передачу данных между компьютером и флэш-памятью. В случае различных сбоев питания, неправильного извлечения и других причин – происходит сбой контроллера. В результате чего контроллер блокируется и не отвечает на запросы операционной системы. Также, блокировка может произойти из-за износа микросхемы памяти — появления дефектных блоков или превышения порога циклов записи (тогда контроллер сам метит блок как неиспользуемый и часто блокирует флэш на запись). И при попытке доступа к нему из операционной системы можно увидеть следующие сообщения «Вставьте диск» или «Нет доступа к диску», «Диск не отформатирован». Но при попытке отфарматировать выдается сообщение типа «Диск защищен от записи»
Так как же боротся с этим?! Весьма просто…
-
Вставляем usb flash накопитель в компьютер и определяем какое имя ему присваивается При подключении usb flash накопителя к компьютеру, Linux
присваивает ему имя типа sdX
(первому устройству присваивается sda
, второму sdb
и так далее. Но чтобы узнать какое имя он ему присвоил наверняка, используем 1 из способов:-
Набираем команду:
dmesg
Выведет следующее:
[ 1676.752097] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 1676.885083] usb 1-1: configuration #1 chosen from 1 choice [ 1676.886065] scsi6 : SCSI emulation for USB Mass Storage devices [ 1676.886393] usb-storage: device found at 2 [ 1676.886399] usb-storage: waiting for device to settle before scanning [ 1681.885333] usb-storage: device scan complete [ 1681.886555] scsi 6:0:0:0: Direct-Access JetFlash TS4GJF160 0.00 PQ: 0 ANSI: 2 [ 1681.887796] sd 6:0:0:0: Attached scsi generic sg3 type 0 [ 1681.892418] sd 6:0:0:0: [sdc] 8028160 512-byte logical blocks: (4.11 GB/3.82 GiB) [ 1681.893352] sd 6:0:0:0: [sdc] Write Protect is off [ 1681.893361] sd 6:0:0:0: [sdc] Mode Sense: 00 00 00 00 [ 1681.893368] sd 6:0:0:0: [sdc] Assuming drive cache: write through [ 1681.895713] sd 6:0:0:0: [sdc] Assuming drive cache: write through [ 1681.895725] sdc: sdc1 [ 1681.972724] sd 6:0:0:0: [sdc] Assuming drive cache: write through [ 1681.972738] sd 6:0:0:0: [sdc] Attached SCSI removable disk
Из этого всего нам нужна только 1 строка:
[ 1681.895725] sdc: sdc1
которая и говорит нам что присвоено имя устройству sdc1
-
Набираем команду:
sudo tail /var/log/messages
Выведет следующее:
Nov 13 22:25:33 espera kernel: [ 1676.752097] usb 1-1: new high speed USB device using ehci_hcd and address 2 Nov 13 22:25:33 espera kernel: [ 1676.885083] usb 1-1: configuration #1 chosen from 1 choice Nov 13 22:25:33 espera kernel: [ 1676.886065] scsi6 : SCSI emulation for USB Mass Storage devices Nov 13 22:25:38 espera kernel: [ 1681.886555] scsi 6:0:0:0: Direct-Access JetFlash TS4GJF160 0.00 PQ: 0 ANSI: 2 Nov 13 22:25:38 espera kernel: [ 1681.887796] sd 6:0:0:0: Attached scsi generic sg3 type 0 Nov 13 22:25:38 espera kernel: [ 1681.892418] sd 6:0:0:0: [sdc] 8028160 512-byte logical blocks: (4.11 GB/3.82 GiB) Nov 13 22:25:38 espera kernel: [ 1681.893352] sd 6:0:0:0: [sdc] Write Protect is off Nov 13 22:25:38 espera kernel: [ 1681.895725] sdc: sdc1 Nov 13 22:25:38 espera kernel: [ 1681.972738] sd 6:0:0:0: [sdc] Attached SCSI removable disk
Аналогично первой команде ищем среди последних строк:
Nov 13 22:25:38 espera kernel: [ 1681.895725] sdc: sdc1
-
Набираем команду:
mount | column -t
Имхо самый оптимальный вариант, выведет весь список смонтированных устройств и в самом конце видим следующее:
/dev/sdc1 on /media/A47B-0D0E type vfat (rw, nosuid, nodev, uhelper=udisks, uid=1000, gid=1000, shortname=mixed, dmask=0077, utf8=1, flush)
Думаю тут все понятно, /dev/sdc1
то что нам и нужно
-
-
Забиваем usb flash накопитель нулевыми байтами, набирая:
sudo dd if=/dev/zero of=/dev/sdc1
После чего нам выдаст следующее:
dd: запись в «/dev/sdc1»: На устройстве кончилось место 8028098+0 записей считано 8028097+0 записей написано скопировано 4110385664 байта (4,1 GB), 97,692 c, 42,1 MB/c
На ошибку можете не обращать внимание, мы же не указали необходимый размер
-
Форматируем usb flash накопитель, командой:
sudo fdisk /dev/sdc1
Выведет следующее:
Устройство не содержит ни верной таблицы разделов DOS, ни метки диска Sun, SGI или OSF Building a new DOS disklabel with disk identifier 0x1854766c. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. ... Предупреждение: неверный флаг 0x0000 таблицы разделов 4 будет исправлен записью ... WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). ... Команда (m для справки):
Создаем новый раздел, командой n
:Команда (m для справки): n Действие команды e расширенный p основной раздел (1-4) p Номер раздела (1-4): 1 Первый цилиндр (1-1019, по умолчанию 1): 1 Last цилиндр, +цилиндры or +size{K,M,G} (1-1019, по умолчанию 1019): 1019
Просматриваем что получилось, командой p
:Команда (m для справки): p ... Диск /dev/sdc1: 4110 МБ, 4110385664 байт 127 heads, 62 sectors/track, 1019 cylinders Units = цилиндры of 7874 * 512 = 4031488 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x1854766c ... Устр-во Загр Начало Конец Блоки Id Система /dev/sdc1p1 1 1019 4011772 83 Linux
Так как Linux
раздел нам никчему сменим его, командой t
:Команда (m для справки): t Выбранный раздел 1 Шестнадцатеричный код (введите L для получения списка кодов): l ... 0 Пустой 24 NEC DOS 81 Minix / ста bf Solaris 1 FAT12 39 Plan 9 82 Linux своп c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 скрыт c6 DRDOS/sec (FAT- 4 FAT16 41 PPC PReP Boot 85 Linux расш c7 Syrinx 5 Расшире 42 SFS 86 NTFS набор da Данные н 6 FAT16 4d QNX4.x 87 NTFS набор db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2-я ч 88 Linux plaintext de Dell Utility 8 AIX 4f QNX4.x 3-я ч 8e Linux LVM df BootIt 9 AIX загру 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 Boot-ме 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS фс e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 расши 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC 11 Скрытый 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 12 Compaq диаг 61 SpeedStor a9 NetBSD f4 SpeedStor 14 Скрытый 63 GNU HURD или ab Darwin загр f2 DOS втори 16 Скрытый 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 Скрытый 65 Novell Netware b7 BSDI фс fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI своп fd Автоопр 1b Скрытый 75 PC/IX bb Boot Wizard с fe LANstep 1c Скрытый 80 Old Minix be Solaris заг ff BBT 1e Скрытый Шестнадцатеричный код (введите L для получения списка кодов): 6 Системный тип раздела 1 изменен на 6 (FAT16)
Смотрим результат, командой p
:Команда (m для справки): p ... Диск /dev/sdc1: 4110 МБ, 4110385664 байт 127 heads, 62 sectors/track, 1019 cylinders Units = цилиндры of 7874 * 512 = 4031488 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x1854766c ... Устр-во Загр Начало Конец Блоки Id Система /dev/sdc1p1 1 1019 4011772 6 FAT16
Ну и записываем таблицу разделов на usb flash накопитель, командой w
:Команда (m для справки): w Таблица разделов была изменена! ... Вызывается ioctl() для перечитывания таблицы разделов. ... WARNING: Re-reading the partition table failed with error 22: Недопустимый аргумент. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) ... ПРЕДУПРЕЖДЕНИЕ: Если вы создали или изменили какие-либо разделы DOS 6.x, пожалуйста, прочтите страницу руководства fdisk для получения дополнительной информации.
-
Форматируем usb flash накопитель, командой:
sudo mkdosfs /dev/sdc1
После форматирования в раздел FAT16
, выведет следующее:mkdosfs 3.0.7 (24 Dec 2009)
Команда для форматирования в FAT32
:sudo mkdosfs -F 32 /dev/sdc1
-
После выполнения этих пунктов, в WinXP usb flash накопитель выдал «Диск не отформатирован» и только после того как я отформатировал стандартными средствами Win все заработало
Вот вообщем-то и все… Удачи в восстановлении!)
Для дополнительной информации об устройстве, введите:
sudo hdparm /dev/sdb
Выведет:
/dev/sdb: HDIO_DRIVE_CMD(identify) failed: Invalid exchange readonly = 0 (off) readahead = 256 (on) geometry = 1024/0/62, sectors = 0, start = 0