Содержание статьи
Все началось с того, что на столе у меня постоянно лежали две неработающие флешки. Одна отказывалась форматироваться, а другая вообще не хотела распознаваться в системе. Вроде и выбросить было жалко, но и толку от них ноль. Когда наконец появилась свободная минутка, удалось не просто восстановить их функциональность, но и сделать из одной из них удобнейший мультизагрузочный пендрайв для запуска разных и полезных LiveCD систем.
Как умирают флешки?
Функцией безопасного извлечения устройств и дисков, к которой с таким трепетом относятся многие пользователи, я не пользовался практически никогда. Дождавшись, пока светодиод флешки перестанет мигать (стало быть, процедура чтения-записи заканчивалась), я просто вытаскивал пендрайв из USB-разъема. Так я делал до тех самых пор, пока со словами «Да нафига оно нужно, это безопасное извлечение» я наспех вытащил флешку и успешно ее убил :). Вставив флешку в ноутбук, скопировать с нее уже ничего не получилось. Форматировать она отказывалась и вообще вела себя довольно странно, периодически не определялась в системе.
Самой частой причиной неполадок USB-флешек становится специальный контроллер, который отвечает за передачу данных между компьютером и флеш-памятью (о пендрайве в общем ты можешь прочитать во врезке). Но, что хорошо, проблема с контролером не означает, что единственным вариантом является его замена. Очень часто неполадка носит исключительно программный характер, и в таком случае работоспособность флешки вполне можно восстановить. Контроллером управляет микропрограмма (прошивка), которая, как и любая другая прога может заглючить, в первую очередь, из-за различных сбоев питания, как, например, в случае небезопасного извлечения устройства из USB-порта. В результате контроллер блокируется и не отвечает на запросы операционной системы. При подключении к компьютеру такой флеш-диск может опознаваться как «Неизвестное устройство», иметь формат RAW или, что тоже бывает, может быть виден в системе как диск с нулевой емкостью. Симптомы тех же самых проблем — сообщения «Вставьте диск» или «Нет доступа к диску» при попытке обратиться к флешке. К счастью, зачастую это можно поправить.
Прежде чем приступать к описанию процедуры восстановления, спешу предупредить: большинство из утилит, которые направлены на восстановление работоспособности флешки, форматируют накопитель на низком уровне. На деле это означает, что все данные с нее будут утеряны. Поэтому, если флешка перестала работать, а на ней — финальная версия диплома, который надо сдавать послезавтра, верный способ спасти данные — обратиться к специалистам. С помощью специального оборудования профи смогут вытащить данные, которые записаны во флеш-памяти устройства, даже если контроллер полностью умер.
В принципе, попытаться восстановить файлы можно и самому, воспользовавшись утилитами R-Studio (www.r-studio.com/ru) и PhotoRec (www.cgsecurity.org/wiki/PhotoRec). Причем есть шанс восстановить данные, как до восстановления нормальной работы контроллера, так и после. Но вернемся к нашей теме.
Приводим флешку в чувства
Чтобы восстановить работу контроллера и, соответственно, флешки в целом, необходимо найти сервисную утилиту, которая умеет разговаривать с ним на общем языке и уболтает его снова заработать. К сожалению, контроллеров очень много, и даже у одного производителя флешек микросхемы контролеров могут сильно отличаться. Выяснить, какой контроллер используется в умершей флешке, можно двумя способами: брутальным и деликатным. Первый означает, что корпус флешки придется вскрыть и посмотреть наименование контроллера (ты ведь уже прочитал врезку и разобрался, где там что?), которое нанесено на микросхеме. Добраться до внутренностей флешки не всегда просто, но зато это точно даст результат. Впрочем, обойтись можно и без этого, воспользовавшись вторым способом. Контроллер можно идентифицировать по кодам VID (идентификатор производителя) и PID (идентификатор модели устройства) и, что самое приятное, извлечь их можно прямо из операционной системы. Коды считываются с помощью любой из следующих утилит: ChipGenius, CheckUDisk, USBDeview, UsbIDCheck, и, если это удалось, значит шансы на восстановление флешки определенно есть. Следующий вопрос: что с этими кодами делать?
Пробить по специальной базе флешек iFlash на сайте www.flashboot.ru, информацию в которою заботливо занесли люди, которые профессионально занимаются восстановлением данных, и просто энтузиасты. Забиваем VID, указываем PID и нажимаем «Найти». Например, для моей флешки VID = 8086, PID = 3A37. Оказалось, что в флешке используется контроллер ALCOR, а в графе «Утилита» сразу предлагается несколько сервисных утилит, которые возможно помогут вернуть флешку в работоспособное состояние.
Подобрать сервисную утилиту можно и вручную; здесь, опять же, выручает flashboot.ru, а точнее, собранный там каталог сервисных программ. Как ты уже понял, для каждого производителя контроллеров — свои утилиты. Процедура восстановления сильно отличается, но, как правило, довольно проста. К счастью, с каждой утилитой обязательно прилагается пошаговая инструкция в стиле «нажми это, выбери то, подожди, получи работоспособную флешку». Последовательность действий, чтобы оживить контроллер, очень проста. Главное здесь — правильно выбранная сервисная утилита.
LiveCD
В результате описанных телодвижений были без проблем восстановлены обе флешки. Только зачем они мне? 🙂 Поскольку для переноса файлов я давно не пользуюсь флешками (Dropbox решает все проблемы), было решено сделать из флешки что-нибудь полезное. Старая идея заключалась в том, чтобы превратить пендрайв в мультизагрузочный гаджет сразу с несколькими ОС. Когда-то давно я записал USB-версию Backtrack’а и всегда брал ее с собой, чтобы в любом месте всегда иметь под рукой полезные утилиты и полноценный Linux. Если сделать флешку мультизагрузочной, то можно не привязываться лишь к одной системе, а, используя нынешние объемы, запихнуть туда сразу несколько полезных LiveCD. Тем более, помимо загрузочных версий обычных десктопных Linux’ов (Fedora, Ubuntu и прочих) есть целый ряд специализированных инструментов, основанных на этой самой технологии:
- Dr.Web LiveCD (www.freedrweb.com/livecd), F-Secure Rescue CD (www.f-secure.com), Kaspersky Rescue Disk (support.kaspersky.ru/viruses/rescuedisk) и другие дистрибутивы с антивирусом на борту стали любимым средством, чтобы удалить малварь из системы, особенно если речь идет о блокираторе.
- Ophcrack (ophcrack.sourceforge.net) и NTPasswd (home.eunet.no/pnordahl/ntpasswd) позволяют очень быстро сбросить пароль администратора или любого другого локального пользователя, а также добраться до реестра системы без загрузки винды.
- Parted Magic (partedmagic.com) и GParted (gparted.sourceforge.net) ничуть не хуже, чем коммерческий Partition Magic, работают с разделами жесткого диска.
- Memtest86+ (www.memtest.org) и MHDD (www.ihdd.ru/mhdd) являются чуть ли промышленными стандартами для проверки соответственно оперативной памяти и жестких дисков на наличие ошибок.
Этот список можно продолжать, благо, платформа LiveCD, и этого не отнимешь, действительно располагает к появлению подобных специализированных инструментов. Разумеется, записывать на диск (фууу!) ничего не нужно, ведь есть очень простая утилита UNetbootin (unetbootin.sourceforge.net), предоставляющая удобный интерфейс для создания загрузочных флешек из ISO-образов. Плюс в том, что у нее есть огромная база разных LiveCD, и она знает, что с ними делать.
Поэтому нужно лишь выбрать флешку, указать путь до нужного ISOобраза, а также выбрать тип и версию дистрибутива. Все, дальше программа справится с задачей сама, и с пендрайва сразу можно будет загружаться. Но «одна флешка — один дистрибутив» — это не так интересно. Сделать флешку сразу со всеми этими инструментами — вот то, чего бы мне захотелось.
Мультизагрузочная флешка
Чтобы иметь возможность выбирать ОС, которую мы хотим грузить, нам потребуется загрузчик. Хорошим вариантом является grub4dos (code.google.com/p/grub4dos-chenall) от наших китайских друзей. В скачанном архиве ты увидишь много разных файлов, но нам потребуется только непосредственно файл загрузчика: grldr. Правда, если просто скопировать его на флешку (и это надо сделать обязательно), то ничего не получится — необходимо еще прописать загрузчик в MBR флешки.
С этим справится специальная утилита grubinst (download.gna.org/grubutil). Необходимые действия можно было бы выполнить через консоль, но мы воспользуется GUI-интерфейсом программы. Все опции рекомендую оставить по умолчанию, и единственное, что сделать — это выбрать нашу флешку в поле Disk. Если окажется, что прога не находит флешку или вообще дисков, запусти ее с правами Администратора, это поможет. Небольшая сложность возникает в том, что найденные диски программа обозначает не совсем понятным образом: hd1, hd2 и т.д. Будь внимателен: если неправильно выбрать диск, вполне можно записать MBR на свой жесткий диск и создать себе проблемы в виде испорченного загрузчика. Чтобы этого избежать, советую запустить утилиту без флешки и посмотреть список дисков. А потом, вставив флешку, нажать на кнопку «Refresh» и выбрать появившийся в списке диск.
Объем, указанный в квадратных скобках, должен совпадать с объемом раздела на флешке. Перепроверив все еще раз, нажимаем на кнопку «Install» — все, загрузчик прописан в MBR. Уже сейчас можно попробовать перезагрузиться; во время загрузки должна появиться консоль загрузчика. Правда, на флешке пока больше ничего, и толку от него мало, но это исправимо.
Китайцы очень плотно занимаются развитием grub4dos, поэтому у загрузчика есть немало интересных опций. Одна из наиболее приятных — это возможность загрузки LiveCD-системы прямо из ее ISO-образа. В результате наша задача приобретает вполне понятное решение:
- Записать все необходимые ISO’шки на флешку.
- Создать в корне флешки специальный файл menu.lst — это конфиг grub4dos, в котором описываются пункты меню для загрузки. Через это меню во время загрузки с флешки будет осуществляться выбор ОС.
- Добавить в menu.lst описание всех систем, которые мы хотим загружать.
Симбиоз своими руками
Для примера покажу, как сделать мультизагрузочную флешку из двух дистрибутивов: Memtest86+ для проверки оперативной памяти на ошибки (первый инструмент, если система непредсказуемо перегружается) и Offline NT Password & Registry Editor для сброса пароля в Windows и редактирования реестра без загрузки винды. Начнем с того, что создадим на флешке каталог iso, и поместим скачанные с официальных сайтов ISO-образы дистрибутивов в папки memtest и ntpasswd. Далее создадим на флешке menu.lst и добавим в конфиг два пункта для выбора ОС:
title Memtest
map (hd0,0)/iso/memtest/mt410.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
boot
title Offline NT Password & Registry Editor
map (hd0,0)/iso/ntpasswd/cd100627.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
boot
Название пункта меню задается через ключевое слово Title, а путь до ISO указывается с помощью слова map. По сути, все готово. Теперь можно вставить флешку в компьютер и пробовать перезагрузиться. Если в БИОСе установлена загрузка с USB-накопителя, то очень скоро ты увидишь меню загрузчика grub4dos с выбором только что настроенных ОС. Аналогичным образом можно прописать образы любых других LiveCD-дистрибутивов: Backtack, Ophcrack, Kaspersky Rescue Disk и каких угодно еще. В некоторых случаях при загрузке системы может выскакивать ошибка.
Скорее всего, это связанно с тем, что ISO-образ является фрагментированным. Придать ему должный вид поможет GUI-утилита WinContig (wincontig.mdtzone.it/en).
Возможности grub4dos позволяют реализовать самые изощренные комбинации загрузки, это хорошо описано в русской документации (greenflash.su/Grub4Dos/Grub4dos.htm). Но если не хочется заморачиваться даже с составлением menu.lst, есть вариант вообще не ковыряться в конфигах. Рецепт прост — воспользоваться специальной утилитой MultiBootISOs (www.pendrivelinux.com/bootmultipleiso-from-usb-multiboot-usb). Утилита записывает на флешку специальный бутлоадер на базе Syslinux и grub4dos, который автоматически конфигурирует меню для загрузки в зависимости от ISO-образов, которые записаны на флешке. Все реализовано настолько просто, что от тебя потребуется лишь положить ISO’шки в специально заготовленные на флешке каталоги с названиями систем, которые MultiBootISOs заботливо создаст во время инсталляции.
Решение изначально поддерживает LiveCD-версии обычных дистрибутивов Linux (Ubuntu, Fedora, OpenSUSE и т.д.), но также совместимо с нашими специализированными системами: GParted, Ophcrack и т.д. Можно даже записать на флешку инсталляционный диск Windows 7. Главное помнить, что для такой увесистой подборке придется выделить флешку на 8, а еще лучше — 16 Гб.
Флешка Inside
Любая флешка — это очень простой девайс, состоящий всего из нескольких элементов. Самая большая микросхема — это контроллер, он отвечает за взаимодействие компьютера и памяти флешки. Другим важным компонентом является микросхема энергонезависимой NAND памяти, в которой и хранятся все данные с флешки. Эти компоненты размещены на плате с миниатюрными проводными дорожками вместе с USB-разъемом, стабилизатором питания и кварцевым резонатором.
1 — USB-коннектор, 2 — контроллер, 3 — место для подключения тестового обору- дования (во время производства) , 4 — чип постоянной памяти, 5 — кварцевый гене- ратор, 6. — светодиод, 7 — переключатель режима "только чтение", 8 — место для установки дополнительного чипа памяти.
VID и PID не извлекаются!
Некоторые программные сбои контроллера приводят к тому, что винда не может опознать подключенное устройство. Верный симптом — сообщение «Устройство USB не опознано» в момент подключения флешки. При этом при попытке считывания VID и PID один из них или сразу оба оказываются равны 0000. Это происходит, потому что микропрограмма контроллера не может считать часть прошивки, которая расположена в специальной области микросхемы памяти.
В такой ситуации можно попробовать перевести контроллер в так называемый тестовый [a1] путем замыкания определенных выводов микросхемы памяти. У микросхемы множество выводов («лапок»), нумерация которых идет против часовой стрелки с того места, которое отмечено специальной точкой. Схема действий следующая:
- Перед включением флешки в USB-порт нужно замкнуть между собой 29 и 30 выводы микросхемы памяти с помощью иголки. Стоит сказать, что, в зависимости от микросхемы, выводы, которые необходимо замыкать, могут отличаться и быть следующими парами: 30-31, 31-32, 41-42, 42-43, 43-44. Можно попробовать поэкспериментировать, либо отыскать документацию. Но учти: замыкать выводы обязательно нужно очень осторожно, чтобы случайно не попасть на вывод, который питает микросхему памяти.
- Не размыкая контактов, необходимо вставить флешку в USB-порт. Как только система сможет определить носитель и установит драйвера, выводы надо разомкнуть. С этого момента можно приступать к восстановлению флешки с помощью способа, описанного в статье. Если же замыкание не приводит к положительным результатам, вероятно, микросхема повреждена, и программными способами ее не восстановить.