Re: Please stop hating on sysvinit
Ian Jackson - 09.08.19, 11:27:31 CEST:
> Ondřej Surý writes ("Re: Please stop hating on sysvinit"):
> > On 9 Aug 2019, at 09:22, Martin Steigerwald <martin@lichtvoll.de>
> > wrote:
> > > Actually as a user of my services I do not even notice any
> > > difference, so for me it is: What is actually the point of
> > > starting them on demand?>
> > Unprivileged access to port < 1024. The socket-activated services
> > can start as user since the port binding is done by the systemd,
> > not the daemon.
> This is a good reason to use inetd or socket activation, indeed.
>
> But there are other ways. Many traditional daemons can start as root
> and drop privileges. And of course there is authbind.[1]
[…]
I agree that this is a good reason.
What about about files it might still need to create with root and
whatever other initialization thing it needs to do as root?
And yes, there are other ways and they appear to be used already:
On my sysvinit server I see all but one Postfix process ("master")
running as user 'postfix'.
For dovecot I see:
% ps -eo user,pid,cmd | grep "[d]ovecot"
root 2579 /usr/sbin/dovecot -c /etc/dovecot/dovecot.conf
dovecot 2587 dovecot/anvil
root 2588 dovecot/log
root 2602 dovecot/config
dovecot 2824 dovecot/stats
dovecot 24499 dovecot/auth
root 24821 dovecot/lmtp
root 24839 dovecot/lmtp
root 24850 dovecot/auth -w
root 24851 dovecot/auth -w
Is that any different than what is happening with Systemd?
And what would be the benefit for Systemd opening the port instead of the
process doing it itself and dropping the port.
I see the following advantages:
- standardization
- reduction of code duplication
I see the following disadvantages:
- tightening the dependency between the service and a *certain* service
manager, unless socket activation happens to be a standard that is
agreed on by several service manager upstreams
- added complexity and thus statistically a higher probability for bugs
within the service manager
- reduced portability unless socket activation happens to be a standard
that is agreed on by several service manager upstreams in different UNIX
like systems.
Thing is, we could go on like this endlessly. It is always easy to find
argument pro and contra and in the end it is much ado about nothing… or
well much ado about personal taste.
All what I am wondering about is:
Is Debian as a project big enough to allow people to have different
taste? All what I am wondering is: Is Debian as a project big enough to
allow people to agree to disagree?
I believe, within a few limitations that are woven into the current
approach of how packages work, it can be big enough to allow for this.
Yes, it is not easily maintainable to have util-linux both with and
without libsystemd dependency, but this is what Devuan does handle just
fine. And yes, Debian developers have no obligation to keep help keeping
the difference between Debian and Devuan as minimal as possible… however…
aside from those technicalities…
I understand that one goal of Debian is to be a universal operating
system. Using Debian with sysvinit or runit seems to be a use case for
some… and AFAIK it was and is still the project wide agreement to allow
for different service managers or initialization systems.
But before I keep repeating myself: Just again… I'd recommend and aim
myself to just let go of any hatred. If I look through it, it is not
real to begin with. How about some compassion and forgiveness for each
apparent other and one self instead?
I dug a lot into Systemd to update my Linux training material. In my
courses I tell people look: this and that I like and this and that I do
not like and your mileage may wary and you have a choice on how to deal
with that unless you must use some kind of some distribution with
enterprise backed support and documentation like RHEL or SLE.
I know both. I know quite a bit about Sysvinit and Systemd. It is not
black and white for me. My personal preference after a long period of
using Debian with systemd was just to switch back to sysvinit after
several experiences where I had to deal with an issue I would not have
had with Sysvinit. I do not remember them all right now but some had to
related with a quite limited rescue environment, with an fstab without
"nofail" for non critical filesystems and some other stuff. And after I
found for myself that yeah a lot of stuff that Systemd provides is nice…
but I found myself not really needing it. My time with Amiga taught me
the beauty of simplicity. And this is just kind of still with me.
BTW: We found in a training that we can easily bring Systemd to an halt
by just sending a couple of SIGILL signals to it while Sysvinit is
completely oblivious to that signal. If I remember correctly this still
worked with a Systemd in Debian Buster and it needed to be about 4-5
SIGILL's, maybe less:
while true; do echo -n "." ; kill -ILL 1; sleep 0.5 ; done
as root should be enough to easily reproduce the issue. It brought down
the system completely whenever we tested it.
I never actually cared to file a bug report, part of the reason is that I
just would not like having to deal with any upstream reaction to it. If
anyone here chooses to verify that finding and if able to reproduce of
course feel free to go ahead. Otherwise I would not have shared it here.
Just keep me out of any discussions on Github about any upstream bug you
might file. How upstream developers sometimes reacted to bug reports has
been another part of the reason why I switched away from Systemd.
However, I really do think it should not be that easy to bring down PID
1 no matter whether it is a wise idea to send SIGILL to PID 1 or not. So
it would be good to file an upstream bug report IMHO.
--
Martin
Reply to: