커널 모듈을 영구적으로로드하려면 어떻게합니까?


13

Compaq Presario CQ-61 320SQ가 있습니다. 10.10으로 업데이트 한 후 마우스와 터치 패드가 작동하지 않고 네트워크가 작동하지 않고 사운드가 작동하지 않기 때문에 Ubuntu 10.04를 사용하고 있습니다 ... 거의 한 달 동안 인터넷 검색을 한 후에도 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/modulesblacklist 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에 추가하면 문제에 답해야합니다.
Javier Rivera

예상대로 작동하지 않았다, 질문을 업데이트
Radu Maris

7
/ etc / modules를 편집하면 update-initramfs -u를 sudo로 실행 한 다음 다시 시작해야합니다.
papukaija

1
@papukaija : 사람 you'r 천재, TKS :
라두 마리스

답변:


12

따라서 모든 데이터를 답변으로 수집하려면 다음과 같습니다.

  1. 새 모듈을 처음 컴파일 한 후에 모듈 파일이 r8101.ko있었습니다 /lib/modules/$(uname -r)/kernel/drivers/net.

  2. 나는 추가 r8101/etc/modulesblacklist r8169/etc/modprobe.d/blacklist.conf하지만 난 여전히 이전 모듈로 부팅했다.

  3. 그런 다음 sudo update-initramfs -u다시 시작한 후 새 모듈이 예상대로로드되었습니다 (@papukaija 의견 덕분에).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.