Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Документация »   Програмный ремонт жёстких дисков HDD
RSS

Програмный ремонт жёстких дисков HDD

Програмный (и не только) ремонт классических жёстких дисков HDD /Seagate /Samsung /IBM /Hitachi /HGST /Western Digital

<<Назад  Вперед>> Страницы: 1 2 3 4 5 ... 41 42 43 44 45 * 46 47 48 49 .. 75 76 77 78 79 80
Печать
 
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Я ранее упоминал, что на GALAXY3D сбрасывал alt-list и SMART ранее. Bad-ов типа UNC после
сброса alt-list и стирания поверхности не появилось, однако я подумал, может для надежности
все-же ввести бывшие alt-list дефекты в slip-list?

Старый лог дефектов alt-list сохранился, они были примерно равномерно распределены по головам.

Написал программу для автоматизации этого дела, а также для облегчения ручного ввода дефектов.
она принимает дефект-лист из файла (в нем не должно быть никаких записей, кроме дефектов,
лишние данные (например выводимые по команде V4) надо убрать.

В данном варианте я заношу дефекты в alt-list, для удобства контроля (тк slip список огромен),
а потом после проверки перенесем в slip-list A>P. Для дисков, где нет A>P, естественно только
один вариант, сразу в slip-list заносить. Задается директивой препроцессора #define SLIP.

Желательно сперва проверить правильность работы, направив вывод в файл, вместо /dev/cuau0. За
прохождением занесения дефетов наблюдаем в терминальной программе, она же и настроит COM-port.

Проблему с синхронизацией я пока не придумал как решить, тк подача команды пока диск не вернул
новую строку (отработал предыдущую команду), может привести к неприятным последствиям. Так,
начало строки команды "проглатывается", вводится остаток, и мало того что не отработает нужная
команда, так и символ может совпасть с какой-нибудь опасной командой. Пока что просто добавлены
задержки после каждой команды. Если кому интересно, вот первый экспериментальный вариант:

#include >stdio.h>
#include >stdlib.h>
#include >string.h>
#include >unistd.h>

#define  SLIP  0    //if 0, add defect to alt-list, else - slip-list
#define  SDLY  usleep (400000)  //short delay usec
#define  MDLY  sleep(1)  //middle delay
#define LDLY  sleep (4)  //long delay  sec

int main(int argc, char *argv[]<img src="smiles/wink.gif" align=absmiddle alt=";)"> {
/* Variables declarations*/
unsigned int i, nline;
char defstr[30];
char altstr[30];
char cyl[]  = {0,0,0,0,0,0,0,0,0,0};  //9 symbols max + '\0'
char head[] = {0,0,0,0,0,0,0,0,0,0};  //9 symbols max + '\0'
char sec[]  = {0,0,0,0,0,0,0,0,0,0};  //9 symbols max + '\0'
char *p1, *p2;
unsigned len;
unsigned char dev=0;  //if we work with serial device, dev == 1, else 0
FILE* src;
FILE* dest;

    if (argc !=3) {
  printf("Seagate defect lists management\n");
  printf("Usage: sgdfl >input_file> >output_file>\n");
  exit(EXIT_SUCCESS);
    }

    if (argc = 3) {
  src = fopen(argv[1],"r");
  if (src == NULL) {
      perror(argv[1]<img src="smiles/wink.gif" align=absmiddle alt=";)">;
      exit(EXIT_FAILURE);
  }

  dest = fopen(argv[2],"a");
      if (dest == NULL) {
      perror(argv[2]<img src="smiles/wink.gif" align=absmiddle alt=";)">;
      fclose(src);
      exit(EXIT_FAILURE);
  }
    }

    if (strstr(argv[2], "/dev/"))
  dev = 1;

    if (dev) {
  fputc(0x1A, dest);  //^Z
  MDLY;
  fputc(0x12, dest);  //^R
  LDLY;
  fprintf(dest, "/\n");  //switch to level T (dummy)
  MDLY;
    }

    fprintf(dest, "/2\n");  //switch to level 2
    MDLY;

    for (nline=1; !(feof(src)); nline++) {
  fscanf(src, "%20s", defstr);

  while ((i=fgetc(src)) != '\n')
      if (i == EOF)
    goto stop;

  //defect's string parsing
  p1 = strchr(defstr, '.');
  len = p1-defstr;
  if (len > 9) {
      printf("Error at line %u, stop\n", nline);
      break;
  }
  strncpy(cyl, defstr, len);  //physical cylinder string

  p2 = strchr(p1+1, '.');
  len = p2- (p1+1);
  if (len > 9) {
      printf("Error at line %u, stop\n", nline);
      break;
  }
  strncpy(head, p1+1, len);  //physical head string
  strncpy(sec, p2+1, 9);    //physical sector string

  fprintf(dest, "s%s,%s,22\n", cyl, head);  //select physical C/H
  if (dev)
      SDLY;
#if SLIP
  fprintf(dest, "F%s,D,,1\n", sec);  //add defect to slip-list
#else
  fprintf(dest, "F%s,A,,1\n", sec);  //add defect to alt-list
#endif
  if (dev)
      LDLY;
    }
stop:
    fprintf(dest, "/\n");  //switch to level T
    SDLY;

fclose(src);
fclose(dest);
return 0;
}


Все работы проводились под FreeBSD 8.4. Добавление дефектов из файла в alt-list прошло
нормально, перенос A>P в slip-list тоже, проконтролировал сравнивая старый и новый slip-list
командой "diff -u". Осталось стереть диск и протестировать заново.

Возможные будущие планы - добавить в программу собственный терминал, чтение-запись треков через
буферы и передачу данных по SDLD.
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
i8088 написал:
[q]
Проблему с синхронизацией я пока не придумал как решить, тк подача команды пока диск не вернул
новую строку (отработал предыдущую команду), может привести к неприятным последствиям.
[/q]
Так и решается - делается ожидание вывода приглашения командной строки.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Спасибо, так и буду делать! Программу надо будет оснастить собственным
терминалом, тк иначе перевод строки может перехватить внешняя терминалка.
marinovsoft
Junior Member


Откуда: Кемерово
Всего сообщений: 153
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 сен. 2017
http://www.phantom.sannata.ru/...7#pp375947
[q]
4. У 7200.9 и 7200.10 в результате селфскана затирается ещё и апп и у них нужно выполнить все послескановые действия 1, 2, 3 по порядку. А оверлеев у них не один, а два, о чём они недвусмысленно намекают указанием номера:
Unable To Load Overlay 01|000A
[/q]
[q]
2. Заливка оверлея

У винтов начиная с 7200.9 оверлеев два, и скрипт удлиняется:...
[/q]
У 7200.10 nhplus2hd вроде как один оверлей.
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
Окей, я проверю по слитым ресурсам разных версий.
marinovsoft
Junior Member


Откуда: Кемерово
Всего сообщений: 153
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 сен. 2017
Не удается привести в жизнь nhplus2hd 3.AAF после SS.

После включения питания всегда одно и то же

T>àRst 16M

Buzz HM SFI
!

ERR 43: App Code
(


Делаю все по науке:
заливка app
заливка ovl
заливка cert
T>c

Слитые ресурсы и скрипты

http://dropmefiles.com/Cw6nq

Что я делаю не так?
marinovsoft
Junior Member


Откуда: Кемерово
Всего сообщений: 153
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 сен. 2017
В итоге попробовал сделать N50,,22 - винч ругнулся
Wrong data format. Write Adaptives rejected
Далее попробовал сделать N2,AA,22
В процессе выполнения теста были ошибки

HEAD CLEARANCE MEASUREMENT
Disable AFC 2x+
Zap Eng Dis
Zap Rd Dis
Alt = sealevel
Error: HdClr Measurements file could not be opened!
afhCert structure may not be valid!
Can't seek to 9466. Min is 4294845616, Max is 4294845780

Тест N2 закончился, после этого я смог залить app,ovl,cert, записать их на диск, выйти на N50, залить вендор и даже посмотрел что винт виден по интерфейсу :) При попытках чтения - ошибки.

В общем пнул скан сначала N2,,50 - буду смотреть.

Подскажите, что означают эти ошибки?

Вообще, заметил, что по сравнению с альпиной у этого семейства в некоторых случаях сообщения вообще не выдаются и не понятно, успешно ли завершилась операция.

Я балбес. Это было в факе.
[q]
В: Corsair (а также винты семейства 7200.10) после успешного скана и передергивания питания вываливается в F, записать по w4 не помогает
О: Эта линейка в процессе скана апп на диск на записывает. Заливайте апп в память, потом обязательно подгружайте адаптивы (T>R1, T>R2), записывайте по T>w4, заливайте оверлей, запиcывайте на диск командой T>c и все взлетит. Или вроде бы помогает подать команду c сразу по окончанию скана.
[/q]
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
marinovsoft написал:
[q]
Не удается привести в жизнь nhplus2hd 3.AAF после SS.
[/q]
А SS сам как прошел, без проталкивания? health какое (лог D4E)?
Какое было состояние до скана?
После отправки app в память, какой командой записывали на диск?
marinovsoft
Junior Member


Откуда: Кемерово
Всего сообщений: 153
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 сен. 2017
Перечитал фак и нашел ответ на свой вопрос. Ладно, дождусь прохождения SS и проверю :)
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
marinovsoft написал:
[q]
Перечитал фак и нашел ответ на свой вопрос.
[/q]
Относительно команды w4, >номер буфера>?
<<Назад  Вперед>> Страницы: 1 2 3 4 5 ... 41 42 43 44 45 * 46 47 48 49 .. 75 76 77 78 79 80
Печать
Полигон-2 »   Документация »   Програмный ремонт жёстких дисков HDD
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS