Re: RFC: OpenRC as Init System for Debian
On 04/27/2012 02:02 AM, Russ Allbery wrote:
> Petter Reinholdtsen <firstname.lastname@example.org> writes:
>> Say you want to mount a network disk during boot. This depend on the
>> network being configured. This in turn might depend on a DHCP reply
>> from a DHCP server, and to send the DHCP request the network card need
>> to be detected. To detect the network card, the network driver need to
>> be loaded, and the network card need to be found on the PCI or some
>> other internal bus. And with the Linux kernel today, there is no way to
>> know when during boot the network card will be found on the bus. To
>> make this work reliably, the boot system need to be event based, not
>> sequence based.
> And lest someone think this is a theoretical exercise, we *frequently* get
> bugs filed against packages like OpenAFS, the Kerberos KDCs, or OpenLDAP
> that are boot-order-dependent and network-dependent and either don't start
> or start in unuseful ways or at unuseful times because of lack of event
> notification for when interfaces are *actually* ready or when network
> devices are *really* available.
How do you define "really available"? When the link is up (and your
favourite cisco is still blocking traffic to figure out its STP fun?) or
you default gateway is pingable (and waits for you to start your
VPN/authentication/whatever stuff)... and so on. There is always a
reason why you need to configure something manually for the special
cases - I can't see why an event driven system would be reduce the pain
enough to make it worth the hassle to migrate to it.
> These bugs are essentially unresolvable without something that understands
> kernel events and can use them as input into boot dependency processing.
> This is why so many packages resort to adding "sleep" calls with random
> delays to their init scripts in the hope that everything will be ready
> after some arbitrary delay.
> The alternative is to add significantly additional complexity to every
> package like those listed above that needs the network to loop and retry
> if the network isn't available when it first starts. This is a huge waste
> of effort.
Bernd Zeimetz Debian GNU/Linux Developer
GPG Fingerprint: ECA1 E3F2 8E11 2432 D485 DD95 EB36 171A 6FF9 435F