web-dev-qa-db-ja.com

systemd-networkdの起動後にnfsブートがハングする

Tftpカーネル+ nfs rootfsを介して、systemdで管理されているLinuxをnfs-bootしようとしています。

root=/dev/nfs rw nfsroot=192.168.0.10:/nfsroot/rootfs,nolock ip=192.168.0.60:192.168.0.10:192.168.0.10:255.255.255.0

systemd-networkdが開始するまで、カーネルとrootfsの両方が正常にロードされ、システムが実行されます。その後、私はpingではないマシンとNFSマウントがハングする(明らかに)ことができます。

systemd-networkdのネットワーク構成を追加してネットワークを初期化しようとしましたが、機能しません。

シリアルコンソールログ:

         Starting Network Service...
...
[  OK  ] Started Network Service.
[  OK  ] Reached target Network.
...
[  *   39.330000] nfs: server 192.168.0.10 not responding, still trying

ネットワーク構成:

[Match]
Name=eth0
[Network]
Address=192.168.0.60/24
Gateway=192.168.0.10
[Route]
Gateway=192.168.0.10
Destination=192.168.0.0

システムがnfs経由で起動されたときに、なぜsystemd-networkd.serviceがネットワークを切断するのだろうか?

networkdが開始すると、IPアドレスが取り消されてから、構成ファイルを読み取ろうとします。この時点で、nfsマウントはすでに壊れており、構成ファイルを読み取る機会がありません。

私の推測が本当なら、この問題を「修正」または「回避」する方法は?

2
Mine

systemd-networkdは、IPを解放しないオプションを提供します。

以下を設定に追加します

[DHCP]
CriticalConnection=true

その後、IPは解放されず、NFSはハングしません。

3
Mine

2年前の質問でしたが、それでもここでググってみました。そして私はついに NFS ROOT WITH SYSTEMD からより良い解決策を得る

[Match]
Name=eth*
KernelCommandLine=!nfsroot
2
Kai