I have a configuration which worked pretty well over a few years, until latest update to Ubuntu Server 20.04. I have a head node: tftpd-hpa which provides pxelinux.0, kernel, initrdfs and booting parameters:
root=/dev/nfs initrd=node-initramfs nfsroot=auto ip=dhcp rwThe headnode also runs isc-dhcp-server with follow configuration
default-lease-time 3600;
ddns-update-style none;
deny booting;
deny bootp;
option domain-name "XXX";
server-name "node0.XXX";
subnet XXX.XXX.XXX.0 netmask 255.255.255.0 { allow booting; allow bootp; default-lease-time 14400; max-lease-time 172800; option domain-name "XXX"; filename "pxelinux.0"; option root-path "XXX.XXX.XXX.1:/XXXXX/nfsroot"; host node1.XXX { hardware ethernet 00:25:90:5b:cd:b8; fixed-address XXX.XXX.XXX.2; option host-name "node1"; option root-path "XXX.XXX.XXX.1:/XXXX/node1"; } .......
}Of course the head node runs nfs-kernel-server and exports required directories for nodes.
However, when a diskless node is booting in and should be using nfsroot=auto to fetch root-path option from dhcp server, it crashes into rescue mode with message nsfmount: need a path
If I change kernel parameters to
root=/dev/nfs initrd=node-initramfs nfsroot=XXX.XXX.XXX.1:/XXXX/node1 ip=dhcp rwa diskless node boots up normally.
The kernel and initramfs are standard and the same as for main system in /boot directory.
Any idea, where root-path can be lost during booting?
1 Answer
It's turned out that network interface and ip address need to be specify. Line like that makes system work again
root=/dev/nfs initrd=node-initramfs nfsroot=auto ip=:::::eth0:dhcp rw