Как я могу постоянно загрузить модуль ядра?


13

У меня Compaq Presario CQ-61 320SQ, я использую Ubuntu 10.04, потому что после обновления до 10.10 моя мышь и тачпад не работают, сеть не работает, звук не работает ... (Мне удалось исправить большинство после почти месяца поиска в Google, но не у всех, у моих 2 рабочих столов нет проблем с 10.10), поэтому я решил вернуться к 10.04, где у меня проблема:

Скорость моего широкополосного доступа очень низкая из-за модуля ядра r8169, я скачал хороший модуль r8101и каждый раз при загрузке компьютера появляется rc.localзапись, чтобы это исправить.

Вопрос:
Могу ли я загрузить модуль постоянно из определенного места. Я слышал о, /etc/modulesно там мне нужно имя модуля, но я должен загрузить его по определенному пути (где путь по умолчанию для этого)?

Спасибо.

Итак, я изучил сценарий:

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

РЕДАКТИРОВАТЬ 2:
Таким образом, я добавил 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

РЕДАКТИРОВАТЬ: модуль загружается с помощью этого скрипта, который идет с ним .:

#!/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 работает, вы должны ответить на свой вопрос.
Хавьер Ривера

не работает, как ожидалось, обновил вопрос
Раду Марис

7
Если вы редактируете / etc / modules, вам нужно запустить (как sudo) update-initramfs -u, а затем перезапустить.
Папукайя

1
@papukaija: человек ты гений, ткс :)
Раду Марис

Ответы:


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.