web-dev-qa-db-ja.com

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

eth1インターフェイスの名前をeth0に変更しました。 udevに設定を再読み込みするように要求する方法は?

service udev restart

そして

udevadm control --reload-rules

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

  • はい、コマンドの前にSudoを追加する必要があることはわかっていますが、上記のいずれかがifconfig -a出力に変更を加えません。eth1ではなくeth0が表示されます。

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

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

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

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

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

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

問題:マシンを再起動したくなく(別の時間がかかりますが、VMステージの構築には適していません)、コマンドで/devを再構築したいので、準備ができています-to-use VM再起動なし。

46
zerkms

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

Sudo udevadm trigger

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

29
akaihola

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

  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を実行しているかどうかを確認し、この回答を編集して、結果を反映させます。

20
Chris Wesseling

同様の問題がありました。再起動するのに時間をかけたくなかったので、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つの問題は、単純なルート追加コマンドで修正した悪いルートでした。クリスに助けてくれてありがとう!

5
user197674

これは私のために働いた(再起動せずに)

udevadm control --reload-rules ; udevadm trigger

このページの著者への称賛: http://memoryfail.wordpress.com/2013/04/02/renaming-network-device-names/

4
pikmaster

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

3
Eliah Kagan

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

Sudo reload udev

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

3
rdh

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

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

1
Merlijn

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

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

1
nodens

そのため、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.

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

0
Derek Robati
0
zhou yunjian