web-dev-qa-db-ja.com

udevルールの再読み込みに失敗する

/etc/udev/rules.d(Ubuntu)のルールを変更して、イーサネットポート名を0から1および1から2に変更しましたが、実行するたびに次のようになります。

    Sudo service udev restart
    Sudo udevadm control --reload-rules

再起動するまでイーサネットポート番号は更新されません。

これは明らかに通常のコンピューターを実行する場合の問題ではありませんが、スクリプトを機能させるためにそれぞれが特定のイーサネットポートに設定された異なるカーネルを必要とする複数のシステムでイーサネットポートをテストするために、このアイデアをライブCD(Knoppix)に実装する必要があります、そして私がそれを行うために見つけた唯一の方法はudevルールを使用することでしたが、再起動しない限りルールが更新されないため、それは簡単には不可能です。

マシンを再起動せずにこれらのポートを変更する方法を知っている人はいますか?

2
Null_Fragment

ルールを再ロードすると、次にデバイスが検出されたときにデバイスに正しい名前が付けられていることを確認するだけです。ネットワークインターフェイスドライバー(カーネルモジュール)をアンロードして再度ロードする必要があります。

ドライバがカーネルモジュールの場合は、モジュール名を見つけてリロードします(おそらく、カーネルを自分で構成しなかった場合)。これにより、このドライバーを使用するすべてのインターフェイスがシャットダウンされることに注意してください(または以下を参照)。

# 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
0
Ambroz Bizjak

ルールは、デバイスが接続されている場合にのみ適用されます。 udevadm triggerを試して、ルールがすべてのデバイスに再適用されるようにします。


udevadmのマニュアルページからの引用:

--reload-rules

ルールファイルをリロードするようにudevdに通知します。 udevデーモン変更を自動的に検出します、このオプションは通常必要ありません。ルールの再読み込み既存のデバイスに変更を適用しません

1
user1686