Come posso caricare permanentemente un modulo del kernel?


13

Ho un Compaq Presario CQ-61 320SQ, sto usando Ubuntu 10.04 perché dopo l'aggiornamento alla 10.10 il mio mouse e touchpad non funzioneranno, la rete non funzionerà, il suono non funzionerà ... (Sono riuscito a sistemare la maggior parte di dopo quasi un mese di googling, ma non tutti, i miei 2 desktop non hanno problemi con 10.10) quindi ho deciso di tornare a 10.04, dove ho un problema:

La mia velocità della banda larga è molto bassa a causa del modulo del kernel r8169, ho scaricato il modulo buono r8101e ogni volta che il computer si avvia ha una rc.localvoce per risolvere questo problema.

Domanda:
Posso caricare il modulo in modo permanente da una posizione specifica. Ne ho sentito parlare /etc/modulesma lì ho bisogno del nome del modulo, ma devo caricarlo da un percorso specifico (dov'è il percorso predefinito per quello)?

Grazie.

Quindi ho studiato la sceneggiatura:

Si crea il file r8101.koin /lib/modules/`uname -r`/kernel/drivers/netmodo da penso finché nessuno cancellerà quel file, e io non aggiornare il kernel, forse l'aggiunta r8108di /etc/moduleslavoro sarà, e aggiungere r8169alla lista nera ... io fare un tentativo.

EDIT2:
Così ho aggiunto r8101a /etc/modulese blacklist r8169a /etc/modprobe.d/blacklist.conf. Utilizza ancora il vecchio modulo .:

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

EDIT: il modulo viene caricato usando questo script fornito con esso .:

#!/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

Se aggiungendolo a / etc / modules funziona, dovresti rispondere alla tua domanda.
Javier Rivera,

non ha funzionato come previsto, ha aggiornato la domanda
Radu Maris,

7
Se modifichi / etc / modules devi eseguire (come sudo) update-initramfs -u e quindi riavviare.
papukaija,

1
@papukaija: amico, sei un genio, tk :)
Radu Maris,

Risposte:


12

Quindi, per raccogliere tutti i dati per una risposta, eccolo qui:

  1. Dopo la prima fase di compilazione del nuovo modulo, ho avuto il file del modulo r8101.koin /lib/modules/$(uname -r)/kernel/drivers/net.

  2. Ho aggiunto r8101al /etc/modulese blacklist r8169al /etc/modprobe.d/blacklist.confma ero ancora l'avvio da vecchio modulo.

  3. Quindi corro sudo update-initramfs -ue dopo il riavvio il nuovo modulo è stato caricato come previsto (grazie al commento di @papukaija).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.