У меня Compaq Presario CQ-61 320SQ, я использую Ubuntu 10.04, потому что после обновления до 10.10 моя мышь и тачпад не работают, сеть не работает, звук не работает ... (Мне удалось исправить большинство из них после почти месяца поиска в Google, но не у всех моих 2 рабочих столов нет проблем с 10.10), поэтому я решил вернуться к 10.04, где у меня проблема:
У меня очень высокая скорость широкополосного доступа из-за низкого уровня модуля ядра r8169
, я скачал хороший модуль r8101
, и каждый раз, когда компьютер загружается, появляется запись rc.local
, чтобы это исправить.
Вопрос:
Могу ли я загрузить модуль постоянно из определенного места. Я слышал о /etc/modules
, но там мне нужно имя модуля, но я должен загрузить его по определенному пути (где путь по умолчанию для этого)?
Спасибо.
Итак, я изучил скрипт:
Он создает файл r8101.ko
в /lib/modules/`uname -r`/kernel/drivers/net
, поэтому я думаю, что пока никто не удалит этот файл, и я не обновлю ядро, возможно, добавив [ 118] до /etc/modules
, и добавьте r8169
в черный список ... Я попробую.
РЕДАКТИРОВАТЬ 2:
Поэтому я добавил r8101
в /etc/modules
и blacklist r8169
в /etc/modprobe.d/blacklist.conf
. Он по-прежнему использует старый модуль .:
radu@adu:~$ lsmod | grep r8
r8101 67626 0
r8169 34108 0
mii 4381 1 r8169
РЕДАКТИРОВАТЬ: модуль загружается с помощью этого скрипта, который идет с ним. :
#!/bin/sh
# invoke insmod with all arguments we got
# and use a pathname, as insmod doesn't look in . by default
TARGET_PATH=/lib/modules/`uname -r`/kernel/drivers/net
echo
echo "Check old driver and unload it."
check=`lsmod | grep r8169`
if [ "$check" != "" ]; then
echo "rmmod r8169"
/sbin/rmmod r8169
fi
check=`lsmod | grep r8101`
if [ "$check" != "" ]; then
echo "rmmod r8101"
/sbin/rmmod r8101
fi
echo "Build the module and install"
echo "-------------------------------" >> log.txt
date 1>>log.txt
make all 1>>log.txt || exit 1
module=`ls src/*.ko`
module=${module#src/}
module=${module%.ko}
if [ "$module" == "" ]; then
echo "No driver exists!!!"
exit 1
elif [ "$module" != "r8169" ]; then
if test -e $TARGET_PATH/r8169.ko ; then
echo "Backup r8169.ko"
if test -e $TARGET_PATH/r8169.bak ; then
i=0
while test -e $TARGET_PATH/r8169.bak$i
do
i=$(($i+1))
done
echo "rename r8169.ko to r8169.bak$i"
mv $TARGET_PATH/r8169.ko $TARGET_PATH/r8169.bak$i
else
echo "rename r8169.ko to r8169.bak"
mv $TARGET_PATH/r8169.ko $TARGET_PATH/r8169.bak
fi
fi
fi
echo "Depending module. Please wait."
depmod -a
echo "load module $module"
modprobe $module
echo "Completed."
exit 0
Итак, чтобы собрать все данные для ответа, вот оно:
После первой компиляции нового модуля у меня был файл модуля r8101.ko
в /lib/modules/$(uname -r)/kernel/drivers/net
. [+1112]
Я добавил r8101
в /etc/modules
и blacklist r8169
в /etc/modprobe.d/blacklist.conf
, но все еще загружался со старым модулем.
Затем я запускаю sudo update-initramfs -u
, а затем после перезапуска новый модуль загружается, как и ожидалось (благодаря комментарию @papukaija).