再起動せずに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の永続ネットルールを再生成する方法は?

コメント

  • あなたは何ですか分布?どのようなinitシステムを使用していますか?
  • それは関係ありません。 ' eUdevとsysvinitでSlackwareを使用しています。ルールファイルを生成するために実行されるものを見つけるためにスタートアップスクリプトを調べていましたが、これは永続的なルールを生成するコマンドであるというコメント付きのudevadmトリガーのみが見つかりましたが、どういうわけかこれは再起動時にのみ機能します。手動で実行すると効果があります。
  • Archでは、70-persistent-net.rules/lib/udev/write_net_rulesスクリプト。したがって、'を確認することはできませんが、おそらく$INTERFACE変数がスクリプト自体に設定されています。おそらくそれは引数として渡されます。スクリプトの内容を教えていただけますか?
  • スクリプトは単に$INTERFACE変数を使用します。単純に使用され、宣言されていない変数は他にもたくさんあります。 'はudevによって呼び出され、udevは起動時にスクリプトを実行する前にすべての環境変数を設定するためです。
  • 実際にその方法を知る必要がありますかそれを再生成しますか、それとも単にファイルを編集して新しい現実を反映させることができますか?

回答

manによるとページ--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 

コメント

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

回答

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

コメント

  • 問題は 70-persistent-net.rulesを 再起動せずに再生成する方法 "回答には2回の再起動が含まれています。これは質問に対する答えです。

回答

同じ問題が発生しましたが、気づきましたリスト。以下を(ルートとして)使用しました:

# 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実装およびサポートスクリプトには間違いなく違いがあります。注:これを成功させたとき、私はCentOS6.8を使用していました。

クレジット-私は主にこのサイトを参照しました。スクリプトの変更について説明するコメントがいくつかありますが、使用することを好みました。よりクリーンな環境変数: https://access.redhat.com/discussions/1240213

コメント

  • クラップ-待ってください。'申し訳ありませんが、それは機能しませんでした。実行した手順で回答を更新する必要があります
  • わかりました。'実際に修正した方法を更新しました。状況に当てはまる場合は機能することを願っています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です