ファイル/etc/udev/rules.d/70-persistent-net.rules
は、udevを使用するLinuxシステムで自動生成されます(存在しない場合)。リブート。しかし、サーバーを再起動せずに(コマンドを使用して)このルールファイルを作成する方法を知りたいのです。
しばらくグーグルしていたところ、ルールファイルがこのスクリプトによって生成されていることがわかりました。
/lib/udev/write_net_rules
ただし、このスクリプトは、いくつかの環境変数が適切に設定された状態でudevによって開始される必要があるため、コマンドラインから実行することはできません。手動で起動すると、「$ INTERFACEがありません」というエラーメッセージが出力されます。スクリプトの開始前に環境変数INTERFACE = eth0を設定した場合でも、「有効な一致がありません」というエラーが出力されます。言うまでもなく、2つのインターフェース(eth0
とeth1
)があり、両方のルールファイルを生成したい。
udev自体からスクリプトが開始されることを期待して、このようなudevイベントをトリガーすることも考えていましたが、何も変わりません:
udevadm trigger --type=devices --action=change
だから、誰か知っていますか再起動せずにファイル/etc/udev/rules.d/70-persistent-net.rules
の永続ネットルールを再生成する方法は?
コメント
回答
manによるとページ--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ドメインが見つかりません
回答
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
コメント
- クラップ-待ってください。'申し訳ありませんが、それは機能しませんでした。実行した手順で回答を更新する必要があります
- わかりました。'実際に修正した方法を更新しました。状況に当てはまる場合は機能することを願っています。
70-persistent-net.rules
も/lib/udev/write_net_rules
スクリプト。したがって、'を確認することはできませんが、おそらく$INTERFACE
変数がスクリプト自体に設定されています。おそらくそれは引数として渡されます。スクリプトの内容を教えていただけますか?$INTERFACE
変数を使用します。単純に使用され、宣言されていない変数は他にもたくさんあります。 'はudevによって呼び出され、udevは起動時にスクリプトを実行する前にすべての環境変数を設定するためです。