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


46

eth1インターフェイスの名前をに変更しましたeth0。構成のudev再読み込みを今すぐ依頼する方法は?

service udev restart

そして

udevadm control --reload-rules

助けないで 再起動以外の有効な方法はありますか?(はい、再起動はこの問題に役立ちます)

  • はい、コマンドの先頭にを追加する必要があることはわかっていますがsudo、上記で投稿したいずれの場合もifconfig -a出力に変更はeth1ありませんeth0

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

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

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

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

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

私はそうすることsedで行を削除するeth0(それは時代遅れとクローン化された画像では無用である)と交換してくださいeth1eth0。そのため、現在有効な永続的ルールがありますが、まだeth1あり/devます。

問題:私はマシンを再起動する必要はありません(それは建物-VM-ステージ上で良いことではありません別の時間が、かかります)と、ちょうど私がしたい/dev、私は持っているので、いくつかのコマンドを使用して再構築をすぐに使用できるVM再起動なし。


どのように変わりeth1ましたeth0か?デバイスファイルの名前を変更しましたか?もしそうなら、それはそれを行うための効果的な方法ではありません(そして、udevデーモンの正常な再起動によって変更が元に戻されることを期待すべきです)。他の方法を使用した場合は、詳細に説明してください。また、(udevデーモンの再起動またはルールの再読み込みのために)試行したコマンドを実行するときに表示されるエラーメッセージの完全かつ正確なテキストも入力してください。質問を編集して、この情報を提供できます。
エリアケイガン

@Eliah Kagan:更新。シモンズ:なぜそれを元に戻す必要がありますか?それはすべきではありません;-)
zerkms

udevでデバイスを動的に生成します/dev。再起動すると、ルールに従って再生成されます。それらに直接加えられた変更は、一般的に言えば永続的ではありません。再起動udevは正常に機能しているように見えますが、デバイス名を適切に変更していないだけです。
エリアカガン

@Eliah Kagan:特定のデバイスのルールが見つからない場合にudev のみ、新しいルールを追加します(変更しません)。一致するルールがある場合-変更せずにそれに従います。
zerkms

@Eliah Kagan:それを適切に変更しました。1行の1文字を変更できると信じるだけです ;
-zerkms

回答:


29

これは、ネットワーク構成を再ロードするのに役立ちますかどうかはわからないが、私は変更されたとき/etc/udev/rules.d/70-persistent-cd.rulesから、DVDのデバイスリンクを修正するため/dev/dvd1/dev/dvd、私は実行する必要がありました

sudo udevadm trigger

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


3
私は信じsudo udevadm trigger --action=changeについて行うには安全で、安全でないものについては、この電子メールごとに、より安全であるudevlists.ubuntu.com/archives/ubuntu-devel/2009-January/027260.html
Ehteshチョードリー

確かに、それは呼ばれています/etc/udev/rules.d/70-persistent-net.rules
-msanford

Ubuntu 15.04 udevadm triggerでは、X11セッションがロックされ、ログイン画面に戻されました。
イアンD.アレン

20

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

  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を実行しているかどうかを確認することができます。


1
すべてのデバイスがリストされているUbuntu 15.04 /etc/network/interfaces(したがって、Network Managerはそれらをそのまま残します):編集/etc/udev/rules.d/70-persistent-net.rulesしてから#2、#3、#5を実行するだけで済みました。すべてのネットワークを停止する必要はありません。他には何も必要ありません。
イアンD.アレン

5

同様の問題がありました。再起動に時間をかけたくなかったので、Chris Wesselingの提案を使用して1つのライナーを実行しました。

/etc/init.d/networking stop && modprobe -r tg3 && udevadm control --reload-rules && udevadm trigger && modprobe tg3 && /etc/init.d/networking start

これは、Ubuntu 12.04.02サーバーを使用して機能しました。私のnicsは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用のカーネルモジュールドライバー

私が抱えていた1つの問題は、単純なルート追加コマンドで修正した悪いルートでした。助けてくれてクリス!



3

sudo /etc/init.d/udev restartトリックを行う必要があります。で実行した場合、試したコマンドのいくつかsudoも同様に効果的かもしれません。


いや、ifconfig -aまだ私の古い示しeth1インタフェースは
zerkms

3

これは安全に行う必要があります:

sudo reload udev

私は問題なくこのコマンドを使用したので。


いや、ifconfig -aまだ私の古い示しeth1インタフェースは
zerkms

1

私はこれとほぼ同じ目的でしばらく研究してきましたが、ライブシステムでネットワークインターフェイス名を変更する方法を見つけることができませんでした。

私が行った回避策は、テンプレート内の/etc/udev/rules.d/70-persistent-net.rulesファイルを削除することです。つまり、次回の起動時に、ネットワークカードがeth0として表示されます。


1

ルールの変更をトリガーするにはudevをリロードする必要がありますが、ドライバーモジュールをアンロード/リロードしない限り、デバイスの名前は変更されません。

そのためmodprobe -r e1000 && modprobe e1000、udevのリロード後にこのトリックを行う必要があります。もちろん、ネットワークが必要で、e1000インターフェースしかない場合はそうしないでください。



0

そのため、Ubuntu 12.04を使用するVirtualBoxの場合、イーサネットとワイヤレスを頻繁に切り替えます。

したがって、接続が変更された場合、[デバイス]> [ネットワーク設定]から[ブリッジアダプター]を選択する必要があります。「Intel 82579LMギガビットネットワーク接続」または「Intel Centrino Ultimate-N 6300 AGN」のいずれか。

これを実行した後、私は実行することができます

sudo modprobe -r e1000
sudo service udev restart
sudo modprobe e1000
ping google.com # To test I ran this between each command.

これは、上記のすべての答えを読んだ後の私の結果の単なる説明です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.