udev を再起動する正しい方法は何ですか?

udev を再起動する正しい方法は何ですか?

インターフェースの名前eth1を に変更しましたeth0udev設定を再度読み込むように依頼するにはどうすればよいでしょうか?

service udev restart

そして

udevadm control --reload-rules

役に立ちません。再起動以外に有効な方法はありますか? (はい、再起動はこの問題の解決に役立ちます)

  • はい、コマンドの先頭に を付けるべきなのはわかっていますsudoが、上記で投稿したどちらの方法でもifconfig -a出力は変わりません。 ではeth1なく が引き続き表示されますeth0

  • udev-rule 行のプロパティを変更しましたNAME。これが無効になる理由はわかりません。

エラーはありません上記で投稿した両方のコマンドを実行しましたが、出力の実際のインターフェース名は変更されませんifconfig -a。再起動を実行すると、インターフェース名は期待どおりに変更されます。

開発目的で、仮想マシン (VirtualBox 駆動) のクローンを作成し、何らかの方法で事前設定するスクリプトを作成します。

そこで、VM をクローンするコマンドを実行して起動し、ネットワーク インターフェイスの MAC が変更されている限り、udev2 番目のルールをネットワークの永続ルールに追加します。マシンが初めて起動した直後には、2 つのルールがあります。

  • eth0元のVMイメージMACに存在していた限り、存在しない
  • eth1は存在しますが、すべてのファイルのすべての構成が を参照しているeth0ため、私にとってはあまり良くありません。

そこで、sedの行を削除しeth0(これはクローン イメージでは古く、役に立たない)、eth1に置き換えますeth0。現在、有効な永続ルールがありますが、eth1にはまだ が残っています/dev

問題: マシンを再起動したくありません (再起動するとさらに時間がかかり、VM の構築段階では好ましくありません)。/dev再起動せずにすぐに使用できる VM が用意できるように、何らかのコマンドで再構築したいだけです。

答え1

これがネットワーク構成の再読み込みに役立つかどうかはわかりませんが、/etc/udev/rules.d/70-persistent-cd.rulesDVDデバイスリンクを から に修正し/dev/dvd1たときに/dev/dvd、以下を実行する必要がありました。

sudo udevadm trigger

新しいリンクを作成します。

答え2

ここで示されているすべてのアドバイスを正しい順序で組み合わせる必要があります。

  1. ネットワークをダウンさせるservice networking stop
  2. カーネルからドライバーモジュールをアンロードする
    1. モジュールの名前を見つけてlspci -v、「使用中のカーネル ドライバー:」を探します。
    2. modprobe -r <driver module>
  3. udevルールを再読み込みするudevadm control --reload-rules
  4. 新しいルールを発動するudevadm trigger
  5. 負荷ドライバーmodprobe <driver module>
  6. ネットワークを再起動するservice networking start
  7. (オプション)起動前にインターフェース名iptablesを参照したスクリプトを再実行します。eth

手順 4 または手順 5 は実際には必要ないと思いますが、これらの手順は私の場合はうまくいきました。手順 4 の後に手順 2.1 を実行して、トリガー コマンドが既に手順 5 を実行しているかどうかを確認できます。実行している場合は、この回答を編集して結果を反映させます。

答え3

私も同様の問題を抱えていました。再起動に時間をかけたくなかったので、Chris Wesseling の提案に従ってワンライナーを実行しました。

/etc/init.d/networking を停止 && modprobe -r tg3 && udevadm control --reload-rules && udevadm トリガー && modprobe tg3 && /etc/init.d/networking を開始

これは、Ubuntu 12.04.02 サーバーを使用した場合に機能しました。私の NIC は tg3 カーネル モジュール ドライバーを使用していたので、tg3 をインターフェイスが使用しているモジュールに変更します。私が使用しているモジュールは次の場所にあることがわかりました/etc/udev/rules.d/70-persistent-net.rules

PCI デバイス 0x14e4:/sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.1 (tg3) <- NIC のカーネル モジュール ドライバー

私が抱えていた唯一の問題はルートが悪かったのですが、これは簡単な route add コマンドで修正できました。助けてくれてありがとう、クリス!

答え4

sudo /etc/init.d/udev restartうまくいくはずです。試したコマンドのいくつかは、 で実行すればsudo、同様に効果的かもしれません。

関連情報