From: "Casper Ti. Vector" <caspervector@gmail.com>
To: supervision@list.skarnet.org
Subject: Re: Some suggestions on old-fashioned usage with s6 2.10.x
Date: Mon, 15 Feb 2021 16:36:33 +0800 [thread overview]
Message-ID: <YCoykUYGXVt+BAT9@CasperVector> (raw)
In-Reply-To: <embce1c8a5-9a23-4d50-9c6f-900385a7f8ca@elzian>
(I am extremely sorry for delaying this mail so much. I have just done
two major refactoring/overhaul projects in this vacation around the
Spring Festival, and still have one remaining. These projects are a
part of my formal occupation, but I would not have much low-distraction
time best for this kind of work apart from vacations. By the way, Happy
Chinese "Niu" Year.)
On Fri, Jan 29, 2021 at 03:48:09PM +0000, Laurent Bercot wrote:
> Bear in mind that my eventual goal for s6 is distro adoption. And
> distro maintainers will find any and every excuse to reject it.
> Having a "shutdown" command that works exactly like sysvinit's
> shutdown is essential, because it deals with a major objection, which
> is incompatibility and user-unfriendliness.
I do not really understand their excuse here. CLI incompatibility is
trivially solvable by creating links (or so) for `halt' / `poweroff' /
`reboot', and even the `shutdown' command can be a wrapper for an `atd'
based mechanism. In case they complain about the implementation of the
CLI, the actual interface to `shutdownd' is not that similar to the
`telinit' interface (at least to the one I think it is) either.
> The *absence* of a supervision tree after stage 2 is precisely what
> requires careful handling, and runit only works because Linux has
> that peculiarity that kill -9 -1 does not kill the emitter!
> Having a supervision tree in stage 3 actually *helps* with the
> late shutdown procedure: shutdownd dies right after the kill (which
> would make it usable even on a system without the Linux specialcase)
> and is restarted by the supervisor for stage 4.
If I understand it correctly, letting `s6-svscan' exec() stage 3 also
achieves immunity to `kill -KILL -1'. I also find this "old-fashioned"
approach conceptually and implementationally simpler than an army of
`s6-supervise' restarting only to be killed again, and a `shutdownd'
restarting to execute the halting procedure (see some kind of "state"
here? Functional programmers do not hate it for nothing). I know this
seems less recoverable than the `shutdownd' approach, but does that
count as a reason strong enough to warrant the latter approach, if the
halting procedure has already been distilled to its bare essentials
and is virtually immune to all non-fatal problems (that is, excluding
something as severe as the absence of a `reboot -f' implementation)?
> [...] More seriously, you're being unfair, because you're not locked
> in at all. You can use the new s6-linux-init and *still* do everything
> you were doing before: [...]
> Besides, when systemd advocates paint sysv-rc shell scripts as
> "duct tape", they're *right*. sysv-rc (and OpenRC) scripts are loaded
> with boilerplate that only exists to compensate for the lack of a
> supervision infrastructure, and systemd, like any supervision system,
> does away with that. systemd has 99 problems, but rightly calling out
> oversized script scaffoldings ain't one. Its disingenuousness lies in
> pretending that an overengineered, opaque, all-encompassing, unescapable
> framework is better than the duct tape; and I think you'll find that
> s6-linux-init isn't quite the monster you seem to believe it is.
What I intend to express is that unconditionally correlating "a bunch
of [...] scripts" to "a 'screwdriver and duct tape' feel" is a typical
systemd fallacy. You seemed to be confusing "scripts containing lots of
boilerplate" with "scripts that are minimised and clear".
> So basically, all you're complaining about is that s6-linux-init-maker
> is not generating your preferred run-image layout out-of-the-box
> anymore. Well, you're an advanced user, you know what you are doing;
> the knobs and levers are *still all there*. The only binary that
> kinda hardcodes things is s6-linux-init itself, and if you give it a
> try, I'm pretty sure you'll like it, because there was never any reason
> to modify the core of stage 1 in the first place and what it does is
> what any kind of stage 1 needs to do, no matter what language it's
> written in.
According to Guillermo's observation about the behavioural similarity
between slew's `rc.boot'/`rc.halt' and the current mechanism with
s6-linux-init, if I understand the big picture correctly enough, the
fundamental difference between the approaches might be the difference in
languages (to avoid further digression, here I expressly avoid talking
about Lisp ;) and the attendant difference in dependencies. Speaking of
the latter, I do not find declaring dependence on things like `rc' and
BusyBox really a problem to any packager of systemd. Speaking of the
former, the "old-fashioned" approach is obviously more flexible; I have
also said that it is probably shorter and perhaps clearer.
--
My current OpenPGP key:
RSA4096/0x227E8CAAB7AA186C (expires: 2022.09.20)
7077 7781 B859 5166 AE07 0286 227E 8CAA B7AA 186C
next prev parent reply other threads:[~2021-02-15 8:36 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-28 10:08 Casper Ti. Vector
2021-01-28 11:09 ` Casper Ti. Vector
2021-01-28 14:05 ` Casper Ti. Vector
2021-01-29 1:41 ` Guillermo
2021-01-29 3:06 ` Casper Ti. Vector
2021-01-29 17:27 ` Guillermo
2021-01-29 17:39 ` Guillermo
[not found] ` <YBN7zfp/MmbcHOCF@caspervector>
2021-01-29 9:57 ` Laurent Bercot
2021-01-29 14:33 ` Casper Ti. Vector
[not found] ` <YBQcwHN1L/N2dedx@caspervector>
2021-01-29 15:48 ` Laurent Bercot
2021-01-31 7:49 ` stage2 as a service [was: Some suggestions on old-fashioned usage with s6 2.10.x] s.karrmann
2021-01-31 10:25 ` Laurent Bercot
2021-01-31 20:51 ` stage2 as a service Stefan Karrmann
2021-02-01 10:35 ` Laurent Bercot
2021-02-15 8:36 ` Casper Ti. Vector [this message]
[not found] ` <YCoykUYGXVt+BAT9@caspervector>
[not found] ` <em949fd937-c7bc-43db-9b49-3cc235b8f2ad@elzian>
2021-02-16 8:53 ` Some suggestions on old-fashioned usage with s6 2.10.x Casper Ti. Vector
[not found] <YBKNJEuGeYag91Q1@caspervector>
2021-01-28 17:21 ` Laurent Bercot
2021-01-28 19:08 ` Roy Lanek
2021-01-28 19:55 ` Casper Ti. Vector
[not found] ` <YBMWuUCUTVjUNinQ@caspervector>
2021-01-29 0:07 ` Laurent Bercot
2021-01-29 2:44 ` Casper Ti. Vector
[not found] ` <YBN2p2UkIiP8lMQy@caspervector>
2021-01-29 9:36 ` Laurent Bercot
2021-02-15 14:58 Laurent Bercot
2021-02-15 14:59 ` Laurent Bercot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YCoykUYGXVt+BAT9@CasperVector \
--to=caspervector@gmail.com \
--cc=supervision@list.skarnet.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).