ファイル/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
の永続的なネットルールを再生成する方法を誰かが知っていますか?
マニュアルページによると--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
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ファイルを調整します。その後、再起動します。
同じ問題がありましたが、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