Eu tenho um Compaq Presario CQ-61 320SQ, estou usando o Ubuntu 10.04 porque, após a atualização para 10.10, meu mouse e touchpad não funcionam, a rede não funciona, o som não funciona ... (consegui corrigir a maioria dos depois de quase um mês pesquisando, mas não todos, meus 2 Desktops não têm problemas com a 10.10), então decidi voltar para a 10.04, onde tenho um problema:
Minha velocidade de banda larga é muito baixa r8169
, porque o módulo do kernel , baixei o módulo bom r8101
e toda vez que o computador inicializa, tem uma rc.local
entrada para corrigir isso.
Pergunta:
Posso carregar o módulo permanentemente de um local específico. Eu ouvi falar, /etc/modules
mas preciso do nome do módulo, mas preciso carregá-lo a partir de um caminho específico (onde está o caminho padrão para isso)?
Obrigado.
Então, eu estudei o script:
Ele cria o arquivo r8101.ko
, /lib/modules/`uname -r`/kernel/drivers/net
então eu acho que, desde que ninguém exclua esse arquivo, e eu não atualizo o kernel, talvez adicionando r8108
ao /etc/modules
funcione e adicione r8169
à lista negra ... Vou tentar.
EDIT2:
Então eu adicionei r8101
para /etc/modules
e blacklist r8169
para /etc/modprobe.d/blacklist.conf
. Ele ainda usa o módulo antigo .:
radu@adu:~$ lsmod | grep r8
r8101 67626 0
r8169 34108 0
mii 4381 1 r8169
EDIT: O módulo é carregado usando este script que acompanha:
#!/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
Respostas:
Então, para reunir todos os dados para uma resposta, aqui está:
Após a primeira compilação do novo módulo, tive o arquivo de módulo
r8101.ko
no/lib/modules/$(uname -r)/kernel/drivers/net
.Eu adicionei
r8101
para/etc/modules
eblacklist r8169
para/etc/modprobe.d/blacklist.conf
, mas eu ainda estava a inicialização para o módulo antigo.Então eu corro
sudo update-initramfs -u
e, depois de reiniciar, o novo módulo foi carregado conforme o esperado (graças ao comentário @papukaija).fonte