Comment # 8 on bug 1173402 from
(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: