Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Документация » Програмный ремонт жёстких дисков HDD |
<<Назад Вперед>> | Страницы: 1 2 3 4 * 5 6 7 8 .. 75 76 77 78 79 80 | Печать |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 17 мая 2017 11:09 Сообщение отредактировано: 18 апреля 2018 8:31
Уровень 3 - команды ручного управления сервосистемой. Нужны преимущественно для нужд селфскана. Полный список: C, D, E, H, O, P, Q, S, T, U, V, Z, k, s, G, J, M, R, W, X, Y, f, g, m, p, q Уровень 4 - команды настройки сервосистемы. Нужны преимущественно для нужд селфскана. Отдельно выделим команды: ex - калибровка и принудительное переключение MDW/HDW (точная расшифровка этих аббревиатур мне неизвестна). Параметр x: 0 - произвести калибровку, автовыбор MDW/HDW 1 - печать таблицы радиальных смещений MDW, не проводя калибровку 2 - установить тип диска MDW 3 - установить тип диска HDW Ручное переключение 4>e3 и 4>e2 применяется для устранения некоторых "затыков" при старте селфскана. Прочие команды: 4, D, E, H, K, O, P, R, S, X, d, e, i, r, t, u, x, y, z, B, C, G, I, M, N, T, U, W, Y, Z, a, c, f, g, j, k, l, n, o, p, q, s, v, w, Уровень 5 у коннергейтов - работа с памятью основного управляющего микроконтроллера. Подробнее см. в главе по Conner. По барракудам инфы нет. Уровень 6 - запуск/просмотр/редактирование пакетных файлов задания (batch files). Теоретически, представляют собой мощный инструмент по автоматизации совершаемых с винтом действий, практически - с ними мало кто умеет работать. B - запустить командный файл Dx - отобразить командный файл x. Доступны три возможных файла с номерами от 0 до 2. E - ввести командный файл Внутри командных файлов применяются: * - специальные функции для командных файлов: *1 - приостановить выполнение до ввода *2,x - задержка в x миллисекунд *3,x - переход к метке x *4,x - увеличить head (?) и переход к метке x *5 - очистить дисплей *6 - останов при ошибке *7,x - инициализировать счётчик циала значением x *8,x - декремент счётчика цкла, переход к метке x если не 0. @x - метка. x - единственная цифра. | - прервать выполнение командного файла. Уровень 7 - работа с адаптивами канала чтения. Их настройка может использоваться для восстановления информации, но это к ремонту не относится. Нужны преимущественно для нужд селфскана. Может пригодиться: Dx - отобразить показания термодатчика. Вывод в формате YYZZ, где YY - температура, при которой проводился селфскан (для которой составлены таблицы адаптивов), ZZ - текущая температура. x - если введено, "обмануть" винт, заставив думать, что селфскан проводился при температуре x. Другие команды: G, N, O, T, Q, b, e, f, i, n, o, p, u, y, z, 9, d, C, D, M, O, I, V, g, c, l, q, t, x, 7, B, E, F, H, P, R, S, U, W, Y, Z, r, s, w У коннеров уровень 7 был работой с поверхностью по CHS (чтение, запись, операции с буферами). Позже его команды были перенесены на уровни 2> и A>. Уровень 8 - команды серворайтера. Используются при записи серворазметки и немного процедурой селфскана, пользователю не нужны и даже опасны. Уровень A - команды чтения/записи по LBA. Теоретически, могут быть использованы для вычитывания пользовательской информации через терминал, практически - это крайне медленно. Полезнные команды: P - перенос Alt-list в Slip-list. Проверено на GALAXY, на более ранних не факт что есть. Полный список команд: C, c, D, d, l, Q, R, S, W, M, E, Y Уровень C - отладочные команды селфскана D - отобразить последовательность прохождения тестов из Cert table. C>D Прочие команды: B, C, D, P, s, W, p, c, d, e, t, u, v, w Уровень D - команды отладки SeaDex script. Работать с ним никто не умеет. Полный список: I, E, D, S, T, b, c, l, p, s, t, v, v Уровень E - команды зонного распределения и форматирования. Используются селфсканом. Теоретически, могут быть использованы для вырезания зон, практически никто на это не заморачивается. Самая важная команда: vx - настройка желаемой плотности (TARGET_CAPACITY) для пикера (Picker) - процедуры подбора адаптивного зонного распределения, которая подбирает оптимальную плотность дорожек на дюйм (TPI) и бит на дюйм вдоль дорожки (BPI). Параметр x может плавно меняться примерно Также есть команды: a, b Уровень F - команды, доступные из загрузочного ПЗУ. У старых винтов этот уровень отсутствовал, вместо него служил урезанный T>. Перейти на него командой / невозможно, для выхода на F> необходимо прервать загрузку микрокода, послав ^Z сразу после старта накопителя. Выйти из него возможно, только загрузив App. Доступные на нём онлайн-команды: ^C, ^D, ^L, ^N, ^O, ^], ^Z, !, %, апостроф, точка, точка с запятой, >, >. Команды: +, =, - - чтение/запись байт памяти, см. описание общих команд Bx,y, Cx,y,z, Dx,y,z, Px,y,zzww - работа с буферами, см. описание соответствующих команд на уровне T> Rx - чтение информации из системного сектора x - битовая карта того, что читать: 1 - дефект-лист системных дорожек 2 - бут-адаптивы 4 - Application code (апп). Код автоматически не стартует, запустить можно командой F>j Без параметров - читать всё. U - раскрутить шпиндель V - нет сведений [F>V1,2,400 Memory mismatch = 00000400, Src = 0C2D, Dest = 70FE] Возможно, сравнение содержимого флешки и буфера в ОЗУ. Желательно бы проверить. Y - нет сведений [F>YFF,44,66 (Y flags,data,write)] Z - остановить шпиндель bx,y - установка битрейта. См. описание команды T>B. Обратите внимание - это один из немногих случаев, когда одна и та же команда на двух разных уровнях имеет разные регистры! dx,y - загрузка данных в буферы по SDLD. См. описание T>d. ex,y,z,w - операции с последовательным ПЗУ. x - команда: 0 - показать тип и размер ПЗУ 1 - записать байт z в сегмент w по смещению y 2 - считать байт по смещению y из сегмента z и вывести на экран. 3 - страничная запись всей ПЗУ. y - число страниц, z - страница Window C, w - смещение байт. Примеры записи ПЗУ на уровне F> будут ниже. 4 - читать ПЗУ в буфер, параметры те же. 5 - инициализировать пины для работы с последовательным ПЗУ. Выполнять первым делом. 6 - отключить эти пины 9 - стереть ПЗУ a - переход на свежезаписанное ПЗУ, не передёргивая питание FF - генерировать тестовые сигналы на пинах микроконтроллера для связи с последовательным ПЗУ. f - нет сведений [SFlashWork(Simular[ex,y,z,w]Include Opt "v")???] jx,y - JMP на код по адресу XXXX:YYYY. Без параметров - запуск App. r - аналогично 2>r s - аналогично 2>s tx,y,z - запись в последовательное устройство: x - адрес регистра y - данные z - выбор устройства:
v - нет сведений [SFlashWork(Simular[ex,y,z,w])???] |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
aleksvolgin написал: Странно, а у меня не зажигает... Щас попробую исправить. уже какая-то рожа с мафоном зажигает. |
aleksvolgin
Advanced Member
Всего сообщений: 2123 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 21 нояб. 2010 |
Да, счас всё нормально, спасибо. Щас попробую исправить. |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 17 мая 2017 15:13 Сообщение отредактировано: 18 мая 2017 9:48
В ходе работы и тестирования винчестеры Seagate выдают разнообразные сообщения об ошибках, все они закодированы. Вот их расшифровка. Биты Health Health (здоровье) - это кумулятивный показатель исправности накопителя. При прохождении тестов (и при нормальной работе, не забываем - формально это тоже один из тестов) при накоплении определенного количества ошибок биты здоровья устанавливаются в единицу, сигнализируя о неисправности. Здоровья существует два: текущее - выставляется в ходе прохождения теста и сбрасывается при начале следующего, служит показателем успешности теста, и аккумулированное - не сбрасывается и служит показателем успешности селфскана в целом. Посмотреть здоровье можно онлайн-командой "точка". Биты:
Для быстрой расшифровки битов можно воспользоваться программой SigaHLTH Коды ошибок Эти шестнадцатеричные коды используются в выдаче отчётов по командам "точка", "апостроф", "процент", в онлайн-отчётах о бэдах/ремапах и др. Кроме того, выделенные сообщения об ошибках выскакивают в ответ на невозможность выполнения той или иной команды. Пример:
Code - код ошибки (в примере 33 - адаптивы не загружены). Таблицу кодов ошибок можно посмотреть в документации по ссылкам в начале обсуждения сигейтов (приложение A из Diag Commands Alpine), переводить её мне лень. Track - координаты цилиндра, головки и сектора, где произошла ошибка Специальные сообщения об ошибках и повторах Это односимвольные сообщения, которые выводятся на экран немедленно, прерывая общий поток. Полный список сообщений можно найти в приложениях к документации по командам (см. выше), например в файле Diag Commands Alpine это приложение B. Чаще всего встречаются следующие символы: $ - отсутствует AM сигнал для сервосистемы. Проще говоря, головка теряет сервометки и не может ни удержаться на дорожке и стабилизировать скорость шпинделя. Часто сопровождается сообщением "AM Reacquired". Пример: |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 19 мая 2017 22:08 Сообщение отредактировано: 2 июня 2018 21:44
По идее, этой главе полагается быть после главы о разборе служебки, но раз я написал её первой - запощу сейчас. Теперь коротко пробежимся по модельному ряду Barracuda с разбором особенностей и ключевых нововведений отдельных семейств. Таблица соответствия моделей кодовым именам (неполная)
Основное отличие U-шек от Барракуд - модульная (по Filekey), а не трековая структура служебки и в связи с этим имеются отличия от вышеописанной системы команд. Команды для работы с модулями можно посмотреть в документе ниже. Кроме того, многие операции (например, запись ПЗУ) у них доступны через ATA-интерфейс, а не через терминал. Документация по их ремонту от PC3000: http://www.acelab.ru/dep.pc/do...PC-Uxx.pdf Справочник по командам, подходящий именно к U-серии: https://www.itosaka.com/WordPr...ommand.pdf Скановые ПЗУ и программа-прошивальщик U6DLE/ZSDLE: http://www.hddoracle.com/viewforum.php?f=134 |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 20 мая 2017 22:41 Сообщение отредактировано: 4 апреля 2018 9:26
Структура служебной информации накопителей Seagate Barracuda отличается от большинства винчестеров прочих фирм. Она не делится на модули, и каталог модулей в ней отсутствует. Вместо этого используется более простая структура: каждый элемент занимает одну или несколько соседних дорожек, а адресация их происходит по фиксированному смещению относительно начала служебной зоны. Чтобы узнать адрес начала служебной зоны, введите команду % ("процент") :5000001803000001 AX`9RY2FMKH' "000000000000"16BD3-16D14 16BD3-16D14 - это и есть адреса цилиндров служебной зоныили 2>x - показать зонное распределение: ...(часть лога пропущена)... Reserve - это и есть служебная зона. Отсюда узнаём длину треков в секторах.Начиная с APLUS появляется команда T>y для вывода подробной структуры служебной зоны. Пример вывода с 5400.4 Corsair: PhysCyl GrayCyl Служебная зона простирается на все головки накопителя, но информация хранится только по одной системной - 0-й (нижней), и используются только чётные цилиндры (вероятно, для исключения перекрывания дорожек). Однако некоторые объекты занимают больше одного трека - в таком случае остаток находится на треке 1-й головки по тому же цилиндру (у одноголовых накопителей - по единственной 0-й головке через цилиндр). Точную длину объектов из этой таблицы узнать нельзя (рецепт определения длины см. по ссылке ниже). Рассмотрим, какие объекты находятся в служебке, с расшифровкой обозначений из таблицы. Жирным выделены кодовые блоки, необходимые для пересоздания всей служебной информации в ходе селфскана - их необходимо перед селфсканом сохранить:
К сожалению, у более ранних накопителей команды T>y не было, и координаты и длины объектов приходилось узнавать по более сложной методике, описанной здесь: http://forum.ru-board.com/topi...rt=3780#19 Впрочем, для большинства популярных семейств всё это давно определено и сведено в таблицу Offsets.xls (расширенная версия) (версия с моими дополнениями), а также все смещения есть в документации к PC-3000. Так что воспользоваться той инструкцией вам придётся только если у вас редкая не описанная модель или если вы хотите поэкспериментировать, а на остальные случаи есть готовенькое. Но имейте в виду - длины объектов для разных версий прошивок могут различаться, поэтому на всякий случай советую сохранять трек целиком. Ну и наконец к служебке относится код в ПЗУ. У старых моделей с параллельным ПЗУ там содержится большая часть необходимого для работы диска кода, у моделей начиная с Avalanche там только загрузчик (BootCode), который умеет только читать из служебной зоны и подгружать код по кабелю, а остальное вынесено в Application Code. Работа с ПЗУ будет рассмотрена в дальнейших главах. |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 20 мая 2017 22:50 Сообщение отредактировано: 1 июня 2018 20:52
Перевод и расшифровка некоторых специфических для Seagate терминов документации и строк из процесса селфскана. Общие для всех винчестеров термины здесь не описыватся – см. в "словарике сленга ремонтников HDD". HM – Head Mask (у последних 7200.10 и 5400.4) SFI – 1) Switch to full int. (у последних 7200.10 и 5400.4), 2) Symbols from index – отсчёт «сырых» байт от индекса начала оборота Wedge – клин, сервометка как таковая и участок за ней. Число их указывается в выводе ^L, например 220 Servos Niwot – предположительно, этим словом называется адресация по физическим цилиндру/головке/сектору. PCF – предположительно файл настроек пикера (Picker Config File). Вот тут, например, пытались разобраться, как и куда его пришить к делу. Cert – то же что и селфскан, а также оверлей, за него отвечающий. Stuff – ATA паспорт накопителя Overlay – подгружаемый с диска код, дополнение к Application code. Их два: ATA overlay и Cert, обычно оверлеем называют только первый. В памяти всегда находится только один из них. Picker – процедура селфскана, отвечающая за подбор оптимальных TBPI – плотности дорожек и числа секторов на дорожке, а также за разбивку на зоны. Пикер настраивается вводом относительной плотности записи, где-то от 0.7000 до 1.1000 Health – слово (два байта) «здоровья» накопителя, бывает текущим (Cur) и кумулятивным (Cum). Содержит битовую карту возникших в процессе работы ошибок. Age – "возраст" накопителя, определяет, какая программа (Pgm) должна при старте на нём работать. Congen – файл настроек накопителя, состоит из переменных. Slip-list – дефект-лист секторов, пропущенных (slipped) при форматировании. Соответствует P-List других производителей Alt-list – дефект-лист секторов, замещённых (alted) из резерва в процессе работы. Соответствует G-List System sector – содержит адаптивы, состояние накопителя и другие настройки SeaDex script - ??? ZAP – Zero Acceleration Path, специальная техника более быстрого и точного позиционирования. Частью её являются специальные поля (zap field), в которые записываются предварительно калиброванные данные для сервосистемы. Подробнее: https://patents.google.com/patent/US6671119 https://pdfs.semanticscholar.o...a1b394.pdf Gray code – код Грея, считываемый сервосистемой с сервометок, определяет физическое положение актуатора. Определенным образом соотносится с номером цилиндра. MDW, HDW - тип накопителя "middle" и "high" (density wedges?) Размышления на эту тему Napa - ??? Packwriter – стойка для группового тестирования накопителей. CSPT (CERT Sequence Parameters Table) – то же, что и cert table SDLD (Seagate DownLoaD) - проприетарный бинарный протокол для быстрой отправки данных в накопители Seagate. Особенности: оперирует блоками размера 1/2/4/8 секторов, число блоков не должно превышать FFh. Описание протокола закрыто, для желающих покопать его и написать свою программу для отправки - вот инфа. Поддерживается в утилите ST_MEM (не FREE), другие 100% рабочие программы мне неизвестны. ID, OD - внутренний диаметр и внешний диаметр соответственно (для сервосистемы) Вечно в процессе дополнения... |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 мая 2017 21:05 Сообщение отредактировано: 8 июня 2018 21:54
Как я уже сказал, для большинства манипуляций с Сигейтами достаточно простого терминала. Но некоторые операции было бы удобнее автоматизировать, поэтому по ним был создан ряд программ. К слову, все эти проекты являются давно заброшенными. http://seagatedoctor.narod.ru/SOFT.html - несколько мелких вспомогательных утилит: R_Util: SigaHLTH V1.1http://www.hardw.net/forum/topic7563-60.htm, http://www.artras.narod.ru/r_util3.2D.rar - терминальная программа с возможностями мониторинга, автоматизированного сохранения треков и загрузкой по SDLD (правда, в демо-версии всё это вроде бы не работает). Описание и сведения об авторе - внутри архива. ftp://ftp.seagate.com/pub/techsuppt/ - старый FTP Seagate. Содержит множество полезной информации по древним HDD Seagate, утилиты низкоуровневого форматирования, переключатели режимов ATA и т.п. Неполный список файлов с пояснениями. http://files.hddguru.com/index...te&SID - ещё одна терминалка, глубокая бета http://worksoft.narod.ru/Seagate_Terminal_4.zip - терминалка от ArtNET Mobile Computers. Описание внутри. Обсуждение программы, последняя бета. http://www.hardw.net/forum/topic10426.htm http://forum.hddguru.com/viewtopic.php?t=11980&start= SeDiv - создавалась как любительский "комбайн" наподобие PC-3000. Платная, но иногда попадаются демо- и альфа-версии, вот у меня, например, 2.0.1.0 alpha завалялась и русский хелп к ней. Старый сайт программы (http://sediv2008.narod.ru/) давно помер, однако гугль находит некий http://www.sediv.net STR-3000 - творение китайских товарищей из China HDD Union. Пощупать можно тут: http://malthus.mooo.com/viewforum.php?f=31 Также попадатется на китайских файлообменниках, я находил по ней видеогайды, но с этими источниками нужно быть осторожнее - я вместе с ними вирусни понатащил. ST_MEM_WIN (ст_мем) - широко известная в узких кругах ремонтников программа за авторством Victor_UJ. Довольно кривой и незаконченный проект, но равных ему по возможностям нету, потому как: - умеет автоматизированно сохранять и записывать треки, читать-писать буферы, автоматизированно вычитывать служебку (корректно работает только во FREE версии) - поддерживает какие-никакие скрипты - умеет отправлять файлы по SDLD (только в коммерческой версии). Почему это так важно? Это единственный способ передать бинарный объект для записи в накопитель за вменяемое время, и это же наиболее корректный способ это сделать. В общем, это самая необходимая для подъёма сигейтов программа. Далее все работы будут производиться с её помощью. Программа изначально планировалась как коммерческий проект, поэтому у неё существуют две версии: полнофункциональная и бесплатная (ST_MEM_FREE). В бесплатной отключены самые "вкусные" функции. http://files.hddguru.com/downl..._12_06.ZIP - последняя FREE версия от 28.12.06г. Размер программы 596 480 байт. В архиве есть документация по скриптовым командам и примеры скриптов. Версию с поддержкой SDLD можно взять тут: http://malthus.mooo.com/viewtopic.php?t=211 или тут: http://algrit.narod.ru/hdd_prog.html . Это утёкшая в сеть предрелизная версия, в ней не работают или работают некорректно некоторые команды, в частности R_TRACKS_MASK, W_SECTORS_SDLD, вместо S_BUF использовать S_BUF_BLK. Зато работает SEND_FILE, и это самое главное. Важный момент: ST_MEM не переваривает концевых пробелов в скриптах! Тщательно вычищайте от них то, что понаписали или скопипастили! В той версии ST_MEM (SDLD), которая ходит по рукам, есть ошибки в обработчике терминала, что периодически вызывает зависание ST_MEM. (Есть предположения, что в ней отлаживалась заливка по SDLD, поэтому этот блок кода в ней наиболее стабилен, а в остальных не все баги выловлены). Поэтому, чтобы устранить баги программы, предлагается все кроме SDLD делать во Free, т.к. это уже практически вылизанный релиз. Полезное дополнение - высокоскоростной драйвер последовательного порта HiSerial |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 мая 2017 22:12 Сообщение отредактировано: 8 июня 2018 21:51
Ну вот, спустя многабукаф, добрались наконец до самого главного вопроса - а как же всё-таки программно чинить Seagate? Ответ: Программный ремонт винчестеров Seagate заключается в проведении на них селфскана. Вот его-то мы по всем правилам и будем учиться делать. Что нам для этого потребуется: 1. Вся вышенаписанная справочная информация и максимально возможное её понимание. 2. Датакабель (терминальный адаптер). 3. Терминальная программа. 4. Утилита ST_MEM (в принципе, для накопителей старше 7200.7 можно и без неё обойтись). 5. Скрипты для ST_MEM (будут ниже). Никаких дополнительных файлов для запуска селфскана в Seagate заливать не нужно (в отличие от накопителей других фирм), вся необходимая информация содержится на самом диске (исключение - U6 - будет рассмотрено отдельно). Селфскан состоит из набора отдельных тестов (программ, Pgm). Начальный тест - номер 2. Описание отдельных тестов можете посмотреть здесь. Тесты проходятся по порядку, записанному в Cert table, отобразить порядок прохождения тестов можно командой C>D По окончанию каждого теста номер NN выдаётся сообщение "OkEnd Test NN" в случае успеха или "AbEnd Test NN" в случае провала. Последний по порядку тест (у барракуд это фиксированный номер 50) - работа винта в обычном режиме по интерфейсу, таким образом, винт по факту ВСЕГДА выполняет какой-нибудь "тест". Псевдотест 4F - это аварийный выход в диагностический монитор в случае провала селфскана. В процессе селфскана винт ведёт подробнейшие логи, которые выводятся на терминал и параллельно записываются на диск и могут быть подробно изучены позднее командами T>D и T>E. Во время проведения селфскана МОЖНО отключать питание - промежуточные результаты сохраняются на диске, и при следующем включении винт продолжит с номера незаконченного теста. Исключение составляет тест 02 (подготовка служебной зоны) - на время этого теста вся информация находится только в ОЗУ, а в конце записывается обратно, и если пропадёт питание во время его прохождения либо этот тест будет провален - винт потеряет служебку! Поэтому желательно предварительно её сохранить. Кроме того, начиная с 7200.7 оверлей в 02-м тесте в оперативку уже не помещается, и соответственно при полном селфскане затирается и сохранять его надо обязательно! А начиная с серии 7200.9 это касается ещё и AppCode! Подготовка - получаем информацию о диске, сохраняем служебку Для начала получим возможно полную информацию о винчестере. Создадим (выделить текст, сохранить с расширением *.CMD), откроем в ST_MEM_FREE и запустим следующий скрипт: *позже составлю и выложу на этом месте свою оптимизированную версию* // Script file for ST_MEM_WIN - ©Shark // Сохраним выведенный лог куда-нибудь в папку. Эта информация позже может помочь для решения проблем. Для сохранения служебной информации удобнее всего использовать всё тот же ST_MEM_FREE. Для этого там есть специальная команда READ_TRACKS_MASK - чтение объектов по маске с автоопределением (в доступной версии ST_MEM_SDLD эта команда не работает). Полный её синтаксис можно посмотреть в справке ST_MEM, здесь он приводиться не будет. Скрипт для вычитывания выглядит вот так: (можете попробовать поставить скорость побольше, если порт поддерживает, например SPEED/460800). SPEED/115200 Команда берёт сведения из файла \Mask\trc.txt, формат файла: Название_семейства/Головка*Смещение_трека_в_СА*>Смещение_от_начала_в_секторах*Длина*Имя_объекта/(Следующий объект...) Название семейства – для автодетекта, то, что отдаётся по ^L (чувствительно к регистру!). Головку, смещения и длины можно посмотреть в файле Offsets.xls либо узнать самостоятельно (см. в главе "Описание служебки"). Если длина неизвестна и лень её узнавать, можно считать трек целиком – долго, но надёжно. Имя объекта – имя создаваемого файла, к нему добавятся номера головки и трека, по которым производилось считывание. Пример готовой строки для ALPINE: ALPINE/0*29*>0*244*CERT/0*2a*>0*61*OVL/0*2c*>0*12*VENDOR/0*15*>0*180*APP/0*29*>244*12*TBLМой файл trc.txt с моими дополнениями на основе тех винтов, что прошли через мои руки. Сохраняет треки целиком - дольше, но надёжнее. Скрипт создаёт дампы треков APP, CERT, TBL, VENDOR, OVL в папке \Dir\, расширение .trk. После считывания полезно убедиться, правильно ли всё считалось. Проще всего это сделать, открыв файлы в Hex-редакторе и сравнив с известными, взятыми из баз ресурсов. Рекомендуется вычитывать треки целиком, даже если они содержат лишь небольшой блок данных, потому что длины объектов различаются от версии к версии прошивки и есть вероятность, что они считаются не полностью. Считанные файлы вместе с текстовым файлом информации о винчестере перенесите в другую папку и сохраните в надёжном месте. Ещё раз - для 7200.7 и новее служебку перед селфсканом сохранять обязательно, для всех остальных - желательно. |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 мая 2017 23:58 Сообщение отредактировано: 26 сентября 2018 19:09
Запуск Selfscan - простейший случай Для начала рассмотрим простейший случай - вся служебка на месте, винт выходит на готовность и определяется системой, просто есть проблемы с читаемостью. Служебка уже забэкаплена (см. выше).
Всё! Селфскан пошёл! Можно наблюдать в терминале его прохождение или просто закрыть терминал и оставить винт в покое - проходится он полностью автономно. Ну, почти - у некоторых семейств начиная с 7200.8 после 99 теста винт вываливается в терминал. Паниковать не надо - это не баг, это фича. Просто нажмите ^T и селфскан продолжится дальше, начиная с 10-го теста. Среднее время тестирования - от полутора суток и более (можно посмотреть в логе заводского селфскана). Для контролирования процесса прохождения на длинных тестах (когда в лог подолгу ничего не выводится) можно нажимать "." и ";". В случае успеха винт выйдет на уровень 50 (у коннергейтов - 40) и снова вывалится в терминал. Я когда-то поднимал эту тему. И достоверно известно что пикеры задаются дважды - и перед N2, и перед N10. Поэтому есть останов на 99-м. Послескановые действия И вот селфскан успешно пройден. Что же дальше? Зависит от того, какого поколения у вас винт. 1. Если у вас старый винт - по успешному завершению селфскана он сразу же будет готов к работе, достаточно передёрнуть питание. 2. *необходимость выделения этого пункта мной не проверена* У Барракуд, начиная с ATA 1 и до ATA VI, переходим сразу к параграфу 3 "Правка Stuff", минуя 1 и 2. 3. У 7200.7 и 7200.8 после рестарта в терминале вы увидите: OVERLAY FAILED( и самопроизвольный выход в терминал. Это значит - оверлей (вы же его предварительно сохранили, не так ли?) надо залить обратно. Начинаем с параграфа 2 "Заливка оверлея" и только котом переходим к третьему.4. У 7200.9 и 7200.10 в результате селфскана затирается ещё и апп и у них нужно выполнить все послескановые действия 1, 2, 3 по порядку. А оверлеев у них не один, а два, о чём они недвусмысленно намекают указанием номера: Unable To Load Overlay 01|000A Примечание: здесь и далее в примерах копии треков, из которых посылаются элементы служебки, лежат в подкаталоге \track и имеют имена: app.bin - апп ovl.bin - оверлей vendor.bin - вендор Если, прочтя описание всех этих лействий, вы решили, что это вам не по силам, можете попробовать сделать тест только User Area - запускать селфскан с теста N4 (до 7200.8) / N10 (7200.8-7200.10). Служебка при этом не трогается. Но очень многие калибровки при этом пропускаются, фактически производится только форматирование и тест поверхности, поэтому при сильно ушедших параметрах винта результат "облегчённого" селфскана будет неудовлетворительным (провалы скорости чтения, чересчур много скрытых секторов) либо он вовсе завершится с ошибкой. 1. Заливка App. Самую большую сложность для новичка представляют последние семейства, 7200.9 и 7200.10. Даже после успешного селфскана (а неуспешного - тем более) и последующей перезагрузки они ошарашивают новичка сообщением: Error Reading Application Code или, у новых, ERR Read App Code и выходом на "страшный" уровень F>. Симптомы точно такие же, как у заваленной служебки. Без паники! Это не баг, а фича! Селфскан пройден нормально, всё в порядке - просто Application Code в процессе не сохранился.Прежде всего, если вы попали на уровень F> не автоматически, а нажав ^Z во время загрузки, нужно попытаться считать его с диска командой F>R, либо в три этапа: F>R1 - считать дефект-лист резервных треков (служебной зоны) F>R2 - бут-адаптивы F>R4 - Application code В нашем случае первые две отработают без ошибок, а последняя выдаст ошибку вида Code - A6 Track 15FC4.0.234 Sns FFF - что означает, что оверлея на месте нет.А куда его залить? Нажимте "апостроф" и в ответе получите длину апп и номер буфера! (номер будет либо 80, либо 60) Получается такой скрипт (для SDLD), для примера шлём файл длиной 238h секторов в буфер 60: На уровне F> команда смены битрейта - с маленькой буквы, поэтому у команды SPEED появляется параметр с явной её записью. SPEED/115200/b0115 Команда F>d - отправка файла в буфер. 2 - отправка блоками по 2048 байт/4 сектора. Выбирается исходя из того, что общее число блоков не должно превышать 100h. Команда j,,1 - запуск загруженного оверлея. Выводится сообщение о его версии: 3.AAD 11-15-05 14:56 AAD,1D_S_013_N1,4T и - ура! Мы на уровне T> ! Ну а если сообщение об ошибке - значит, не то залили, или не до конца.Сейчас апп находится только в памяти, и если в этот момент перезагрузиться - придётся повторять всё сначала. Чтобы записать его на диск, нужно сначала ещё раз загрузить в память системный сектор: T>R1 T>R2 а потом записать его на диск: T>w4 2. Заливка оверлея Для заливки единственного оверлея длиной 5Dh секторов используем ST_MEM SDLD и скрипт следующего вида: У винтов начиная с 7200.9 оверлеев два, и скрипт удлиняется: SPEED/115200 Оба оверлея находятся на одной дорожке, поэтому если вы считали её полностью - второй вы не потеряли. В примере нулевой лежит с начала трека и имеет длину 6Fh секторов, первый - длину 13 секторов и лежит по смещению 89h секторов от начала. Длины оверлея/оверлеев и смещение для второго оверлея (если он есть) индивидуальны для каждого подсемейства и иногда - прошивки, их нужно индивидуально править под свой винт. Координат оверлея из двух частей в таблице Offsets.xls нету, там только общая длина для вычитывания, нужно изучать слитый трек в Hex-редакторе - незанятые сектора заполнены байтом FF. SPEED/115200 После того, как скрипт успешно отработает, подаём команду T>c - записать оверлей(оверлеи) на диск. Микропрограмма сама запишет их на нужные дорожки, вместе с ними запишется и апп (если ранее нужно было залить и его). Готово! Передёргиваем питание или перезапускаем микропрограмму, подав ^T. 3. Правка Stuff, запись трека Vendor Но и это ещё не всё. Теперь вылазит другая ошибка: Stuff Was Unreadable( (вроде бы это сообщение выскакивает и у более старых барракуд, но я на них селфскан не пускал и сказать точно не могу).Остаётся сделать последнее действие - записать паспорт накопителя. Паспорт хранится на треке Vendor. Структура трека:
Стафф состоит из записей, именуемых ключами. Длина одного ключа – два байта, таким образом, в одном секторе FFh ключей. Несколько ключей могут писаться последовательно, объединяясь в один. Структуру паспорта можно глянуть в документации по ATA интерфейсу или в доках от PC-3000. Для правки ключей служит команда T>F. Ни в коем случае не путайте её с командой T>f – это перезапись флеш-ПЗУ накопителя! В ответ на команду винт пишет приглашение: SetStuff-> На неё вводятся ключи Stuff в виде 16-ричных строк, начинающихся с ASCI>номер ключа>. Ответом будет выставленное значение ключа. Несколько ключей могут быть записаны последовательно. Пример: T>F Также есть функция инициализации стаффа значениями по умолчанию: T>F , но во-первых она не прописывает некоторые флаги доступных функций накопителя, во-вторых, у семейств начиная с 7200.8/9 (точно не помню) она изъята. Также у старших семейств недоступен последовательный ввод нескольких ключей, у них ключи надо вводить по одному.Для удобства ввода в ST_MEM есть команда SET_STUFF, за которой вводится номер ключа и строка значений. После инициализации паспорта значениями по умолчанию нужно вручную задать имя диска и его ёмкость. У старых моделей до Alpine её можно узнать из таблиц в конце инструкции к PC-3000, у альпин и новее - можно глянуть Total KBAs по команде 2>x и отнять от этого числа некоторое количество секторов на резерв для ремапа (сколько не жалко, обычно не менее 1000 сеторов). Примечание: Это число может быть как меньше, так и больше типичного для этой модели! Например, топовые четырёхдисковые накопители зачастую не всегда могут достичь нужной плотности и на выходе получается модель меньшего объёма. А при скане APLUS получаются не 40/80/120 Гб винты, как были изначально, а согласно плотности пластин (100 Гб/пластина, см. описание семейств) - 50/100/150 Гб, которые официально не выпускались (официально была только 200 Гб модель). Вот такой вот бонус на халяву! Имя диска - ключ 1B и последующие, всего 20 штук. Вводится ASCII-кодами, добивается пробелами (код 20h) до длины в 40 символов. Можно ввести не то, что было написано на крышке изначально, а какую-нибудь отсебятину - винт валидность не проверяет. Родные имена в шестнадцатеричных кодах можно посмотреть в аселабовской доке. Для удобства ввода в ST_MEM есть команда STUFF_NAME, за которой сразу вводится текстовая строка - но эта команда использует ввод нескольких ключей подряд и начиная с 7200.8/9 работает некорректно. Емкость диска - ключ 83. Его ввод одновременно копируется в ключ 3C. Порядок байт в ключах емкости – первым идёт младшее слово, за ним - старшее. При копировании значений вручную из сохранённого трека через hex-редактор следует знать, что на диске старшие и младшие байты хранятся в перевёрнутом виде, и в итоге если править напрямую сохраненный трек, то число секторов в 3С и 83 пишется целиком задом наперёд. Другие ключи, где записана емкость – 64, например на Corsair его правка обязательна. Для удобства ввода в ST_MEM есть команда STUFF_NAME, за которой сразу вводится ёмкость (десятичная), но эта команда использует ввод нескольких ключей подряд и начиная с 7200.8/9 работает некорректно. Пример ручного задания ёмкости: TONKA2 120 Гб – 234441648 секторов - 0DF94BB0 hex. Обратите внимание на порядок слов. STUFF/834BB0 Добавляем другие места, где фигурирует емкость: На треке при этом по адресу 906h будет последовательность B0 4B F9 0D. STUFF/3C4BB0 Или же можно не трахаться со всеми этими ключами, а вернуть нужные сектора прямой их перезаписью (рекомендуется для 7200.7 и новее). Пример скрипта с использованием команды W_SECTORS (работает Здесь 15CA - номер дорожки, AUTO - номер буфера записи (можно вписать конкретный номер, а вариант AUTO заставляет программу определить его самостоятельно, по команде "?"), 12 - число секторов (т.е. пишем 12h секторов с запасом, хотя в принципе достаточно одного, четвёртого). SPEED/115200 Пример скрипта (для ALPINE) с использованием записи через буферы и заполнением командой S_BUF: Здесь номер буфера записи (в примере - 210) надо указывать явно. Длина буфера всего 10h секторов, поэтому 12h секторов пишутся в два приёма. Команда S_BUF сама переключает на уровень 1>. Запись идёт на трек F6BA, его также необходимо исправить в двух местах под свой конкретный экземпляр. SPEED/115200 Внимание: у TONKA и новее команда 2>s меняет формат - появляется ключ подтверждения! (см. ниже) Пример скрипта с заполнением буферов по SDLD - самый быстрый вариант: Здесь буфер записи имеет номер 535. В этом примере переключаться между уровнями 2> и T> уже нужно явно. //Для ST_MEM_SDLD Ещё раз напоминаю: перед использованием любого из скриптов непосредственной записи дорожек не забудбье вручную исправить адреса буферов и номера дорожек под свой конкретный экземпляр! Не копируйте бездумно! После записи делаем вручную сброс SMART командой 1>N1 - где-то на треке вендора (точный номер сектора не знаю) хранятся SMART Values, и мы записали их старые. Всё - винт готов к работе! |
<<Назад Вперед>> | Страницы: 1 2 3 4 * 5 6 7 8 .. 75 76 77 78 79 80 | Печать |
Полигон-2 » Документация » Програмный ремонт жёстких дисков HDD |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |