-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
I quite often connect my RPi to my Windows system with a direct cable using the 169.254.xxx.xxx address scheme. By assiging 169.254.3.14 I can easily find my RPi. It's a convenient way to work away from home to get connected before the WiFi (which often needs a password or web page interaction) is running.
If I bring the machine home and don't connect a cat5 cable to my home router (or connect to my laptop) then the kernel hangs during boot. I get the splash screen and the Raspberry logo and nothing more.
Looking in the code and /proc/config.gz I think I've found the cause.
The kernel config has CONFIG_ROOT_NFS=y
So when we run in net/ipv4/ipconfig.c the retries count is ignored and we loop round
#ifdef CONFIG_ROOT_NFS
if (ROOT_DEV == Root_NFS) {
pr_err("IP-Config: Retrying forever (NFS root)...\n");
goto try_try_again;
}
#endif
which causes the boot to hang.
The quick resolution is simple
- Pull the card, edit cmdline.txt to drop the ip=169.254.3.14 and reboot
- Wire the ethernet to my laptop
The permanent fix is to reset CONFIG_ROOT_NFS and rebuild the kernel.