আমি স্থায়ীভাবে কার্নেল মডিউলটি কীভাবে লোড করব?


13

আমার একটি কমপ্যাক প্রেসেরিও সিকিউ -১১১ 320 এসকিউ রয়েছে, আমি উবুন্টু 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

সম্পাদনা: মডিউলটি এই স্ক্রিপ্টটি ব্যবহার করে লোড করা হয় যা এটির সাথে আসে .:

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

এটি যদি / ইত্যাদি / মডিউলগুলিতে যুক্ত হয় তবে আপনার নিজের প্রশ্নের উত্তর দেওয়া উচিত।
জাভিয়ের রিভেরা

প্রত্যাশার মতো কাজ হয়নি, প্রশ্নটি আপডেট করেছে
রাদু মারিস

7
আপনি যদি / etc / মডিউলগুলি সম্পাদনা করেন তবে আপনাকে আপডেট করতে হবে (sudo হিসাবে) আপডেট-initramfs -u এবং তারপরে পুনরায় চালু করতে হবে।
পাপুকাইজা

1
@ পাপুকাইজা: আপনি একজন বুদ্ধিমান মানুষ, 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এবং পুনরায় চালু করার পরে নতুন মডিউলটি প্রত্যাশা অনুযায়ী লোড করা হয়েছিল (@ পাপুকাইজ মন্তব্যের জন্য ধন্যবাদ)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.