LinuxForum.Fans
Тема

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

Автор: SpbPavel 11 сообщений 5061 просмотров
#6707

Добрый день!


Есть дистрибутив 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 всего?

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


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

#6722

3. немного неясно, что вы имеете ввиду... если реальное ядро и установленные исходники различны - обновите ядро или же ставьте исходники от реального ядра
4. при установке компилятора соответственно были установлены необходимые ему дополнительные пакеты

Старайтесь по максимуму ставить из репозиториев всегда. Установка отдельных рпм только в крайнем случае, иначе при обновлении могут быть сюрпризы. Сборка из исходников - вообще настолько крайний случай, который может возникнуть только в том случае, если совсем уж ничего не нашлось ни в репозиториях, ни в виде отдельных пакетов, а очень нужно. И крайне желательно понимать что вы делаете и чем рискуете.
К тому же, отдельная компиляция модулей ядра грозит тем, что железка отвалится при первом же обновлении ядра.

#6774

Большое спасибо за ответ.

Заранее прошу прощения за свое невежество, я много лет занимался PBX Samsung и Panasonic, черта в ступе могу из них делать, но с *nix-системами общаюсь очень недавно. Поэтому плохо понимаю происходящее :-)

С некого CD была установлена IP-АТС Elastix на базе CentOS+Asterisk. Возникла необходимость запустить на этой машине WiFi-карту с чипсетом Atheros, которая была физически установлена, но не работала. lspci ее видит.
Нашел для AR5B91 только исходники драйвера, и после их компиляции возникла описанная проблема.

если реальное ядро и установленные исходники различны

Похоже, так и есть. Значит, нужно выяснить, какое ядро рабочее (а как?), и скачать и распаковать исходники точно такого же ядра?

#6797

рабочее ядро показывается по команде, Вами уже и представленной: uname -r, т.е. 2.6.18-164.el5-xen-i686
соответственно, исходники нужно ставить именно от этого ядра...

по поводу модуля для вай-фай, почитайте тут:
http://wiki.centos.org/HowTos/Laptops/Wireless#head-c1a7601a713aa524aebc4d4416f9aa7669d444ec
http://linuxwireless.org/en/users/Drivers/ath9k/RHEL5 (крайний случай)

Долго писал видать :)

#6800
SpbPavel написал:
Команда uname -r выдает 2.6.18-164.el5-xen-i686.

Кстати, ядро xen принципиально?

Hrafn написал:


Долго писал видать :)

))

#6818

Вот его, madwifi, и пытался ставить...
Пошел сложным путем, легких не ищем :-)

Спасибо, завтра попробую использовать Ваши рекомендации....

P.S. Ладно, хорош глумиться :-)
Глуп я в *nix...

Старайтесь по максимуму ставить из репозиториев всегда... e.t.c.

Понял, понял... :-)

Да-с. Сменил ядро. Ни madwifi, ни родной ath_pci.ko не подошли. Поставил костыль - ndiswrapper + WinXP inf. iwlist wlan0 scan видит сети.

Осталось пара вопросов: для подгрузки модуля нужно после ребута командовать modprobe ndiswrapper. Как можно загрузить модуль автоматически? И может ли этот Ateros AR5B91 (AR928X) работать как AP? На команду ifconfig wlan0 mode Ad-Hoc ругается mode: Unknown host.

Спасибо.

#7294

простите за наглость, но не зная CentOS я все же хочу посоветовать вам посмотреть в сторону
/etc/modules
/etc/modprobe.d/

#7467

Почему-то не вышло, пришлось в rc.local.

Спасибо большое, осталось только одно - сделать мост между eth0 и wlan0.
В данном случае eth0 - 192.168.1.49 (имеет выход в Инет), wlan0 - 192.168.1.50.
Как бы сделать прозрачную трубу между eth0 и wlan0?

Войдите или зарегистрируйтесь, чтобы ответить.