web-dev-qa-db-ja.com

再起動せずにudevルールを変更するにはどうすればよいですか(たとえば、eth1をeth0に変更するなど)?

TLDR;再起動せずにどのように_/etc/udev/rules.d/70-persistent-net.rules_に変更を適用しますか? (イーサネットインターフェイスの論理名については このドキュメント を参照してください。)

ロングバージョン:

remastersys 11.04で作成されたイメージを実行する起動可能なUSBフラッシュドライブがあります。このブート可能なUSBドライブを使用して、任意のコンピューターからDHCPサーバーを実行できるようにしたいと思います。これを行うには、eth0_の_/etc/network/interfaces_に静的IPアドレスを割り当て、_eth0_の_/etc/default/isc-dhcp-server_を参照する必要があります。

ただし、ネットワークカードにはMACアドレスに基づいてethXが割り当てられるため、これはUSBフラッシュドライブが使用される最初のコンピューターでのみ機能します-以降の各コンピューターのNICは_eth1_、_eth1_など.

この問題を解決するために働くことができる2つの戦略があるようです:

  1. ethXの実行時に表示される最初のifconfigに基づいて、_/etc/network/interfaces_および_/etc/default/isc-dhcp-server_を動的に書き換えます。これは、NIC =は実際にコンピューター内にあります。
  2. _/etc/udev/rules.d/70-persistent-net.rules_を書き換えて、NICに割り当てられたMACアドレスはすべて_eth0_という名前になります。

networkingと_isc-dhcp-server_を再起動することでこれらのファイルへの変更を適用できるため、#1ができることを知っています。

ただし、このUSBドライブは別のコンピューターで使用されるため、_/etc/udev/rules.d/70-persistent-net.rules_が大量の凝り固まりを構築すると信じているため、#2は私にとってはきれいに見えます。

任意の助けをいただければ幸いです。

4
Max Masnick

私はオプション#1(ethXを必要とするさまざまな設定ファイルを動的に書き換える)に行き着きました。これは簡単なRubyスクリプトで簡単にできました。

動的な書き換えを行うスクリプトがstartup.rbの場合、startup-wrapper.rbで実際のスクリプトを呼び出すexec 'Sudo startup.rb'というラッパーを作成し、startup.rbがルート権限で実行されるようにします。

次に、gnome-terminal -e /path/to/startup-wrapper.rbというコマンドを使用して、スタートアップアプリケーションにエントリを作成しました。これにより、起動時にSudoのパスワードの入力が求められます。

0
Max Masnick