[sf-lug] systemd criticism

Rick Moen rick at linuxmafia.com
Wed Aug 27 18:59:52 PDT 2014


Quoting Jim Stockford (jim at well.com):

> I think of the kernel as process 0 and init as process 1.  I read the
> Wikipedia excerpt as systemd replacing init, i.e.  systemd has process
> ID 1 and init need not apply.

Not quite right.  'init' is a Unix system _role_ aka system function
-- involving at minimum being process #1, the ancestor of all other
userspace processes -- a role that can be filled by any of a number of
alternatively usable pieces of software.

The specifc init installed by default in most Linux distros over the past
two decades is one that closely follows the design used in AT&T System V
Unix, hence that init's name, SysVInit.  It's a small, extremely well
debugged, deliberately modest-featured binary compiled from C source.
There have always been some Linux distros that default to a different
init, as Slackware does.  And there are a number of other inits used
by non-typical distros by default, e.g., Gentoo Linux defaults to using
one called OpenRC.

(Note the term 'default':  Distros often offer a choice among several
inits that they package.)

SysVInit's 'init' binary is always /sbin/init, but there's no reason why
some other init mightn't use that file location as well.  Or the
alternative init package might turn /sbin/init into a symbolic link
pointing to its binary elsewhere.

The BSDs (and Slackware) default to an init somewhat different from
SysVInit, one logically enough called BSD init.  Recent Solaris releases
switched from SysVInit to Sun Microsystems's SMF = Service Management
Facility.  Ubuntu is at the moment using Scott James Remnant's 'Upstart'
as that distro's default init.  Apple Macinitosh OS X uses launchd,
after for many releases relying on program launcher SystemStarter
started from a BSD init.

Init processes differ widely in the scope of what system management
tasks they take on:  Some are featureful, others not.  They also differ 
widely in their dependencies, e.g., Upstart and systemd require D-Bus
inter-process communication, and systemd is tied to a number of
facilities available only with the Linux kernel (e.g., udev).





More information about the sf-lug mailing list