[Bug 1173402] Kernel delays boot by 12s if ip= option given
https://bugzilla.suse.com/show_bug.cgi?id=1173402 https://bugzilla.suse.com/show_bug.cgi?id=1173402#c8 --- Comment #8 from Fabian Vogt <fvogt@suse.com> --- (In reply to Thomas Blume from comment #7)
Thanks, the culprit is in the ifup.sh script. Because there is no ip= boot parameter, it goes to:
--> # no ip option directed at our interface? if [ -z "$NO_AUTO_DHCP" ] && [ ! -e /tmp/net.${netif}.up ]; then if [ -e /tmp/net.bootdev ]; then BOOTDEV=$(cat /tmp/net.bootdev) if [ "$netif" = "$BOOTDEV" ] || [ "$BOOTDEV" = "$(cat /sys/class/net/${netif}/address)" ]; then load_ipv6 do_dhcp fi else if getargs 'ip=dhcp6'; then load_ipv6 do_dhcp -6 fi if getargs 'ip=dhcp'; then do_dhcp -4 fi fi --<
That only does something in the bootdev/ip=dhcp case though AFAICT, but a bit further up there is: --> # No ip lines default to dhcp ip=$(getarg ip) if [ -z "$NO_AUTO_DHCP" ] && [ -z "$ip" ]; then if [ "$netroot" = "dhcp6" ]; then do_dhcp -6 else do_dhcp -4 fi for s in $(getargs nameserver); do [ -n "$s" ] || continue echo nameserver $s >> /tmp/net.$netif.resolv.conf done fi --< So this behaviour is a combination of: - Interfaces without explicit ip= config fall back to DHCP - It waits for (any) explicitly configured interface to be up - ip=dhcp counts as "explicitly configuring all interfaces" This might just need a '>/tmp/net.${netif}.did-setup' there? As there is no ip parameter set, it can't possibly reach the code in the 'for p in $(getargs ip=)' loop which creates the did-setup flag, but net-genrules.sh generated the initqueue hook waiting for them irregardless of any ip parameters.
...
It does setup the ip but not the netroot. So, without the ip= parameter, dracut doesn't seems to recognize that the system root is provided via network. According to the manpage, rd.neednet only commands dracut to set up the network, but not to provide netroot:
--> rd.neednet=1 boolean, bring up network even without netroot set --<
That's actually what it's used for here - have network in the initrd, but boot from local disk. It's because a dracut module (ignition) uses network for downloading files.
I guess you would have to add a netroot parameter to make dracut aware that system root is provided via network. Maybe also root=dhcp works, though.
That might break booting... Even if that works as alternative to ip=dhcp without the delay, it doesn't seem like a good idea to use it instead, just the name alone would need a big disclaimer... -- You are receiving this mail because: You are on the CC list for the bug.
participants (1)
-
bugzilla_noreply@suse.com