[ale] Origins of Linux, do we care?

Solomon Peachy pizza at shaftnet.org
Fri Sep 18 18:27:51 EDT 2015


On Fri, Sep 18, 2015 at 03:19:15PM -0400, leam hall wrote:
> Ah, sorry, my lack of clarity. The init process is vastly technically
> superior to the Windows boot process.

I'm not sure you're really comparing apples to apples ("init" vs "boot") 
here, but okay.  

(FWIW, I have at least as much low-level visibility with systemd as I 
had prior to that with the old init scripts.  Compared to.. well, none 
with windows...)

> Because one cannot improve on one tool without breaking (into) the others.
> For example, the RH "chkconfig" and "system" commands integrated into the
> existing init scripts. You could choose to use them, or not. If someone
> came from another *nix flavor they would have a basic knowledge of the init
> system.

If you came over from some other unix or BSD system, Linux was already 
not portable with respect to init mechanisms or, fairly often, even the 
scripts themselves.  Heck, distro-to-distro differences meant that a 
script that worked on, say, RH might not work on, say, Debian.

chkconfig was unique to IRIX and RH, written because managing symlinks 
across runlevels by hand was a (let's be generous) PITA.  Incidentally, 
pre-systemd RH/Fedora used upstart, which largely did away with the 
notion of runlevels.  About all it shared with classic sysvinit were the 
basic scripts themselves.

Meanwhile.  chkconfig only worked with init symlinks, though later 
xinetd support was bolted on in an incompatible manner.  So right there 
you already had two or three different mechanisms to enable or disable 
services, plus different ways of actually starting/stopping them once 
enabled.

Perhaps a better example is the 'service' command, written to try and 
hide the differing locations to service invocation scripts.  If you were 
using 'service' to start/stop things, then nothing changed after the 
systemd migration.  Except that now everything (including socket 
activation) worked via that mechanism instead of the two (or three) 
before.

> Yes. Even though, as far as we know, the systemd folks haven't been nearly
> so legally wrong as others, they are being as demanding and unopen. "Our
> way or the highway."

> From
> http://www.pcworld.com/article/2841873/meet-systemd-the-controversial-project-taking-over-a-linux-distro-near-you.html

If you're going to ascribe behavior to the systemd devleopers, please 
directly quote them, not someone else's (incorrect) descriptions.  But 
I'll get to that in a moment.

Systemd has not forced anything on anyone.  Really.  Now your 
(formerly?) favorite linux distribution may have chosen to utilize 
systemd to replace a pile of home-grown, highly brittle and 
barely-working parts, but that was their choice to make, since they are 
the ones doing the work.  Each of those distro makers explicitly chose 
what parts of systemd to utilize; all but two components are completely, 
entirely optional -- the two required bits are systemd-as-pid1 and the 
journal.  Literally *every other part* is optional, and every component 
has an explicitly defined, public, and stable interface so it can be 
replaced with an alternative implementation of so desired.

...If that's not modularity, I don't know what is.

> "The systemd project also contains logind, a daemon that manages user
> logins, and journald, an event-logging system that controversially writes
> to binary files and not text ones. 

I concede that journald is a required component, but you can completely 
disable its writing things to disk and/or forward everything to a syslog 
daemon instead.  (in situations where there is truly obscene logging 
rates going on, this is suboptimal, but we're talking hundreds of 
thousands of logging events per second before this is a problem)

There are significant advantages to journald, but I'll not go into that 
those unless you'd like me to.

As for logind... systemd didn't force anyone to use it, but upstream 
projects (eg gnome) jumped because it provided a vastly superior user 
(and developer) experience to the half-broken-and-dead-upstream 
ConsoleKit backend -- in the sense that logind actually worked. It also 
provided a far cleaner API that proved to be easier to re-implement than 
the effort needed to fix the many problems with ConsoleKit.

(as an aside, logind was actually very easy to add to systemd, and a lot 
harder to reimplement elsewhere because systemd already had most of the 
underlying functionality necessary to implement it properly.  The last 
time I chacked, the other implementations of logind's API only handle 
basic, single-user-at-a-time use cases.)

> Systemd has also absorbed the udev project 
> <http://en.wikipedia.org/wiki/Udev> and its code, which handles the 
> management of virtual device files in the */dev/* directory and events 
> when devices are plugged in and unplugged.

Udev and systemd are developed in the same code repository, and systemd 
makes heavy use of udev.  However, udev itself can be installed and used 
without any part of systemd, and its developers treat any runtime 
dependency on systemd as a bug.

(It's not like there was a hostile takeover either; the udev folks were 
completely on board with this. Besides, there are alternatives to udev, 
including a pre-systemd fork called eudev, and busybox's tiny 
reimplementation.  I don't know how their functionality compares though)

> The list goes on and on: systemd also includes a cron 
> <http://en.wikipedia.org/wiki/Cron>-style task scheduler and networkd, 
> a daemon for managing network connections.

How many cron daemons does Debian include in their reposites? How many 
network connection managers?  How is including another any different?

FWIW I'm not aware of any mainstream distribution actually using either, 
although I am looking forward to the systemd's cron replacing 
traditional atd/crond with something that's aware of the rest of the 
system.  (eg having to hand-edit crontabs to disable things that don't 
apply because the daemon it depends on isn't running.  and re-enabling 
them when appropriate too..)
 
> More recently, systemd is gaining consoled, a user-mode console daemon that
> can be used when Linux’s virtual terminal code is stripped out of the
> kernel itself. The kernel developers seem happy to get this stuff out of
> the kernel and into user-space , but some people have to be thinking: Does
> systemd really have to take over this as well?"

Yeah, how dare systemd implement early support for an experimental 
kernel feature that has yet to be mainlined!

More seriously, console spawning is one of the few things still directly 
handled by classic sysvinit, and as such systemd has supported it from 
the beginning.  It's hard to argue that systemd shouldn't attempt to 
handle purely-in-userspace console spawning when it already has to 
implement the kernel-VT interfacing today.

Of course, others are free to implement userspace-VT management too..

> I consider the intrusiveness of systemd to be against what I understand
> about Linux. Which does not make me right and everyone else wrong.

Fair enough.  I suppose that last bit goes for me too!  :)

> The facts I refer to, and I'm open to being corrected, are that systemd
> replaces several functions previously unrelated and that it precludes using
> similar functionality in a side by side manner. Are you disagreeing with
> those points?

One of the core design principles of systemd is that a lot more stuff is 
actually related than is traditionally recognized.

Most of systemd's compoments are optional; there's nothing precluding 
using them in combination with something else that implements similar 
functionality.  (an example of this is that Fedora still uses its old 
'network' service or NetworkManager, not bothering with systemd-networkd 
as it's wholly inadequate for their needs)

There are two components in systemd that are required, and those by 
their very nature preclude being replaced with something else.  FWIW the 
highest-profile of those preclusions (systemd-as-pid1 taking over cgroup 
management) is due to decisions by kernel developers.

But other than that, I'm not aware of anything in systemd itself that 
precludes use of alternative compoments.  (Now your linux distro might 
not bother to support alternatives in any sort of integrated manner, but 
just look at Debian for the amount of pain trying to support 
"everything" will inevitably cause...)

But yes, I think I agree with you, though I believe the actual scope of 
preclusion is far smaller than what you think it is :)

> I understand the init system may not be the best solution for what is
> needed today. It meets my needs but it might not meet the needs of others.
> My own preference would have been for a new system that could stand
> alongside the existing and would let people move into it.

Speaking of Fedora here, the general end-user saw no difference pre- vs 
post-systemd, except perhaps faster bootup speeds.  What used to work 
still worked, and more stuff JustWorked(tm) automatically. That said, 
folks who tended to customize things found the transition rockier, 
depending on where they performed their customizations.

Systemd has been around for several years now, and even Fedora, the 
poster-child of systemd integration, migrated very slowly, only making 
use of the bits that they felt were useful, and retained compatibility 
with old config files/layouts/etc to this day.  Some of that 
compatibility is built into systemd (eg automatic support for /etc/fstab 
and classic /etc/init.d scripts with hooks in /etc/sysconfig) while 
other bits are fedora-specific.

It's unfortuate that there's no gradual migration path for the core 
systemd components, but.. those aren't something that are intended to be 
ripped out willy-nilly anyway.  If you changed something fundamental in 
the fedora core initscripts or bootup flow, you'd have likely ended up 
with an unbootable system.

But if you're trying to build your own distro, systemd's existance 
doesn't preclude anything else, and if anything gives you more choices 
than before.

 - Solomon
-- 
Solomon Peachy        		       pizza at shaftnet dot org
Delray Beach, FL                          ^^ (email/xmpp) ^^
Quidquid latine dictum sit, altum viditur.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 155 bytes
Desc: not available
URL: <http://mail.ale.org/pipermail/ale/attachments/20150918/eea990fa/attachment.sig>


More information about the Ale mailing list