Лоадеры для жестких дисков Seagate
Жесткие диски Seagate, особенно после того как компания скупила ХДД подразделение Самсунг - частые гости в лаборатории по восстановлению информации. Проблемы самые разнообразные, - горелые платы, вышедшие из строя головки чтения\записи, запилы на поверхности, клин мотора, залипания головок и слетевший микрокод. Полный ассортимент, одним словом. Сегодня я бы хотел осветить процесс ремонта и восстановления жестких дисков Seagate с помощью так называемого лоадера, т.е. пакетной микропрограммы, разработанной компанией Seagate для апдейта фирмвари. Способ этот может применяться для восстановления дисков, у которых проблема с той или иной частью микропрограммы, что может выражаться общим симптомом - при подаче питания диск на слух рекалибруется, но не дает готовность в регистрах. Либо есть готовность, но нет доступа к пользовательской области. В диагностическом терминале может быть все, что угодно, от мега-простынь до пустоты.
Например, жесткий диск ST31000333AS, семейства Brinks с версией микропрограммы LC15. При подаче питания циклически рекалибруется, выдавая в диагностический терминал:
Rst 0x20M
(P) SATA Reset
LED:000000CC FAddr:0024CDC9
Классический подход к восстановлению накопителя с такой неисправностью, прерывание инициализации с последующим пересчетом таблиц трансляции. Альтернативный подход, - открутить плату электроники от гермоблока, дождаться готовности, прикрутить плату обратно, и с помощью штатной функции Download microcode (id92h) загрузить в накопитель апдейтилку микропрограммы. Диск обновит часть кода ПЗУ и оверлеи и после рестарта выйдет в готовность и даст доступ к пользовательской области. В отличии от "классической" методики, описанной в интернете, подобный способ не деструктивен для таблиц трансляции. Применять такой способ лучше, предварительно убедившись в работоспособности аппаратной части накопителя и сохранив оригинальное ПЗУ и модули, доступные по FID.
Теперь немного про метод лечения service area на накопителях, типа 7200.11\12\Green\LP\FreePlay и т.п. на примере Barracuda LP ST2000DL003 семейства Bogart с версией микропрограммы CC31. К примеру, имеем диск с классической для этих накопителей болячкой, про которые я писал еще в 2011 году:
Rst 0x40M
RW: Disc Ctlr Initialization Completed.
MC Internal LPC Process
(P) SATA Reset
User Data Base 00990940
MCMainPOR: Start:
Check MCMT Version: Current
MCMainPOR: Non-Init Case
MC Seg Disc and Cache Nodes: 4011985C 4011796C
Seg Write Preamble VBM start: 000010A7 end: 000010CE
Footer - start: 000010D0 end: 000010F7
Seg Read Preamble VBM - start: 000010F9 end: 00001120
Footer - start: 00001122 end: 00001149
Reconstruction: MCMT Reconstruction Start
Max number of MC segments 22E0
Nonvolatile MCMT sequence number 0000506C
[RSRS] 129D
Reconstruction: EXCEPTION: Segment Overall Sequence Number Mismatch
000024BC 00000000
[MCMTWS]
Reconstruction Fail: Burly Case
MCMainPOR: MCTBufferPtr->Header.MCStateFlagsDisc = 00001001
MCMainPOR: MCTBufferPtr->Header.MCTStateFlags = 0000002A
MCMainPOR: MCStateFlags = 00001001
MCMainPOR: Feature Disabled...
No HOST FIS-ReadyStatusFlags 0002A1E1
Предположим, мы не знаем в чем причина такого поведения и что нужно поправить, чтобы диск пересчитал себе media cache самостоятельно. Предположим, что вообще непонятно, что в SA покривело. Как быть? Я рискну предложить довольно кардинальный метод - восстановление HDD Seagate путем перезаписи микрокода, по аналогии с "ремонтом" операционной системы методом её переустановки. Методика эта основана на том, что современным дискам Сигейт для работы с пользовательской областью, хотя бы на уровне восстановить данные пользователя, необходимо не так много, гораздо меньше содержимого служебки, лежащей на диске "по-умолчанию". Кроме того, что записано в ПЗУ, конечно. Поэтому в ситуации, когда нет полной уверенности и знаний, что в служебной области не так, и в свою очередь есть полная уверенность в аппаратно исправном диске (поверхность служебки, состояние головок чтения\записи), то такой метод можно рекомендовать как рабочий, с оговоркой наличия определенных рисков, которые всегда присутствуют в таких глобальных вещах, как "переустановка операционной системы винчестера", читай - его микропрограммы.
В ситуации с подопытным накопителем мы имеем BUSY в ATA регистрах и готовность к работе через диагностический терминал. Первым делом сохраняем то, что нам потребуется для дальнейшей работы с пользовательской областью. По аналогии с переустановкой ОС - данные пользователя, "рабочий стол" и "мои документы". А именно, модули id03h и id2Bh. Первый модуль критически важен, наличие второго способно существенно облегчить жизнь в дальнейшем. Лучше бы, конечно, сохранить все модули, описанные в fid. На всякий, так сказать, пожарный случай. Проделав это, инициируем форматирование служебной области. Дальше пути для отступления у нас нет, только вперёд, только хардкор! Дождавшись
System Partition Format Successful - Elapsed Time 1 mins 59 secs
передергиваем питание. Диск рекалибруется, в терминальном окне пусто, в регистрах busy
Итак, по описаному выше алгоритму, откручиваем плату, подаем питание, дожидаемся выхода в готовность по регистрам, прикручиваем плату обратно и пробуем прогрузить ldr файл из штатной сигейтовской апдейтилки. Наблюдаем abrt. Как так? Почему? Дело в том, что для корректной отработки комплексного апдейта предлагаемого Seagate, требуется диск на котором шпиндель уже раскручен.
Два года назад я решал эту проблему методом апдейта "на горячую" (см. ссылку на материал в тексте ранее), теперь можно просто слегка подправить заводскую апдейтилку, убрав ненужное и указав, что и в каком порядке грузить. Подготовленный бут-лоадер загружаем через Download microcode. Диск взводит BUSY, раскручивает шпиндель и выдает в терминал:
Rst 0x40M
MC Internal LPC Process
FAIL Op=0900 Resp=0005
SIM Error 203F
RW Error 00000080
User Data Base 00991BA8
MCMainPOR: Start:
MCInitialize: Start: Buffer Words VBM: 00000210
MCMainPOR: EXCEPTION: MC Init Fail. Feature disabled.
MCMainPOR: MCTBufferPtr->Header.MCStateFlagsDisc = E59FF018
MCMainPOR: MCTBufferPtr->Header.MCTStateFlags = 0000F018
MCMainPOR: MCStateFlags = 00000000
MCMainPOR: EXCEPTION: POR Failed General
No HOST FIS-ReadyStatusFlags 2002A1A5
Жмем Ctrl+Z, опаньки:
ASCII Diag mode
F3 T>
То, что нам нужно. Если версия ПЗУ отличается от того, что мы загружали по id92h, то на большинство команд диск ответит:
OverlayCompatibilityCheck failed
Unable to load Diag Cmd Processor Overlay
На большинство, но не на главную. На нее наш подопытный скажет:
SIM Error 2002
RW Error 00000080Max Wr Retries = 00, Max Rd Retries = 00, Max Iterations = 01, Max Certify Rewrite Retries = 001B
DOS: MAGIC CONFIG NUMBER MISMATCH
User Partition Format Successful - Elapsed Time 0 mins 00 secs
Zone re-format was skipped.
И пусть результат не особо радостный, на первый взгляд, потому что нету ни ресурсов для пересчета, ничего, - мы же все отформатировали. Но главное сделано, - на пластины заехал прожиточный минимум. И после реинициализации мы наблюдаем:
Rst 0x40M
MC Internal LPC Process
(P) SATA Reset
User Data Base 00991BA8
MCMainPOR: Start:
MCInitialize: Start: Buffer Words VBM: 00000210
ClearMC: Start Full Media Cache size in host blks 00989680S23(01)S23(01)S23(01).S21(01)......S23(01)S23(01)S23(01)...
ClearMC: Completed, Last LBA 00989680
MCInitialize: MC Cleared
MCInitialize: MCTBufferPtr->Header.MCTStateFlags = 0000000A
MCInitialize: MCTBufferPtr->Header.MCStateFlagsDisc = 00000001
MCInitialize: MCStateFlags = 00000001
Set MCMT Version Current
[MCMTWS]
MC Seg Disc and Cache Nodes: 4011982C 4011793C
Seg Write Preamble VBM start: 000010A7 end: 000010CE
Footer - start: 000010D0 end: 000010F7
Seg Read Preamble VBM - start: 000010F9 end: 00001120
Footer - start: 00001122 end: 00001149
MCInitialize: Init complete:
MCMainPOR: MCTBufferPtr->Header.MCStateFlagsDisc = 00000041
MCMainPOR: MCTBufferPtr->Header.MCTStateFlags = 00000022
MCMainPOR: MCStateFlags = 00000041
MCMainPOR: Feature Enabled...
Готовность и терминал. Полный паспорт и полный LBA. Конечно, читать что либо с диска пока рановато. Сперва мы пишем заботливо сохраненный 03h, потом воссоздаем по нему таблицы трансляции, а потом пишем не менее заботливо сохраненный 2Bh. И вот теперь-то диск полностью готов к копированию пользовательских данных. Все проблемы с модулями, которые мы, по условиям вводной, не знали где локализованы и как их решить иными методами, решены по-большевистски. Новая служебка - нет старых проблем!
В заключение, для особо одаренных граждан, - термсы и кондишены. Прежде чем действовать по описанной методике, нужно убедиться в том, что накопитель аппаратно исправен и иметь копию оригинальной ПЗУ и всех модулей FID. И не смотря на это, иметь в виду, что что-то может пойти не так, и все гикнется. Метод разработан и опробован в качестве альтернативного пути ремонта и восстановления информации в ситуациях, когда нет времени на долгие изыскания в структуре служебки диска.
Читать так же:
Как пришлось прошить жесткий диск Seagate чтобы получить доступ к информации
Прошивка жесткого диска Seagate как способ получить доступ к пользовательской информации
Решение проблемы SIM Error 2040 No HOST FIS-ReadyStatusFlags 2002A1A5
Непростая задача: при старте диск Seagate выдает в терминал сообщение: SIM Error 2040 No HOST FIS-ReadyStatusFlags 2002A1A5 Как решить эту проблему?
Интересно было-бы посмотреть как у Вас получится воскресить Pharaoh именно с FW KC4x при пустой SA )))
А что по-вашему есть FW?
А по-Вашему ? ))) Или Вы всегда привыкли отвечать вопросом на вопрос? На мой взгляд немного не объективное описание "методики" (на методику это пока не может претендовать в силу особенностей работы некоторых версий микропрограмм) Просто я предложил Вам продемонстрировать работу, якобы Вами разработанной методы, на конкретном семействе с конкретной версией микропрограммы (а именно с любой из КС44, 45, 47, 48).
По-моему fw это оверлеи в ПЗУ и SA. Что касается «как прописать что то на диск с пустой SA» то езжайте на завод-производитель, там каждый день такие чудеса пачками творят, делают из голых дисков с чистой SA, рабочие с нечистой. Не взирая на вари. Миракл!
pc3000 обязательно иметь для такой процедуры?
Нет, можно иметь любое ПО которое умеет читать и писать SA через SDLD.