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


14

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

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

/lib/udev/write_net_rules

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

また、このようなudevイベントをトリガーして、udev自体からスクリプトを開始することを望んでいましたが、何も変わりません:

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

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


あなたの分布は何ですか?どのような初期化システムを使用していますか?
michas

1
それは無関係だと思います。私はeUdevとsysvinitでSlackwareを使用しています。ルールファイルを生成する実行内容を見つけるために起動スクリプトを調べていましたが、これは永続的なルールを生成するコマンドであるというコメント付きでudevadmトリガーのみが見つかりましたが、どういうわけかこれは再起動時にのみ機能します手動で実行した場合の効果。
トマスM

1
私はArchでスクリプト70-persistent-net.rulesも持っていないので、関連があるかもしれません/lib/udev/write_net_rules。したがって、確認することはできませんが、おそらく$INTERFACE変数はスクリプト自体に設定されています。ほとんどの場合、引数として渡されます。スクリプトの内容を見せていただけますか?
テルドン

スクリプトは$INTERFACE変数を使用します。単純に使用され、宣言されていない変数がずっと多くあります。これは、udevによって呼び出され、udevがブート時にスクリプトを実行する前にすべてのenv変数を設定するためです。
トマスM

あなたは実際にそれを再生成する方法を知る必要がありますか、それとも単に新しい現実を反映するようにファイルを編集できますか?
ロアイマ

回答:


5

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

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

したがって、--action=add代わりに試してください。役立つはずです:

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

intel_rapl:パッケージ0に有効なraplドメインが見つかりません
Tiina

1

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ファイルを調整します。その後、再起動します。


9
質問は、「再起動せずに 70-persistent-net.rules を再生成する方法ですか?です。あなたの答えには2回の再起動が含まれています。これは質問への答えですか?
G-Manが「Reinstate Monica」と言う

0

私は同じ問題を抱えていましたが、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/1240213というコメントがあります。


がらくた-待って。すみません、それは機能しなかったコマンドでした。私がやったステップで答えを更新する必要があります
-gravy21

わかりました、私は実際に私のものを修正する方法に更新しました。それがあなたの状況に当てはまるならそれがうまくいくことを願っています。
gravy21
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.