我正在尝试通过 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