Comment # 9 on bug 1173402 from
(In reply to Fabian Vogt from comment #8)
> 
> 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: