>при загрузке freebsd 5.4 в конце выдаются неприятные строки такого содержания:
>--------------
>ad0: 114473MB <WDC WD1200JB-00GVA0/08.02D08> [232581/16/63] at ata0-master UDMA66
>ad1: 14664MB <IBM-DJNA-351520/J56OA30K> [29795/16/63] at ata0-slave UDMA66
>ad0: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=0
>ad0: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=0
>ad0: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=84<ICRC,ABORTED> LBA=0
>ad0: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=0
>ad0: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=0
>ad0: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=0
>----------------
>разумеется потом слайсы с ad0 подмонтировать к ad1, на котором стоит freebsd,
>не удаётся. на ad0 два слайса с fs: ntfs и ext2fs
>и он нормально работает. что это может быть и как это
>побороть? очень прошу помощи. заранее спасибо.
ICRC - checksum'ы неверные, варианты:
- диск гавно не может в соответствующем DMA режиме работать
- кабель НЕ 80-pin'овый или неверно соединен с контроллером, разъем с
голубой полоской должен быть воткнут в контроллер а не диск
- геометрия неверная (неверное кол-во секторов) выход за физические пределы (характерно когда разбивка диска под Windoze) - X секторов/16голов/63 - а в LBA с правильной геометрией обычно X/255голов/63
Если же все ВЕРНО, ошибки CRC означают что поплыла поверхность на месте
данного сектора. Проверить можно утилитами производителя, но многие
предпочитают mhdd32
диски следует в BIOS выставлять в LBA, затем попробуй перевести в PIO mode
и прогнать dd на чтение.
man 4 ata
man atacontrol
# atacontrol mode контроллер_номер РЕЖИМ ...
например:
смотрим список каналов ATA, что где висит и в каком режиме работает:
[alone]~ > atacontrol list
ATA channel 0:
Master: ad0 <Maxtor 6Y080P0/YAR41BW0> ATA/ATAPI revision 7
Slave: acd0 <TEAC DW-548D/K4H6> ATA/ATAPI revision 5
ATA channel 1:
Master: ad2 <IBM-DTTA-351010/T56OA73A> ATA/ATAPI revision 4
Slave: no device present
===================================================================
[alone]~ > atacontrol mode 0
Master = UDMA100
Slave = UDMA33
[alone]~ >
на канале 0 - ad0 диск в режиме UDMA100 (master) и slave'ом cd-rw в
режиме UDMA33
переводим диск в PIO режим (man atacontrol):
[alone]~ > atacontrol mode 0 PIO4 UDMA33
Master = PIO4
Slave = UDMA33
[alone]~ >
выполняем dd - проверяем работу диска НЕ в DMA режиме на наличие ошибок
и смотрим логи /var/log/messages:
в одном окне:
# dd if=/dev/ad0 of=/dev/null
выше в качестве входного устройства используем сырой диск if=/dev/ad0
выход в of=/dev/null (вывод в нуль-устройство) - тест на чтение.
можно еще задать размер блока чтобы быстрей dd работало
в другом окне заранее запускаем просмотр логов:
# tail -f /var/log/messages
Если ошибок в PIO режиме нет, ситуация ясна. Если есть - принимаем меры
например записываем номера секторов на которых сбои и вычисляем НЕ ВЫХОДЯТ
ли они за границы физического размера - это проверка геометрии