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マウントはすでに壊れており、構成ファイルを読み取る機会がありません。
私の推測が本当なら、この問題を「修正」または「回避」する方法は?
systemd-networkd
は、IPを解放しないオプションを提供します。
以下を設定に追加します
[DHCP]
CriticalConnection=true
その後、IPは解放されず、NFSはハングしません。
2年前の質問でしたが、それでもここでググってみました。そして私はついに NFS ROOT WITH SYSTEMD からより良い解決策を得る
[Match]
Name=eth*
KernelCommandLine=!nfsroot