https://bugzilla.suse.com/show_bug.cgi?id=1173402
https://bugzilla.suse.com/show_bug.cgi?id=1173402#c9
--- Comment #9 from Thomas Blume
That only does something in the bootdev/ip=dhcp case though AFAICT, but a bit further up there is:
Hm, but the code writing did-setup is outside the 'for p in $(getargs ip=)' loop. The conditionals there are: --> # no ip option directed at our interface? if [ -z "$NO_AUTO_DHCP" ] && [ ! -e /tmp/net.${netif}.up ]; then --< "$NO_AUTO_DHCP" is only set in special cases and /tmp/net.${netif}.up shouldn't have been written either since that is done in the for loop. In this case it should go down to: --< if [ $? -eq 0 ] && [ -z "$(ls /tmp/leaseinfo.${netif}*)" ]; then > /tmp/net.${netif}.did-setup if [ -e /sys/class/net/${netif}/address ]; then > /tmp/net.$(cat /sys/class/net/${netif}/address).did-setup fi 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?
I already burned my fingers by writing did-setup too early in the code. That might skip the setup of other configured interfaces or the setup of an dual ipv4/ipv6 stack. I want to be very careful here.
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.
Correct, the culprit is the missing did-setup, but I'm not sure yet why it doesn't get written. Do you see any other reason?
...
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...
Ok, so I don't need to consider the netroot case. Let's focus on the did-setup then. -- You are receiving this mail because: You are the assignee for the bug.