私は現在、実際のインストールの後に実行されるカスタムセットアップスクリプトを使用してDebianインストールをプレシードして、必要なものすべてを作成する簡単なインストーラーを作成しているところです。
ここで、ネットワーク関連のものを簡素化するために、追加のパッケージをインストールする方法を見つけ、NetworkManagerパッケージを追加しました。ただし、デバイスには複数のイーサネットインターフェイスがあり、Debianのインストール中にNetworkManagerをインストールすると、ファイル/etc/NetworkManager/system-connections/Wired connection 1
が作成されます。ただし、そのファイルは実際のシステムでは正しく構成されていません。したがって、NetworkManagerがオフのときに削除して再起動すると、すべてが正常に機能します。ただし、ファイルがあると、NetworkManagerはすべてのインターフェースに「有線接続1」のラベルを付け、アクティブにできるインターフェースは1つだけになります。全体として、そのファイルを移動する必要があります。
今私は最初に、preseed/late_command
で呼び出すスクリプトの実行中にファイルを削除するだけを試みました(スクリプトが実行されてファイルを削除します。ただし、インストール後にシステムを起動すると、ファイルは元に戻ります。次に、in-target systemctl stop NetworkManager
を使用してファイルを削除する前にNetworkManagerサービスを停止しようとしましたが、これは素敵なログ行in-target: Running in chroot, ignoring request.
を提供するだけで、当然、これも機能しません。
空の "system-connections"構成でpreseed中にNetworkManagerをインストールするにはどうすればよいですか?
要約すると、私のpreseed.cfg
からの関連する(および機能している)行は次のとおりです。
d-i pkgsel/include string ... network-manager ...
d-i preseed/late_command string sh /.../postinstall.sh
そして私のpostinstall.sh
で試しました
in-target rm /etc/NetworkManager/system-connections/*
(これにより、その瞬間にファイルが実際に削除されます)および
in-target systemctl stop NetworkManager
in-target rm /etc/NetworkManager/system-connections/*
更新:
提案されたように、私はnmcli
との接続を直接削除しようとしました。
これは私のスクリプトです:
in-target nmcli con delete $(in-target nmcli -g uuid con)
そしてこれが結果です:
May 6 09:16:43 log-output: + in-target
May 6 09:16:43 log-output: nmcli -g uuid con
May 6 09:16:43 log-output: dpkg-divert: warning: diverting file '/sbin/start-stop-daemon' from an Essential package with rename is dangerous, use --no-rename
May 6 09:16:43 in-target: Error: Could not create NMClient object: Could not connect: No such file or directory.
May 6 09:16:44 log-output: + in-target nmcli con delete
May 6 09:16:44 log-output: dpkg-divert: warning: diverting file '/sbin/start-stop-daemon' from an Essential package with rename is dangerous, use --no-rename
May 6 09:16:44 in-target: Error: Could not create NMClient object: Could not connect: No such file or directory.
有線接続の操作
デフォルトでは、NetworkManagerは検出した有線イーサネット接続ごとに接続プロファイルを生成します。接続を生成する時点では、使用可能なイーサネットアダプタがさらにあるかどうかはわかりません。したがって、最初の有線接続を「有線接続1」と呼びます。 no-auto-default
( man NetworkManager.conf
を参照)を構成するか、単に削除することで、この接続の生成を回避できます。その後、NetworkManagerはこのインターフェースの接続を再度生成しないように記憶します。接続を編集(およびディスクに永続化)したり、削除したりすることもできます。 NetworkManagerは新しい接続を再生成しません。次に、名前を好きなように変更できます。このタスクにはnm-connection-editorのようなものを使用できます。
したがって、ネットワークマネージャーをインストールする前にNetworkManager.conf
を作成し、ハードウェアに応じて、必要に応じてno-auto-default
オプションを使用してセットアップできます。 (また、インストール後に構成ファイルが上書きされていないことを確認してください 'そうではないはずです...')
他の方法として、問題のあるファイルへの書き込みアクセスをchmod u-w
またはchattr +i
でロックすることもできますが、そのように機能することを意図しておらず、他の問題が発生する可能性があるため、これはお勧めしません。
出典: Arch-wiki
接続ファイル(/etc/NetworkManager/system-connections/Wired connection 1
)はregularブートプロセス中に作成されます。接続の作成を回避できない場合、1つのオプションは、nmcli
コマンドを使用して接続を作成した後に接続を削除することです。
nmcli connection delete id <connection name>
# OR
nmcli connection delete CONNECTION_NAME
# OR
nmcli connection delete <uuid>
「有線接続1」のUUIDを取得するには:
nmcli con|grep 'Wired connection 1'|tr -s ' ' |cut -f2 -d' '
したがって:
nmcli connection delete $(nmcli con|grep 'Wired connection 1'|tr -s ' ' |cut -f2 -d' ')