私は最終的にこの問題の回避策を見つけたので、私は今、自分の質問に答えています。
ドライバーをアンロードしてから正しい順序でロードすることにより、デバイスの順序を変更できることがわかりました。
最初の方法(bruteforce):
したがって、最初に思いついた方法は、init.dスクリプトを使用してドライバーのリロードをブルートフォースするのが簡単でした。
以下のinitスクリプトはDebian 6.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
次に、スクリプトを適切なランレベルディレクトリに追加する必要があります。これはDebianで「update-rc.d」コマンドを使用して簡単に実行できます。例えば:update-rc.d reorder-nics start S
2番目の方法(より良いと思う):
また、少なくともエレガントな方法を見つけました(少なくともDebianおよびUbuntuシステムの場合)。
まず、カーネルが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
次に、ルートとして「depmod -ae」を実行します
' update-initramfs -u 'を使用してinitrdを再作成します
最後に、正しい順序でドライバー名を/ etc / modulesファイルに追加します。
# /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
変更は、次回の起動後に有効になります。
ただし、再起動は必要ありません。次のコマンドでデバイスを切り替えるのは簡単です(もちろん、rootとして):
modprobe -r driver_0; modprobe -r driver_1; modprobe driver_1; modprobe driver_0
ソリューションの検索中に見つけた便利なリンク: