আমি এখন আমার নিজের প্রশ্নের উত্তর দিচ্ছি কারণ অবশেষে আমি এই সমস্যার জন্য একটি সমাধান পেয়েছি।
আমি খুঁজে পেয়েছি যে ড্রাইভারগুলি আনলোড এবং তারপরে সঠিক ক্রমে লোড করে ডিভাইসগুলি পুনরায় অর্ডার করা সম্ভব।
প্রথম পদ্ধতি (ব্রুটফোর্স):
সুতরাং প্রথম যে পদ্ধতিটি আমি নিয়ে এসেছি তা হল init.d স্ক্রিপ্টের সাহায্যে ড্রাইভার পুনরায় লোড করা সহজ।
নিম্নলিখিত init স্ক্রিপ্টটি দেবিয়ান .0.০ এর জন্য তৈরি করা হয়েছে, তবে একই সূত্রটি যথাযথ init.d স্ক্রিপ্টগুলি ব্যবহার করে প্রায় কোনও বিতরণে কাজ করা উচিত।
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: reorder-nics
# Required-Start:
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Reloads the nics in correct order
### END INIT INFO
#
# This script should reload the nic drivers in corrected order.
# Basically it just unloads and then loads the drivers in different order.
#
echo "Reloading NICs!"
# unload the drivers
modprobe -r driver_0 # eth0 nic interface
modprobe -r driver_1 # eth1 nic interface
# load the drivers in corrected order
modprobe driver_1
modprobe driver_0
#EOF
তারপরে স্ক্রিপ্টটি অবশ্যই সঠিক রানলেভেল ডিরেক্টরিতে যুক্ত করা উচিত। এটি " আপডেট-আরসি.ডি " কমান্ডের সাহায্যে ডেবিয়ানে সহজেই করা যায় । উদাহরণ স্বরূপ:update-rc.d reorder-nics start S
দ্বিতীয় পদ্ধতি (আমার মনে হয় আরও ভাল):
আমি কিছুটা আরও মার্জিত উপায়ও পেয়েছি (কমপক্ষে দেবিয়ান এবং উবুন্টু সিস্টেমের জন্য)।
প্রথমে নিশ্চিত হয়ে নিন যে কার্নেল স্বয়ংক্রিয়ভাবে NIC ড্রাইভার লোড করে না। এটি একটি ব্ল্যাকলিস্ট ফাইল তৈরি করে করা যেতে পারে /etc/modprobe.d/
। আমি " disable-nics.conf
" নামে একটি ফাইল তৈরি করেছি । নোট করুন যে ফাইলগুলির /etc/modprobe.d/
অবশ্যই .conf
প্রত্যয় থাকতে হবে । এছাড়াও মডিউলগুলির নামকরণ /etc/modprobe.d/blacklist.conf
কার্নেলের দ্বারা মডিউলগুলির অটোলয়েডিংকে প্রভাবিত করে না, সুতরাং আপনাকে নিজের ফাইল তৈরি করতে হবে।
# Disable automatic loading of kernel driver modules
# Disable NIC drivers
blacklist driver_0 # eth0 by default
blacklist driver_1 # eth1 by default
তারপরে root হিসাবে ' Depmod -ae ' চালান
'সঙ্গে আপনার initrd পুনরায় নির্মাণ করা আপডেটের-initramfs -র -u '
এবং অবশেষে ড্রাইভারের নামগুলি সংশোধিত ক্রমে / ইত্যাদি / মডিউল ফাইলগুলিতে যুক্ত করুন।
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
# drivers in wanted order
driver_1 # this one should be loaded as eth0
driver_0 # this one should be loaded as eth1
পরবর্তী বুটের পরে পরিবর্তনগুলি কার্যকর হওয়া উচিত।
রিবুট যদিও প্রয়োজন হয় না; নিম্নলিখিত কমান্ডের সাহায্যে ডিভাইসগুলি স্যুইচ করা সহজ (মূল হিসাবে অবশ্যই):
modprobe -r driver_0; modprobe -r driver_1; modprobe driver_1; modprobe driver_0
সমাধানটি অনুসন্ধান করার সময় আমি কয়েকটি দরকারী লিঙ্ক পেয়েছি: