Як я назавжди завантажую модуль ядра?


13

У мене Compaq Presario CQ-61 320SQ, я використовую Ubuntu 10.04, оскільки після оновлення до 10.10 моя миша та тачпад не працюватимуть, мережа не працюватиме, звук не працюватиме (мені вдалося виправити більшість їх майже через місяць гуглити, але не всі, у моїх 2 Настільних комп’ютерів немає проблем з 10.10), тому я вирішив перейти на 10.04, де у мене є проблема:

Моя широкосмугова швидкість дуже низька через модуль ядра r8169, я завантажував хороший модуль r8101і кожен раз, коли завантажуються комп'ютерні rc.localзаписи, щоб виправити це.

Питання:
Чи можу я постійно завантажувати модуль з певного місця. Я чув про те, /etc/modulesале мені потрібна назва модуля, але я мушу завантажити його з певного шляху (де для цього шлях за замовчуванням)?

Дякую.

Тому я вивчив сценарій:

Вона створює файл r8101.koв /lib/modules/`uname -r`/kernel/drivers/netтак що я думаю, поки ніхто не видалить цей файл, і я не оновлювати ядро, можливо , додавання r8108до /etc/modulesпрацюватиме, і додати r8169в чорний список ... Я дам йому спробувати.

EDIT2:
Тому я додав 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

EDIT: Модуль завантажується за допомогою цього сценарію, який постачається разом із ним:

#!/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 / module працює, вам слід відповісти на власне запитання.
Хав'єр Рівера

не працювало, як очікувалося, оновив питання
Radu Maris

7
Якщо ви редагуєте / etc / модулі, вам потрібно запустити (як sudo) update-initramfs -u і потім перезапустити.
papukaija

1
@papukaija: людина, ти геній, tks :)
Раду Маріс

Відповіді:


12

Отже, щоб зібрати всі дані для відповіді, ось це:

  1. Після першого компіляції нового модуля я мав файл модуля r8101.koв /lib/modules/$(uname -r)/kernel/drivers/net.

  2. Я додав r8101до /etc/modulesі blacklist r8169до , /etc/modprobe.d/blacklist.confале я до сих пір завантаження для старого модуля.

  3. Потім я запускаюсь, sudo update-initramfs -uа потім після перезавантаження новий модуль завантажується як очікувалося (завдяки коментарю @papukaija).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.