LINUX.ORG.RU

Сообщения SpbPavel

 

Как ставить *.ko?

Добрый день!

Есть дистрибутив Elastix на CentOS, ядро 2.6.18-164. По ряду причин нужно ставить именно его на разное железо. Естественно, возникает необходимость компилировать и подключать модули драйверов устройств. В /usr/src/kernels/2.6.18-164.el5-i686 лежат исходники ядра. Команда uname -r выдает 2.6.18-164.el5-xen-i686. Последний пример - драйвер WiFi для железки на чипсете Atheros. Драйвер есть, говорим make install, получаем файлы *.ko Далее при попытке установки модуля командуем insmod ath_pci.ko, получаем ошибку из-за того, что сигнатуры версии ядра и модуля различны (одна xen, другая без xen). Можно скомандовать depmod -a и modprobe, чтобы использовать в modprobe ключ, позволяющий не следить за версией. В insmod тоже есть ключ -f, но команда все равно сообщает об ошибке формата модуля. Пытался привинтить ndiswrapper + родной winXP-драйвер, он увидел железку, но тоже не ставится как модуль по той же причине. Значит, лучше использовать родной.

Вопросы:

1. При использовании insmod файлы *.ko лежат в текущем каталоге. Где должны лежать файлы *.ko при использовании команды modprobe, чтобы не было ошибки Failed to load module? Там, где исходники ядра? Там, где оно само? Еще где-то, черт его побери?

2. insmod подключает модуль до первой перезагрузки, modprobe - навсегда. Это правда?

3. Всегда возникают ошибки компиляции драйверов из-за того, что исходники ядра лежат в одном месте, а команда uname -r выдает другое. Как с этим бороться, кроме редактирования Makefile?

4. В дистрибутиве не было gcc, был установлен с помощью yum. Зачем скачалось 120Mb всего?

Спасибо заранее.

С уважением Павел С.

SpbPavel
()

RSS подписка на новые темы