Bir çekirdek modülünü kalıcı olarak nasıl yüklerim?


13

Compaq Presario CQ-61 320SQ'um var, Ubuntu 10.04 kullanıyorum çünkü 10.10 güncellemesinden sonra farem ve dokunmatik yüzeyim çalışmıyor, ağ çalışmıyor, ses çalışmıyor ... (Çoğu şeyi düzeltmeyi başardım onları neredeyse bir ay sonra googling, ama hepsi değil, benim 2 Masaüstü 10.10 ile hiçbir sorun yok), bu yüzden bir sorun var 10.04, geri dönmeye karar verdi:

Geniş bant hızım çekirdek modülünden çok düşük r8169, iyi modülü indirdim r8101ve bilgisayar önyüklemelerinin bunu rc.localdüzeltmek için bir girişi olduğunda.

Soru:
Modülü belirli bir yerden kalıcı olarak yükleyebilir miyim? Duydum /etc/modulesama modül adına ihtiyacım var, ama belirli bir yoldan yüklemek zorunda (bunun için varsayılan yol nerede)?

Teşekkür ederim.

Bu yüzden senaryoyu inceledim:

Bu dosya oluşturur r8101.kode /lib/modules/`uname -r`/kernel/drivers/netben sürece kimse bu dosyayı silecektir olarak düşünmek öylesine, ve belki ekleyerek, çekirdek güncellemezsem r8108için /etc/modulesirade çalışmaları ve eklemek r8169kara listeye ... Ben bir deneyin verecektir.

EDIT2:
Ben eklendi r8101etmek /etc/modulesve blacklist r8169karşı /etc/modprobe.d/blacklist.conf. Hala eski modülü kullanıyor .:

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

EDIT: Modül beraberinde gelen bu komut dosyası kullanılarak yüklenir .:

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

/ Etc / modules klasörüne eklemek işe yararsa, kendi sorunuzu cevaplamalısınız.
Javier Rivera

beklendiği gibi çalışmadı, soruyu güncelledi
Radu Maris

7
/ Etc / modüllerini düzenlerseniz (sudo olarak) update-initramfs -u komutunu çalıştırmanız ve ardından yeniden başlatmanız gerekir.
papukaija

1
@papukaija: adam sen bir dahisin, tks :)
Radu Maris

Yanıtlar:


12

Tüm verileri bir cevaba toplamak için işte burada:

  1. Yeni modülün ilk derleme sonra modül dosyası vardı r8101.koiçinde /lib/modules/$(uname -r)/kernel/drivers/net.

  2. Eklediğim r8101için /etc/modulesve blacklist r8169hiç /etc/modprobe.d/blacklist.confama hala eski modülüne önyükleme edildi.

  3. Sonra çalıştırın sudo update-initramfs -uve yeniden başlattıktan sonra yeni modül beklendiği gibi yüklendi (@papukaija yorum sayesinde).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.