[arch-general] RFC: OpenRC as init system for Arch

Patrick Lauer patrick at gentoo.org
Wed Apr 25 20:27:37 EDT 2012

On 04/26/12 01:57, Leonid Isaev wrote:
> On Wed, 25 Apr 2012 22:03:19 +0800
> Patrick Lauer <patrick at gentoo.org> wrote:
>> Greetings,
>> in the last months there have been many discussions about init systems,
>> especially systemd. The current state seems to make no one really happy
>> - the current Arch Linux init system is a bit minimal and gets the job done,
>> but it's not superawesome. There's things like init script dependencies that
>> would be nice to have, but then it's about the smallest of all init systems
>> around.
>> [...]
>> Patrick Lauer
>> Gentoo Developer, OpenRC co-maintainer
> Thanks for your explanation. However, I sense a confusion regarding an init
> system and a boot process. AFAIU openrc still uses /sbin/init 
Yes and no, we only use sysvinit to trigger the "we are booting" and "we
are changing runlevel" events. To quote /etc/inittab:

l1:1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default

> -- the daemons/services are handled through a set of (ba)sh scripts.
most of the logic is posix sh, the dependency resolution and some other
bits are C.

> From what
> I learn from systemd documentation, all services are handled by one daemon --
> dependencies, tracking, etc. are a natural bonus, so to say.
... why should that be a daemon? (And what happens in the unlikely event
that the supercomplexified PID #1 self-terminates? I think there's a
very good set of reasons why sysvinit's "init" is very small and simple ...)

> Although I also
> dislike the idea of systemd-{journald,logind,...}, as long as those things are
> implemented via modules, I don't think they are "bloat". So IMO the only
> negative thing in arch's adoption of systemd is that rc.conf will have to go
> away :)
Yes. It's redundant ;)
In the end our runlevels are just symlinks to the init scripts in
/etc/init.d and managed with the rc-update / rc-config / rc-status
tools. "rc-update add squid default; rc" is such a boring way to add a
service to the default runlevel and start it ... and once you get hooked
on rc-status you'll be wondering why you didn't have it before.

About modules and bloat - for systemd you're going from a few hundred
lines of shell to a few hundred thousand lines of mandatory
dependencies. There's so many exciting ways you could accidentally
trigger a bug in that, it goes against my philosophy that computers
should be boring and doesn't let me be lazy. It does have a few decent
ideas (like CGroups - which ended up taking me an afternoon to get
initially patched into OpenRC) but at the cost of a rather hostile
upstream that likes writing code more than anything and goes in a
direction that makes some of us very much not happy, especially as it
now corrupts other unrelated projects like udev (oh, systemd-udevd) and
syslog-ng (haha, you get journald now!) and so on. Oh well.

Take care,


More information about the arch-general mailing list