(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...