[Exherbo-dev] New initsystem

Bryan Østergaard bryan.ostergaard at gmail.com
Mon Feb 11 19:44:21 GMT 2008

I've been looking at initsystems for quite some time now as most of
you already know. I don't really trust gentoos
initsystem to go in a direction that we'd be happy with[1]. There's a
number of alternatives however that all seem
to have one or more serious shortcomings.

1. gentoo baselayout: 'nough said
2. initng: sysvinit replacement designed to speed up booting, no
interesting new features or fixes for old sysvinit warts.
3. einit: threaded /sbin/init replacement targeted at low resource
systems / usage. Modular, supporting scheme
 and xml initscripts among others. Flexible in that you can write
initscripts in a number of languages but doesn't really
provide any exiting features beyond what sysvinit already does.
4. pinit: parallel sysvinit replacement by mandriva. Goals are LSB
compliance, don't mix up script output and
shouldn't need heavy modifications to existing init scripts. How much
more boring can a new initsystem be?
5. runit: primary goal seems to be reliability as in respawning
services, making sure they don't take up too much
memory and decent logging.
6. upstart: eventbased initsystem allowing for very flexible
configurations. Sadly lacks any kind of dependency
support completely and upstream seems to be against adding
dependencies to upstart as it can be easily
implemented in initscripts instead.

Eventbased systems like Upstart seems to have the greatest promise
imo. An eventbased system allows us to start
CUPS when connecting to a network for example or start initscripts
based on udev events like plugging in an
USB device. I'm not really looking forward to fighting Upstart
upstream on the dependency issue or maintaining
 an external patchset adding that with all the problems that would
give us. So I've pretty much decided to write my
own initsystem from scratch instead.

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.

Bryan Østergaard

[1]. See baselayout 2.x

More information about the Exherbo-dev mailing list