On Dec 25, 2012 3:04 AM, "Canek Peláez Valdés" <can...@gmail.com> wrote: > > On Tue, Dec 25, 2012 at 1:38 AM, G.Wolfe Woodbury <redwo...@gmail.com> wrote: > [ snip ] > > From what has been happening with the systemd stuff, I do not see what > > advantages it really offers over the SysV scheme and its successors like > > OpenRC. Someone enlighten me please? > > I wrote the following some months ago; I think nothing much has > changed since then (I added a couple of comments): > > Take this with a grain (or a kilo) of salt, since I'm obviously > biased, but IMHO this are systemd advantages over OpenRC: > > * Really fast boot. OpenRC takes at least double the time that systemd > does when booting, easily verifiable. In my laptop systemd is twice as > fast as OpenRC; in my desktop is three times faster. (With a solid > state hard drive, my laptop now boots even faster). > > * Really parallel service startup: OpenRC has never been reliable on > parallel service startup; its documentation says it explicitly. Some > will tell you that for them "it works", but just like the guys who > have a separate /usr and refuse to use an initramfs, they just haven't > been bitten by the inherent problems of it (just ask kernel developer > Greg Kroah-Hartman). The Gentoo devs recognize that OpenRC is just > broken with parallel service startup. > > * Really simple service unit files: The service unit files are really > small, really simple, really easy to understand/modify. Compare the 9 > lines of sshd.service: > > $ cat /etc/systemd/system/sshd.service > [Unit] > Description=SSH Secure Shell Service > After=syslog.target > > [Service] > ExecStart=/usr/sbin/sshd -D > > [Install] > WantedBy=multi-user.target > > with the 84 of /etc/init.d/sshd (80 without comments). > > * Really good documentation: systemd has one of the best > documentations I have ever seen in *any* project. Everything (except > really new, experimental features) is documented, with manual pages > explaining everything. And besides, there are blog posts by Lennart > explaining in a more informal way how to do neat tricks with systemd. > > * Really good in-site customization: The service unit files are > trivially overrided with custom ones for specific installations, > without needing to touch the ones installed by systemd or a program. > With OpenRC, if I modify a /etc/init.d file, chances are I need to > check out my next installation so I can see how the new file differs > from the old one, and adapt the changes to my customized version. > > * All the goodies from Control Groups: You can use kernel cgroups to > monitor/control several properties of your daemons, out of the box, > almost no admin effort involved. > > * It tries to unify Linux behaviour among distros (some can argue that > this is a bad thing): Using systemd, the same > configurations/techniques work the same in every distribution. No more > need to learn /etc/conf.d, /etc/sysconfig, /etc/default hacks by > different distros. > > * Finally, and what I think is the most fundamental difference between > systemd and almost any other init system: The service unit files in > systemd are *declarative*; you tell the daemon *what* to do, not *how* > to do it. If the service files are shell scripts (like in > OpenRC/SysV), everything can spiral out of control really easily. And > it usually does (again, look at sshd; and that one is actully nicely > written, there are all kind of monsters out there abusing the power > that shell gives you). > > These are the ones off the top of my head; but what I like the most > about systemd is that it just works, and that it makes a lot of sense > (at least to me). > > Most of systemd features can be implemented in OpenRC, although the > speed difference will never be eliminated if OpenRC keeps using shell > files; however, Luca Barbato said that using reentrant busybox the > speed difference is greatly reduced (I haven't confirmed this, since I > haven't even installed OpenRC in months). > > Now, this set of (IMO) advantages of systemd over OpenRC pile up over > the advantages of OpenRC over SysV: the most important one (I believe) > is that OpenRC has dependencies, so a service starts only when another > has already started. AFAIK, SysV has lacked this since always. > > I don't think I have ever heard anyone saying that we should keep > using SysV; like a lot of Unix legacies, it should just die. OpenRC is > much better, but it still uses a Turing-complete language (and a > really slow one) to simply tell services when to start and when to > stop, and it doesn't reliably keep track of what services are really > still running (anyone who has ever used the "zap" command in OpenRC > knows this). > > systemd of course has dependencies, a reliable tracking of service > status (thanks in part to the use of cgroups), and its service files > can't enter in an infinite loop. > > Hope it helps. > > Regards. > -- > Canek Peláez Valdés > Posgrado en Ciencia e Ingeniería de la Computación > Universidad Nacional Autónoma de México >
Thank you. I think that may well be the cleanest set of favorable arguments I've seen for systemd. Now, question: could I not create a "/usr" service and make things dependent on /usr come after it's been mounted? That seems the single, core missing piece.