[Exherbo-dev] New initsystem
pioto at pioto.org
Mon Feb 11 21:27:42 GMT 2008
On Mon, 11 Feb 2008 20:44:21 +0100
"Bryan Østergaard" <bryan.ostergaard at gmail.com> wrote:
> My current plan is to:
> - implement an eventbased initsystem a bit like Upstart with full
> dependency support.
> - do away with the runlevel concept completely and come up with a much
> more useful and flexible way to handle
> which scripts should start on boot and so on
> - bash based initscripts much like Gentoos current scripts
> Before I start thinking about design I'd like to hear your ideas about
> needed features, features that suck and should be implemented
> differently and so on. I'll probably start some design documents based
> on this discussion before starting any serious implementation work.
One thing mentioned on IRC last night when we were talking about this
subject is that, for some things, it's hard to determine what sane
dependencies are. For example, on Gentoo, net.eth0 depends on
localmount. But what if our / is on NFS or something like that? It
might be best to handle that sort of case with some early userspace
scripts, but we might need to allow for some less traditional
event/dependency ideas to properly handle this. I think Ciaran brought
this point up.
Another thing I noticed while messing around with Upstart this weekend
is that, for some things, its way of handling daemons seems nice.
However, it can't deal with daemons that want to fork() off
immediately (the daemon and pid stanzas that seem to be designed for
this don't work). But, the general idea of having it monitor the daemon
and being able to restart it as needed would be nice to have. Gentoo
can't really do that.
The idea of any of several services "providing" a service is another
thing to think about. Gentoo tries to do this with things like net (but
doesn't really get it right in the case where I have a PCMCIA card).
We'd want to do this better.
Another upstart shortcoming is that you can't really disable a job w/o
removing it from /etc/event.d. Gentoo's rc-update does a pretty decent
job of this sort of thing within the limits of that system, but we
would want to make our event-driven system able to have things disabled
by the user if desired.
More information about the Exherbo-dev