nixp.ru v3.0

27 мая 2017,
суббота,
09:06:43 MSK

DevOps с компанией «Флант»
Аватар пользователя DimkaS
DimkaS написал 11 марта 2006 года в 19:27 (421 просмотр) Ведет себя как мужчина; открыл 84 темы в форуме, оставил 922 комментария на сайте.

Появилась необходимость подключить большой жесткий диск к старой машине. Купил pci ide контроллер на чипе it8212. Ядром 2.4 он поддерживается, судя по файлу drivers/ide/pci/it821x.c. После перезагрузки устройство появилось в выводе lspci (лог приведу, когда дома инет появится). К контроллеру подключен 1 винт Seagate barracuda 4(?) 60Gb. Где искать этот винт в системе? Перерыл весь /dev, но ничего не нашел… Под win винт нашелся без проблем, т.е. переконфигурять контроллер, видимо, не нужно.

Dmitry Ivanov

Искать в dmesg

lspci — начхать, она покажет устройство, если оно просто есть на шине, вне зависимости от того, подцепило ядро девайс или нет.

DimkaS

На всякий случай:

lspci -vv
0000:00:07.0 RAID bus controller: Integrated Technology Express, Inc. IT/ITE8212 Dual channel ATA RAID controller (PCI version seems to be IT8212, embedded seems (rev 13)
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- 
        Latency: 0 (2000ns min, 2000ns max)
        Interrupt: pin A routed to IRQ 9
        Region 0: I/O ports at f8a8 [size=8]
        Region 1: I/O ports at f8b8 [size=4]
        Region 2: I/O ports at f8b0 [size=8]
        Region 3: I/O ports at f8bc [size=4]
        Region 4: I/O ports at f8d0 [size=16]
        Expansion ROM at  [disabled] [size=128K]
        Capabilities: [80] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-



dmesg |grep 821


ничего не дает, modprobe -l, lsmod — тоже. На сайте производителя нашел драйвер. В каталоге deb30 есть файлы iteraid.o, iteraid.smp. плюс, есть исходники.

я так понимаю, мне нужно этот iteraid.o куда-нить закинуть и modprobe сделать? А родной драйвер просто не скомпилен? Значит, можно взять исходники ядра, подправить конфиг и сделать make modules?

Genie


$ /sbin/modinfo it821x
filename:       /lib/modules/2.6.15-k7.badram/kernel/drivers/ide/pci/it821x.ko
author:         Alan Cox
description:    PCI driver module for the ITE 821x
license:        GPL
vermagic:       2.6.15-k7.badram SMP K7 gcc-3.3
depends:        
alias:          pci:v00001283d00008211sv*sd*bc*sc*i*
alias:          pci:v00001283d00008212sv*sd*bc*sc*i*
parm:           it8212_noraid:Force card into bypass mode
parm:           noraid:int

вроде бы это оно…

DimkaS

У меня его нет (Debian 3.1, ядро 2.4.27-2-586tsc). Перекинул куда-то туда модуль, добавил его в modules.dep, сделал modprobe. Ругается. Говорит, модуль скомпилен gcc v2, а ядро — v3. Работать не будет. Что лучше, собрать модуль из исходников ядра или производителя? Если можно, объясните по шагам.

rgo

а пересобрать ядро, добавив CONFIG_BLK_DEV_IT821X=m не пробовал?

Curu3MyHg
DimkaS
У меня его нет (Debian 3.1, ядро 2.4.27-2-586tsc). Перекинул куда-то туда модуль, добавил его в modules.dep, сделал modprobe. Ругается. Говорит, модуль скомпилен gcc v2, а ядро — v3. Работать не будет. Что лучше, собрать модуль из исходников ядра или производителя? Если можно, объясните по шагам.

Или попробовать сделать insmod -f … Авось покатит? ;)

DimkaS
Curu3MyHg
Или попробовать сделать insmod -f … Авось покатит? ;)

Эксперименты над сервером — это не гуманно! =)

Там говорится что-то вроде «that’s known not to work», т.е. почти 100% не сработает.

2rgo: если я возьму конфиг ядра, исходники ядра и добавлю в конфиге этот модуль, сделаю make modules — этого хватит? Очень не хочу ядро целиком пересобирать, это у меня плохо получается…

Curu3MyHg
DimkaS
Эксперименты над сервером — это не гуманно! =)

Там говорится что-то вроде «that’s known not to work», т.е. почти 100% не сработает.

А таки-попробовать? ;)

У меня именно так модем PCTel’овский замечательно работал с разными ядрами серии 2.4.xx. Почти полтора года. И сейчас бы работал, только надобности в нём нет: дома 100 Мбитный инет через локалку + 10 Мбитный через вторую локалку + телефона нет. ))

rgo
если я возьму конфиг ядра, исходники ядра и добавлю в конфиге этот модуль, сделаю make modules — этого хватит?

конфиг какого ядра ты возьмёшь? Если того которое у тебя стоит, и ту же версию компилировать будешь, то покатит, но там ведь уже без разницы — собрать целиком или только модули. Разве что по времени будет выигрыш(?)

DimkaS

Мдяя.. Я как всегда не внимателен.

1) Исходников к моему ядру (2.4.27) у меня нет. Есть к 2.4.32. Придется, видимо, его собирать, но…

2) В ядре 2.4.32 поддержки моего контроллера нет! (Т.е. я не нашел файл типа it821x.c) Есть только it8172, а свой я нашел в 2.6.14. Исходники драйвера есть под обе ветки.

Сегодня пробовал insmod -f, не прокатило — ругается на кучу unresolved symbol. Распаковал исходники 2.4.32, закинул туда исходник драйвера в каталог ./ite, попробовал сделать make только для драйвера — ругается. Сначала не находит include/linux/modversions.h, затем ругается на ошибки в /usr/include/linux/*.h. Это из-за того, что модуль надо собирать вместе со всем ядром?

Что бы еще придумать?

2Genie: А если ты мне свой модуль дашь, что-нить выйдет?

Genie
2Genie: А если ты мне свой модуль дашь, что-нить выйдет?

ась?

1) архитектура -k7

2) ядро 2.6.15. даже формат модулей иной.

DimkaS

Мля… А куда мне исходники драйвера положить, чтоб он вместе с ядром скомпилировался? Имеются: iteraid.c, iteraid.h, Makefile. Их где-то в исходникая ядра надо указывать или компилятор сам Makefile найдёт?

Очень неохота ставить ядро 2.6 на старенький P-233.

DimkaS

Перерыл пол-гугля, но ничего толкового не нашел. Проблема у многих, решение — у единиц.

Решил включить мозг! Поставил заголовки к ядру, закинул в них исходник драйвера и начал эксперименты. То ли тогда мир был другим, то ли разработчики драйвера полные ламеры и про kernel-headers не слышали. Переправил Makefile, include-секции в h и c файлах. Есть плюс — в заголовках присутствует modversions.h, который нужен для сборки. Но есть и минус — нужен еще и hosts.h, который есть только в дереве иходников 2.4.32 и, при этом, совершенно не подходит, судя по куче ерроров. Это у меня заголовки неправильные, или программеры сами не знают, что их творению надо? Если у кого есть файл вроде /drivers/scsi/hosts.h (а может и не скази…) в дереве 2.4.27, поделитесь пожалуйста — он последний источник ерроров в этом чертовом драйвере…

Начиная с 2.6.14 драйвер включен в ядро, для более ранних версий есть патчики -ac. Где их поискать? Наконфигурял, тут 2.6.14, завтра соберу, закину на сервак..

anonymous

мне в почту кидаешь тарбол с исходниками драйвера и точное название ядра (и пакета с ядром)

DimkaS

К черту кривые драйвера. Собрал 2.6.14, установил, перезагрузил… Не понятно, почему, но заработало сразу!

IT8212: IDE controller at PCI slot 0000:00:07.0
IT8212: chipset revision 19
it821x: controller in smart mode.
IT8212: 100% native mode on irq 9
    ide2: BM-DMA at 0xf8d0-0xf8d7, BIOS settings: hde:DMA, hdf:pio
    ide3: BM-DMA at 0xf8d8-0xf8df, BIOS settings: hdg:pio, hdh:pio
Probing IDE interface ide2...
hde: ST360021A, ATA DISK drive
hde: Performing identify fixups.
ide2 at 0xf8a8-0xf8af,0xf8ba on irq 9
hde: max request size: 128KiB
hde: 117231408 sectors (60022 MB) w/2048KiB Cache, CHS=65535/16/63, BUG
hde: cache flushes not supported
 hde:hde: recal_intr: status=0x51 { DriveReady SeekComplete Error }
hde: recal_intr: error=0x04 { DriveStatusError }
ide: failed opcode was: unknown
 hde1 hde2 < hde5 hde6 >

Вот только, что эти строчки означают?

hde: cache flushes not supported
ide: failed opcode was: unknown

О! а вот это я в menuconfig видел:

hde:hde: recal_intr: status=0x51 { DriveReady SeekComplete Error }
hde: recal_intr: error=0x04 { DriveStatusError }

Придется пересобрать. Заодно, архитектуру до MMX подниму.

Есть еще такой вопрос: кто может подсказать, где найти описание параметров ядра, отвечающих за сеть? А то я там ничего почти не понял, модулями все выставил…

2idv_: твоё предложение еще в силе?

Dmitry Ivanov

да

DimkaS
DimkaS
О! а вот это я в menuconfig видел:

hde:hde: recal_intr: status=0x51 { DriveReady SeekComplete Error }
hde: recal_intr: error=0x04 { DriveStatusError }

Пересобрал. Включил соответствующую опцию. Не пропало. Это опасно?

anonymous
DimkaS
Пересобрал. Включил соответствующую опцию. Не пропало. Это опасно?

Да в общем нет.

PS: Модуль ушел письмом вчера поздно вечером (типа ночью).

DimkaS

Спасибо, сегодня посмотрю.

DimkaS

Вот еще проблемка нашлась. Свежеподключенный диск расшарен под самбой. На нем лежит разное видео. Смотрю его с вин-машин. Если это mpeg/avi/что-то еще, то все ОК, но если dvd, то начинаются жесткие тормоза. Потом несколько секунд все хорошо, потом снова тормозит. Сеть 10 Mbit, для dvd должно хватать, т.к. раньше смотрел на одной машине с расшареного дивидюка другой (обе — вин). Проблем почти не было. Думаю, дело не в плеере и сети, а именно в диске/контроллере/самбе.

Куда копать?

DimkaS

Вопрос снимается — битрейт этой дивидишки зашкаливает за 10 Мбит/с, а тормоза уже при 7-ми начинаются…