Làm thế nào để tôi tải vĩnh viễn một mô-đun hạt nhân?


13

Tôi có Compaq Presario CQ-61 320SQ, tôi đang sử dụng Ubuntu 10.04 vì sau khi cập nhật lên 10.10, chuột và bàn di chuột của tôi không hoạt động, mạng sẽ không hoạt động, âm thanh sẽ không hoạt động ... (Tôi đã cố gắng khắc phục hầu hết chúng sau gần một tháng googling, nhưng không phải tất cả, 2 Máy tính để bàn của tôi không có vấn đề gì với 10.10), vì vậy tôi quyết định chuyển về 10.04, nơi tôi gặp vấn đề:

Tốc độ băng thông rộng của tôi rất thấp do mô-đun hạt nhân r8169, tôi đã tải xuống mô-đun tốt r8101và mỗi khi máy tính khởi động có mộtrc.local mục để khắc phục điều này.

Câu hỏi:
Tôi có thể tải modul vĩnh viễn từ một vị trí cụ thể không. Tôi đã nghe nói về /etc/modulesnhưng tôi cần tên mô-đun, nhưng tôi phải tải nó từ một đường dẫn cụ thể (đâu là đường dẫn mặc định cho điều đó)?

Cảm ơn bạn.

Vì vậy, tôi đã nghiên cứu kịch bản:

Nó tạo ra các tập tin r8101.kotrong /lib/modules/`uname -r`/kernel/drivers/netvì vậy tôi nghĩ rằng miễn là không ai sẽ xóa tập tin đó, và tôi không cập nhật kernel, có thể thêm r8108vào /etc/modulessẽ làm việc, và thêm r8169vào danh sách đen ... Tôi sẽ cung cấp cho nó một thử.

EDIT2:
Vì vậy, tôi đã thêm r8101vào /etc/modulesblacklist r8169để /etc/modprobe.d/blacklist.conf. Nó vẫn sử dụng mô-đun cũ.:

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

EDIT: Mô-đun được tải bằng cách sử dụng tập lệnh này đi kèm với nó.:

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

Nếu thêm nó vào / etc / mô-đun hoạt động, bạn nên trả lời câu hỏi của riêng bạn.
Javier Rivera

không làm việc như mong đợi, cập nhật câu hỏi
Radu Maris

7
Nếu bạn chỉnh sửa / etc / mô-đun, bạn cần chạy (dưới dạng sudo) update-initramfs -u và sau đó khởi động lại.
papukaija

1
@papukaija: bạn là một thiên tài, tks :)
Radu Maris

Câu trả lời:


12

Vì vậy, để thu thập tất cả dữ liệu cho một câu trả lời, đây là:

  1. Sau khi biên dịch đầu tiên của mô-đun mới, tôi đã có tập tin mô-đun r8101.kotrong /lib/modules/$(uname -r)/kernel/drivers/net.

  2. Tôi đã thêm r8101vào /etc/modulesblacklist r8169đến /etc/modprobe.d/blacklist.confnhưng tôi vẫn khởi động để các module cũ.

  3. Sau đó, tôi chạy sudo update-initramfs -uvà sau khi khởi động lại mô-đun mới đã được tải như mong đợi (nhờ bình luận @papukaija).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.