Вот надо поднять такую сетевушку. Решил скомпилить модуль из исходников, которые шли с сетевой картой на дискетке. Вот вариант установки, который предлагался там.
gcc -DMODVERSIONS -DMODULE -D__KERNEL__ -I/usr/src/modules O6 -c rl100a.c
cp rl100a.o /lib/modules/2.5.5-15smp/net/rl100a.o
/sbin/depmod -a
##Check /etc/conf.modules:
alias eth0 rl100a
В общем это оказался неработоспособный вариант. Во-первых я не понял смысла символов "O6" в команде компиляции gcc. Компилятор ругался на это как на несуществующую директорию. Убрал нафиг - всё вроде нормально стало. depmod поругался на полученный модуль, что нашёл там unresolved symbol.
Был там ещё вариант теста драйвера, вот он:
insmod -o eth0 rl100a.o
install -m 644 rl100a.o /lib/modules/2.5.5-15smp/net/
ifconfig eth0 200.200.200.100 netmask 255.255.255.0 up
route add -net 200.200.200.0 netmask 255.255.255.0 eth0
route add default gw 200.200.200.2 eth0
Первая же команда ругается на то, что мол я скомпилил модуль под ядро 2.2.5-15, а типа рабочее ядро - это 2.2.5-15smp. Возникает вопрос: рабочее ядро действительно 2.2.5-15smp, ну а почему компилятор этого не увидел, а скомпилил под 2.2.5-15?
Вопрос у меня такой, как вообще правильно скомпилить модуль? Какая процедура действий? Если всё примерно правильно, то как указать компилятору, когда тот компилит модуль, чтоб он туда не запихивал версию ядра? Например, при компиляции ядра такую опцию можно выбрать.