systemd-networkd 启动后 nfs 启动挂起

systemd-networkd 启动后 nfs 启动挂起

我正在尝试通过 tftp 内核 + nfs rootfs 来 nfs 引导由 systemd 管理的 Linux,我的 bootargs:

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

内核和rootfs都加载成功并且系统正在运行,直到systemd-networkd启动。之后我可以无法 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

我想知道为什么systemd-networkd.service通过nfs启动系统会断网?

我猜当networkd启动时,它会撤回IP地址,然后尝试读取配置文件。此时nfs挂载已经中断,并且它没有机会读取配置文件。

如果我的猜测是正确的,如何“修复”或“解决”这个问题?

答案1

事实证明,这systemd-networkd提供了一个不释放 IP 的选项。

在配置中添加以下内容

[DHCP]
CriticalConnection=true

那么IP就不会被释放,NFS也不会挂起。

答案2

虽然这是两年前的问题,但我仍然在这里搜索。我终于得到了更好的解决方案NFS 根目录与 SYSTEMD

[Match]
Name=eth*
KernelCommandLine=!nfsroot

相关内容