Выберите Ваш город

Введите название вашего города

  • Абакан
  • Анадырь
  • Арзамас
  • Архангельск
  • Астрахань
  • Барнаул
  • Белгород
  • Биробиджан
  • Благовещенск
  • Брянск
Статьи

Лоадеры для жестких дисков Seagate

Artem Makarov aka Robin
13.11.2013
14680 просмотров

Жесткие диски 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. И не смотря на это, иметь в виду, что что-то может пойти не так, и все гикнется. Метод разработан и опробован в качестве альтернативного пути ремонта и восстановления информации в ситуациях, когда нет времени на долгие изыскания в структуре служебки диска.

Оставьте комментарий
Guest
30 января 2014, 13:26

Интересно было-бы посмотреть как у Вас получится воскресить Pharaoh именно с FW KC4x при пустой SA )))

Artem Makarov aka Robin
30 января 2014, 15:52

А что по-вашему есть FW?

Guest
30 января 2014, 22:31

А по-Вашему ? ))) Или Вы всегда привыкли отвечать вопросом на вопрос? На мой взгляд немного не объективное описание "методики" (на методику это пока не может претендовать в силу особенностей работы некоторых версий микропрограмм) Просто я предложил Вам продемонстрировать работу, якобы Вами разработанной методы, на конкретном семействе с конкретной версией микропрограммы (а именно с любой из КС44, 45, 47, 48).

Artem Makarov aka Robin
31 января 2014, 00:28

По-моему fw это оверлеи в ПЗУ и SA. Что касается «как прописать что то на диск с пустой SA» то езжайте на завод-производитель, там каждый день такие чудеса пачками творят, делают из голых дисков с чистой SA, рабочие с нечистой. Не взирая на вари. Миракл!

Нужна консультация?

Мы одна из немногих лабораторий в России, которая восстанавливает данные самостоятельно.

Для этого у нас есть все необходимое:
Важно – кто будет первым!
восстанавливать
информацию