我正在尝试通过 tftp kernel + nfs rootfs,我的 bootargs 来 nfs-boot 一个由 systemd 管理的 linux:
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 挂载已经中断,它没有机会读取配置文件。
如果我的猜测是真的,如何“修复”或“解决”这个问题?
事实证明,这
systemd-networkd
提供了一个不释放 IP 的选项。在配置下面添加
那么IP就不会被释放,NFS也不会挂掉。
虽然这是 2 年前的问题,但我仍然在这里搜索。我终于从NFS ROOT WITH SYSTEMD获得了更好的解决方案