Чтение дисков с поврежденной нулевой дорожкой.
- Подробности
- Категория: Полезные советы
- Создано: 26.05.2014 13:52
Как уже сказано, центральная область диска содержит нулевую дорожку, на которой записаны начальные адреса и длины всех дорожек, общая длина области данных и информация о каждом из сеансов записи. При ее повреждении диск вообще не распознается приводом.
Если микропрограмма привода обнаруживает, что при чтении оглавления диска возникли неисправимые ошибки, она обычно отказывает такому диску в дальней шей обработке. Несмотря на то, что содержимое TOC продублировано по всей спиральной дорожке, критически важной является именно читаемость нулевой дорожки. В результате после вставки диска дисковод продолжает «считать», что диска в нем нет. Индикатор готовности на передней панели, помигав, гаснет, и какие-либо дальнейшие действия невозможны.
ПРИМЕЧАНИЕ
Привод выдает в интерфейс служебные сообщения о своем состоянии. Эти сообщения (Error codes или Sense Codes) в шестнадцатеричном формате описаны стандартом MMC3. Так, например, код 2/3A/01 (Medium not present — tray closed) означает, что лоток закрыт, и диска в дисководе нет; код 3/11/00 (Unrecovered read error) — не исправимая ошибка чтения и т.д.
Всего таких кодов 40. Операционная система Windows, как правило, интерпретирует их обобщенно — как отсутствие диска в приводе, ошибку чтения или ошибку записи (обычному пользователю подробности не нужны). Истинные значения кодов демонстрируют некоторые программы, например IsoBuster, или служебные утилиты от производителей дисководов.
Все прикладные программы обращаются к приводу CD/DVD через его интерфейс. Если микропрограмма отказалась признать наличие диска в приводе, этого диска «не существует» ни для операционной системы, ни для программ — все они работают через интерфейс и микропрограмму дисковода. Нам же достаточно любым образом прочитать содержимое диска и хотя бы получить его посекторный образ. В дальнейшем из этого образа легко будет извлечь полезную информацию, но для начала нужно просто считать «сырую» последовательность блоков.
Для решения проблемы придется доработать сам привод. Устройство для чтения дисков с разрушенной служебной или нулевой дорожкой желательно делать из дисковода, который не жалко подвергнуть небольшому упрощению. Лучше всего для этих целей подойдет достаточно старый низкоскоростной привод — эти устройства обладали надежной механикой и оптикой, а их прошивки были довольно просты.
Воспользуемся тем обстоятельством, что для чтения диска на низком уровне таблица TOC не слишком нужна. Приводу требуются лишь три основных поля TOC:
-
стартовый адрес первой дорожки, чтобы знать, откуда начинать чтение;
-
адрес выводной области диска, чтобы знать, до каких пор можно перемещать каретку;
-
адрес следующей вводной области (только для многосессионных дисков).
Стартовый адрес для всех дисков одинаков — он всегда равен 00:02:00 по временному коду, что соответствует нулевому адресу LBA. Адрес Lead-Out (выводной области) напрямую зависит от объема диска. Однако достаточно, чтобы полученный микропрограммой адрес был не меньше действительного адреса выводной области этого диска, иначе все расположенные дальше сектора окажутся недоступными. Если установить адрес Lead-Out на 80 или даже 90 минут, есть гарантия, что вся поверхность диска будет доступна приводу. Наконец, после вставки диска данные TOC кэшируются в собственной памяти привода и сохраняются там до тех пор, пока диск не будет корректно извлечен.
Благодаря этому микропрограмму удается обмануть — сначала дать приводу распознать диск с исправной служебной областью, а затем подменить его испорченным диском! О том, что диск извлечен, а затем загружен новый, микропрограмма судит только по срабатыванию датчика лотка привода или нажатию кнопки из влечения диска. Достаточно извлечь нормальный диск, не нажимая кнопку и не вы двигая лоток, а затем точно так же вставить восстанавливаемый диск.
В качестве нормального диска проще всего взять любой CD-ROM с записанным на нем фильмом объемом около 700 Мбайт. В таком случае данные TOC этого диска подойдут к любому восстанавливаемому CD-ROM. Точно так же для восстановления диска CD-R понадобится «правильный» диск CD-R, а для CD-RW — аналогичный CD-RW.
Задача — сделать так, чтобы диски можно было загружать и извлекать без участия кнопки и лотка. Сама процедура модификации привода достаточно проста:
-
Разберите привод. Снимите верхнюю крышку и траверсу, на которой находится пластмассовый «пятачок» с магнитом, прижимающий диск к посадочной площадке шпинделя. Извлеките этот «пятачок» — им нужно будет фиксировать диск вручную.
-
Подключите привод к компьютеру. Включите компьютер. Желательно ограничить скорость вращения диска программным способом.
-
Откройте лоток штатной кнопкой. Затем закройте лоток, одновременно положив на шпиндель хороший диск и прижав его магнитным «пятачком».
-
Дождитесь, когда привод распознает диск и остановит его вращение. Осторожно снимите прижимной «пятачок», хороший диск и вставьте диск, который нужно восстановить.
-
Запустите одну из программ, рассмотренных далее, например, AnyReader или ISOBuster. Снимите посекторный образ диска этой программой.
Пользуясь кешированными данными TOC, привод благополучно начнет читать секторы подмененного диска. Открывать диск штатными средствами Windows бессмысленно — операционная система тоже кеширует данные о диске и будет искать на нем те файлы, которые были на первом, «правильном», диске!
Описанная методика не обязательно приводит к успеху, но взять ее на вооружение все же стоит. Если проблемный диск не удалось проинициализировать даже таким способом, остается признать, что наши возможности исчерпаны.