web-dev-qa-db-ja.com

再起動せずに70-persistent-net.rulesを再生成する方法は?

ファイル/etc/udev/rules.d/70-persistent-net.rulesは、リブート時に、udevが存在するLinuxシステム上で自動生成されます(存在しない場合)。しかし、サーバーを再起動せずに(コマンドを使用して)このルールファイルを作成する方法を知りたいです。

私はしばらくの間ググっていましたが、ルールファイルが次のスクリプトによって生成されていることがわかりました。

/lib/udev/write_net_rules

ただし、このスクリプトをコマンドラインから実行することはできません。これは、(私は)udevによって起動され、一部の環境変数が適切に設定されているためです。手動で起動すると、「$ INTERFACEがありません」というエラーメッセージが出力されます。スクリプトの開始前に環境変数INTERFACE = eth0を設定しても、「有効な一致がありません」というエラーが出力されます。言うまでもなく、2つのインターフェイス(eth0eth1)があり、両方に対してルールファイルを生成します。

次のようなudevイベントをトリガーすることも考えていました。udev自体からスクリプトが開始されることを期待していますが、何も変更されません。

udevadm trigger --type=devices --action=change

では、再起動せずにファイル/etc/udev/rules.d/70-persistent-net.rulesの永続的なネットルールを再生成する方法を誰かが知っていますか?

14
Tomas M

マニュアルページによると--action=changeudevadmのデフォルト値です。

   -c, --action=ACTION
       Type of event to be triggered. The default value is change.

したがって、--action=add代わりに。それは役立つはずです:

/sbin/udevadm trigger --type=devices --action=add
5
rush

Ubuntu Server 16.04LTSでは、70-persistent-net.rulesは存在しません。

私がしたことはすべて実行されました:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

次に、使用してファイルを作成します

Sudo vi /etc/systemd/network/10-internet.link

以下を追加します

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wqはファイルを保存します

次に、リブートして/ etc/network/interfacesファイルを調整します。その後、再起動します。

1
jadey1412

同じ問題がありましたが、ip addrリスト。以下を使用しました(ルートとして):

# ip addr # to get my mac addresses
# export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules
# replace the 00's with the real mac addr

インターフェイスごとに繰り返します。これは私のファイルを「回復」するために使用されました。 (注:1回の呼び出しですべてのインターフェイスが一覧表示されます+一致するものの名​​前変更を追加するため、1回の呼び出しの後に出力ファイルを確認することをお勧めします)

OSと現在のUDEV実装とサポートスクリプトの間には間違いなく違いがあります。注意して、私がこれをうまくやったとき、私はCentOS 6.8を使っていました。

クレジット-私は主にこのサイトを参照しました。スクリプトの変更について説明しているいくつかのスレッドのコメントがありますが、私は環境変数を使用した方がきれいだったので、優先しました: https://access.redhat.com/discussions/124021

0
gravy21