/etc/udev/rules.d(Ubuntu)のルールを変更して、イーサネットポート名を0から1および1から2に変更しましたが、実行するたびに次のようになります。
Sudo service udev restart
Sudo udevadm control --reload-rules
再起動するまでイーサネットポート番号は更新されません。
これは明らかに通常のコンピューターを実行する場合の問題ではありませんが、スクリプトを機能させるためにそれぞれが特定のイーサネットポートに設定された異なるカーネルを必要とする複数のシステムでイーサネットポートをテストするために、このアイデアをライブCD(Knoppix)に実装する必要があります、そして私がそれを行うために見つけた唯一の方法はudevルールを使用することでしたが、再起動しない限りルールが更新されないため、それは簡単には不可能です。
マシンを再起動せずにこれらのポートを変更する方法を知っている人はいますか?
ルールを再ロードすると、次にデバイスが検出されたときにデバイスに正しい名前が付けられていることを確認するだけです。ネットワークインターフェイスドライバー(カーネルモジュール)をアンロードして再度ロードする必要があります。
ドライバがカーネルモジュールの場合は、モジュール名を見つけてリロードします(おそらく、カーネルを自分で構成しなかった場合)。これにより、このドライバーを使用するすべてのインターフェイスがシャットダウンされることに注意してください(または以下を参照)。
# ls -l /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c
# rmmod atl1c
# modprobe atl1c
ただし、ドライバーが組み込まれている場合は、もう少し手間がかかります。ドライバー名とPCIIDの両方を決定し、ドライバーにデバイスからのバインドを解除してバインドし直すように指示します。
# ls -l /sys/class/net/eth0/device
lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device -> ../../../0000:06:00.0
# ls -l /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Jul 18 20:41 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c
# echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/unbind
# echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/bind
ルールは、デバイスが接続されている場合にのみ適用されます。 udevadm trigger
を試して、ルールがすべてのデバイスに再適用されるようにします。
udevadm
のマニュアルページからの引用:
--reload-rules
ルールファイルをリロードするようにudevdに通知します。 udevデーモン変更を自動的に検出します、このオプションは通常必要ありません。ルールの再読み込み既存のデバイスに変更を適用しません。