On Jan 8, 2008 2:14 PM, Linus Walleij <triad(a)df.lth.se> wrote:
On Tue, 8 Jan 2008, Les Mikesell wrote:
> People running fedora will expect to use sysV style init configuration to
> control it.
Now, I think Lennart is right in pushing the concept behind Upstart and
the new InitKit, both of which break the init config paradigm and its
runlevels.
The reason was actually outlined in Miguel de Icaza's "Let's Make Unix Not
Suck" a few years back. It outlined some weaknesses of the Unix pipe and
filter and signalling system: pipes are unidirectional, data is not typed,
signals are crude in essence. Component-based thinking through CORBA led
to the invention of Bonobo, then the condensed DCOP and eventually D-Bus
which actually does the tricks most sought after: bidirectional messages
between processes, typed messages, a strict namespace, broadcast messages.
The SysVInit system currently suffers from not being able to use such a
mechanism.
Upstart solved it, basically, but has some design flaws and is used in
init-compatibility mode in Ubuntu. So now InitKit is coming along.
It's worth sacrificing runlevels to reach the next step of unsucky Unix.
POSIX does not mandate init and its runlevels, nor does the Single Unix
spec. I think there is a good reason for: it was awkward, so it wasn't
standardized. If everyone though it was a good idea they would have
standardized it back when POSIX was written. (I wasn't a member of the
committes tho, so who knows.)
I think it is important to look what interfaces the init system
provides and which ones should be preserved. The current init has
three, /etc/inittab to determine what is done for runlevels, the
/etc/rc.d/rc symlinks to determine what services are run by
/etc/rc.d/rc, and the /etc/init.d scripts that are executed.
I think it is important that we preserve the ability to use sysv-style
init scripts. They are part of LSB. It would be lots of work to
convert everything to any new way. They are installed by third-party
packages. It might be possible to change the functions to work better
with a new system (for example by not forking when running new
programs). I think it would be acceptable if the new features
required a new file format as long as the old one is supported. The
/sbin/service program should work with both. It would be nice if
there was a program that could use the LSB metadata to configure
dependencies and other startup.
The /etc/inittab config file is specific to SysV init. Other systems
don't even have the concept of runlevels. It would be nice to
preserve the /etc/rc.d symlinks for determining which service to
start, but the standard interface is the chkconfig program. Other
Linux distributions with SysV init have the symlinks in different
places. It would be nice if there was a program that could produce
the new configuration from the old and even synchronize them after
changes to the old.
- Ian