On 04/26/12 01:57, Leonid Isaev wrote:
On Wed, 25 Apr 2012 22:03:19 +0800 Patrick Lauer <patrick@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, Patrick