Comment charger en permanence un module noyau?

13

J'ai un Compaq Presario CQ-61 320SQ, j'utilise Ubuntu 10.04 car après la mise à jour vers 10.10 ma souris et mon pavé tactile ne fonctionneront pas, le réseau ne fonctionnera pas, le son ne fonctionnera pas ... (j'ai réussi à réparer la plupart des après environ un mois de recherche sur Google, mais pas tous, mes 2 postes de travail n'ont aucun problème avec 10.10), j'ai donc décidé de revenir au 10.04, où j'ai un problème:

Ma vitesse à large bande est très faible en raison du module du noyau r8169, j'ai téléchargé le bon module r8101et chaque fois que l'ordinateur démarre une rc.localentrée pour résoudre ce problème.

Question:
Puis-je charger le module en permanence à partir d'un emplacement spécifique. J'ai entendu parler /etc/modulesmais là j'ai besoin du nom du module, mais je dois le charger à partir d'un chemin spécifique (où est le chemin par défaut pour cela)?

Je vous remercie.

J'ai donc étudié le scénario:

Il crée le fichier r8101.kodans /lib/modules/`uname -r`/kernel/drivers/netdonc je pense que tant que personne ne supprime ce fichier, et je ne met pas à jour le noyau, peut - être ajouter r8108à /etc/modulesvolonté travail, et ajouter r8169à la liste noire ... Je vais essayer.

EDIT2:
J'ai donc ajouté r8101à /etc/moduleset blacklist r8169à /etc/modprobe.d/blacklist.conf. Il utilise toujours l'ancien module .:

radu@adu:~$ lsmod | grep r8
r8101                  67626  0 
r8169                  34108  0 
mii                     4381  1 r8169

EDIT: Le module est chargé à l'aide du script qui l'accompagne .:

#!/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
Radu Maris
la source
Si l'ajout à / etc / modules fonctionne, vous devez répondre à votre propre question.
Javier Rivera
n'a pas fonctionné comme prévu, a mis à jour la question
Radu Maris
7
Si vous modifiez / etc / modules, vous devez exécuter (en tant que sudo) update-initramfs -u puis redémarrer.
papukaija
1
@papukaija: man you'r a genius, tks :)
Radu Maris
stackoverflow.com/questions/4356224/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Réponses:

12

Donc, pour rassembler toutes les données d'une réponse, la voici:

  1. Après la première compilation du nouveau module, j'avais le fichier de module r8101.kodans /lib/modules/$(uname -r)/kernel/drivers/net.

  2. J'ai ajouté r8101à /etc/moduleset blacklist r8169à /etc/modprobe.d/blacklist.confmais j'étais toujours en train de démarrer sur l'ancien module.

  3. Ensuite, je cours sudo update-initramfs -uet après le redémarrage, le nouveau module a été chargé comme prévu (grâce au commentaire @papukaija).

Radu Maris
la source