わかりましたが、どのようなハードウェア障害にも備えて移植可能なディストリビューションを作成しようとしていました。
私はDebianディストリビューションを作成(または復元)しています。マルチベルト(またはマイバックアップから)結果ディスクは、次のような新しい(ほとんど互換性のある)ハードウェアから起動可能である必要があります。VirtualBox マシン。
私のように以前に質問しました、「リムーバブルディストリビューション」に必要ないくつかの点の1つは、ネットワークインターフェイスの名前を処理することです。
たとえば、実際のシステムでは、最初のイーサネットデバイスの名前は、enp2s0
VirtualBoxでは名前ですenp0s3
。/etc/network/interfaces
起動時にファイルを作成するにはどうすればよいですか?
ネットワークインタフェース名を再マッピングし(おそらくシンボリックリンクを介して)、基本ハードウェアの実際のネットワークインタフェース名を知らずに各アプリケーションにその名前(役割名)を使用させるより一般的な方法はありますか?
答え1
この問題を解決する方法はいくつかあります。
最もおなじみの方法は、おそらく起動オプションを使用するか、net.ifnames=0
上書きを使用するか、/lib/systemd/network/99-default.link
実際にln -s /dev/null /etc/systemd/network/99-default.link
新しいスタイル名を実装するudevルールファイルをマスクして、新しいネットワークインターフェイスの命名スキームを無効にすることですln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
。Debian Wiki古典的な命名スキームを復元するさまざまな方法に関する追加情報。それ/etc/network/interfaces
からeth0
。
最も柔軟なアプローチは、おそらく静的使用を中止し/etc/network/interfaces
てNetworkManagerに切り替えることです。追加の設定がない場合は、自動的にデフォルトでアクティブリンクを持つネットワークインターフェイスでDHCPを使用します。これは、複数のNICがありますが、実際には1つだけが接続されている場合でも、状況を自動的に処理します(必ずしも最初のものではありません)。
ip link show
あるいは、出力(またはリンク/sys/class/network
)を読み、それに/etc/network/interfaces
合わせて書き換える(または実際のネットワーク構成ファイルが何であれ)、カスタムスクリプトを作成して必要な操作を実行できます。その後、スクリプトをシステムサービスとして使用してWants=network-pre.target
追加できます。これにより、すべてのモジュールがロードされた後にネットワーク構成が開始される前に、初期システム設定の一部としてスクリプトを実行できます。Before=network-pre.target
After=module-init-tools.service
DefaultDependencies=no