Добрый день!
Дали на ремонт комп... Сдуру включил в BIOSе SMART, после чего винт Maxtor Fireball 3 стал определяться как ARES C64K. Данные винта:
Maxtor Fireball 3
2F030J0310211
VAM51JJ0
KMCA
A8FFA (над IDE-разъемом)
Нужна инфа с винта (архив фоток хозяев этого компа). Ремонтника нашел (hdd-911.com), но пока есть надежда, что сделаю сам. Понимаю, что надежнее отдать в ремонт, но пока ищу инфу по форумам, на винт ничего не пишу...
PC3000 v.14, pcmx_pkr v.2.01 (более свежей не нашел, кстати, может кто поделится??)
Проверка служебки:
# PN UBA Size Rd ChkSum Id Comment -------------------------------------------------------------------------------- 20 18 0029 0004 - - - AT_PDL - P-List 25 1D 02A0 0002 - - - DMCS - таблица кэширования 35 30 018B 0001 - - - SMART Attributes - атрибуты SMART 41 41 018D 0002 - - - 45 45 018F 000C - - - 68 63 018C 0001 - - - Копия SMART атрибутов 77 70 0356 0001 - - - SMART Summary Log
Соотв. этим модулям файлы имеют расширение .BAD. В группах модулей соотв. места заполнены строкой "BAD!", причем в обоих копиях (в DMCS - оба сектора, в AT_PDL - первые 4 сектора BAD, потом нули). Вычитывание с игнорированием ошибок ничего не дает.
Еще есть модули (кроме этого списка), у которых не в порядке только CRC.
Оверлеи в порядке. Дефектов в служебке нет. Тест записи в служебку проходит (смещение: 0). Ресурсы с винта предварительно слил.
Почитав форумы и доки, пришел к выводу, что нужно восстановить только AT_PDL и может быть DMCS. Определил следующую последовательность действий:
1. Запускаем DOS.
2. Подаем питание на винт (перемычка установлена в safemode).
3. Запускаем эмулятор, затем pcmx_pkr.exe.
4. Загружаем лоадер (в режиме ПЗУ+модули).
5. "Стандартный режим".
6. Прописываем модули AT_PDL и DMCS от другого винта.
7. Выходим из программы, выключаемся, запускаем все заново (пп. 1-5).
8. Запускаем пересчет транслятора. Модули транслятора (в т. ч. AT_PDL) будут пересобраны из 33-го модуля (он в порядке).
Вопрос 1. Это правильная последовательность действий? Может чего-то не хватает, или наоборот лишнее? Данные на винте останутся?
Вопрос 2. Могу ли я использовать текущий лоадер (ес-но, это лоадер от другого винта)? Или прохождение теста записи служебки однозначно показывает, что лоадер подходит?
Вопрос 3. Меня смущает, что PC3000 выдает, похоже, не полную информацию о винте.
Верхняя строка. MODEL: MaxtorARES C64K VAM51JJ0 CYL:-1 HEAD:1 SEC:0
Нижняя строка. STATE: DONE: LBA: ERRS: (все пусто)
В строке флагов "красных" битов нет.
Это нормально?
P.S. Вчера угробил свой старый Calypso 6Y080L0, на котором экспериментировал. Кушает некоторые лоадеры, но в них (в тех, что пробовал) не идет тест служебки, проверка служебки показывает нечитаемость большинства модулей, а также ПЗУ и оверлеев. Ресурсы с него все есть, но свой лоадер тоже почему-то не кушает... Ес-но, инфы на нем ценной нет, но теперь вдвойне аккуратен, выверяю каждый шаг.
Сделал очистку P-list&G-list, сразу вывалилось сообщение об ошибке. Но после этого винт стал определяться нормальным именем (в т.ч. в БИОСе)!! Появились нормальные номера цилиндров (мин/макс 376/83911) в логе и в верхней строке аси.
Некоторые изменения в служебке:
Изменилась RZTBL. Изменились UBA некоторых модулей - 3-х Tbl_55AA и "OPTI - настройки SelfScan". Сами модули тоже изменились. P-list (AT_PDL) - контр. сумма ОК, сам AT_PDL очистился, по крайней мере 768 байт из 1024. P-list (список) - как в прошлый раз (понятно, он берется из 33 модуля). G-list (AT_POL) обнулен, G-list (список) ес-но пустой. U_LIST - по сравнению с родным изменен. DMCS - по сравнению с чужим изменен. Модуль 33. Измененные сектора 33-48 остались + изменились несколько байт чуть дальше. SMART Attributes - изменился 1 байт
Появилась мысль сделать посекторную копию винта с помощью dd_rescue (вместо бэдов будут нули). Потом пробовать пересчитать транслятор. Если что-то не пойдет, будет хотя бы образ. Родные P-list и G-list есть - в теории можно будет пропустить/заменить эти участки (правда конечно слабо еще это себе представляю)...
1. Как вам такая идея? Я ничего не сломаю, если загружу линукс и сделаю посекторную копию? Линуха по идее не должна писать на винт?
2. То, что съехали UBA некоторых модулей - это связано с RZTBL? Или это не есть хорошо?
В PC3000-UDMA есть выбор, технологической командой выполнять (аппаратно) или средствами утилиты (программно).
В досовской версии уже не помню, как делается, лет 5 не пользовался.
По p-listу и образу - теоретически можно, а вот практически...
Надо по CHS дефекта вычислить LBA, затем его выкусить из образа со сдвигом "хвоста" на один этот сектор. Если есть скрытый трэк, сдвигать надо на длину этого трэка. В общем - задача весьма нетривиальная.
Насколько знаю линукс, при загрузке он пытается подмонтировать том, а затем пустить проверку файловой системы.
Я в таких случаях пользую голый дос и dfsee для dos. Медленно, правда.
Похоже, винт 33-й модуль не считывает правильно. Эти сектора, которые изменились лежат на сбойном участке, который плохо читается. Не зря винт при попытке очистить P-List дал ошибку. Попробуй проверить поверхность по этому модулю (группе). Если при проверке притормаживает на этом месте - возможно плохо читает.
Никто ничего не пытается монтировать, пока явно не указывается точка монтирования. Во всяком случае в нормальных дистрах.
Уважаемые коллеги, в переписке с нашими англоязычными партнерами помните: whether - который, weather - погода, wether - кастрированый баран!
У некоторых людей торс - это просто разветвитель, позволяющий подключить руки и голову к заднице.
Если ты имеешь в виду, что исключена целая дорожка и допустим часть следующей... В таблице P-list кроме CHS еще есть длина. И по-моему (судя по докам) в этом случае в таблице просто будет одна запись с увеличенной длиной вместо двух (одна - для целой дорожки и одна - для части следующей) для экономии таблицы. Так что тут проблемы не вижу. Или ты другое имел в виду?
Да и у меня, судя по родному п-листу, такого нет.
А вот другой вопрос интересный... Внутри винт работает по CHS, а по интерфейсу - по LBA, так? Т.е. приходит запрос на некий LBA, а винт выполняет трансляцию LBA->CHS. При этом нужно Число секторов на дорожке, которое в разных зонах диска разное, поэтому оно берется из RZTBL, так? У меня RZTBL изменилась. Т.е. винт может переходить на следующие дорожки позже/раньше, чем надо. Т.е. если я сейчас сниму образ, некоторые сектора возможно будут пропущены/лишние? Или еще хуже - что-нибудь заглючит. Получается, перед снятием образа надо вернуть родную RZTBL? Ответьте кто знает плиз!
По G-list'у... Я могу прочитать резервную область (после макс. LBA), чтобы потом в образе заменить дефектные сектора, скрытые в G-list'е? (Понятно, что G-list некритичен для данных.)
По переводу CHS->LBA подскажите кто знает (саму формулу я нашел)... Вот фрагмент P-list'а:
Почему номер сектора - 0? Я вообще читал, что он может принимать значения 1-63. Или это только при старой CHS-адресации через интерфейс (через регистры IDE)?
И в целом по винтам такой вопрос, не нашел. Вот у меня в строке статуса аси показывается мин. цилиндр = 376, макс. = 83911. Смотрю лог служебки, таблицу зон (номера цилиндров):
Область данных, доступных пользователю - это цилиндры 376-83911?
Резервная зона - после 83911?
Где служебка - на цилиндрах 316-375?
Что находится перед цилиндром 316?
Не выдумывайте, голову сломаете...
В резервной зоне тоже могут быть дефекты.
Нужно потом просто вернуть, если сохранился, родной G-лист. а на нет и суда нет.
Формулы LBA>CHS нет.
Есть транслятор (таблица), как раз для этого преобразования. И команды которые возвращают запрошенное значение LBA или CHS соответственно.
У вас одна голова у HDD, а у многоловых LBA идут змейкой, вперед-назад по разным головам. Не знаю как на Аресе, но на многих хардах зоны не попорядку, а по уменьшению плотности привязаны к LBA. Есть и еще всякие подводные камни, например, цилиндры оставленные для самотестирования, которые вобще в других таблицах (не в листах дефектах), но учтенные в трансляторе.
Если транслятор не родной, то разобраться между реальностью и тем что видишь вобще невозможно. Если б в каждом секторе хранился его адрес по LBA, только тогда, а такого нет.
Просто я не знаю, что будет с винтом дальше, поэтому я и хотел вытянуть хоть что-то, пока он определяется в БИОСе... Мне ведь данные с него нужны.
Ну что, тогда делаю так:
1. Заливаю родной 33.
2. Пересчет транслятора.
3. Заливаю родной G-list (AT_POL).
Я прав?
Я прав?
По идее - да. Другого пути всё равно нет. Смущает только то, что при пересчёте транслятора винт давал ошибку. Впрочем, в нормальном режиме может всё пройти хорошо.
В принципе, могу попробовать на своём максторе и посмотреть, что получится.
Отправить комментарий