Live data from Hacker News

Busybox removes support for systemd

git.busybox.net

171–180 of 203 posts

Re: Busybox removes support for systemd

#171
post #145

Earlier quoted context omitted.

> And Linus threw a hissy fit instead of actually examining the situation. You really , really , really need to take ten minutes or so and read the whole thread. If you've not the time for that, then the single message linked here provides a decent amount of context: https://news.ycombinator.com/item?id=10484317

I did read the thread before I even posted, thanks. Linus' first reaction to systemd accidentally flooding the kmesg queue was to make an ad hominem flame directly at another developer when the kernel was responsible for at least half the problem (lack of rate limiting). Most people would qualify that as "throwing a hissy fit".

> Linus' first reaction to systemd accidentally flooding the kmesg queue was to make an ad hominem flame...

Are you talking about this?

"Key, I'm fcking tired of the fact that you don't fix problems in the code you* write, so that the kernel then has to work around the problems you cause."

If you are, then you have to know that he said that because Sievers has a history of aggressively refusing to own up to (and fix(!)) the bugs he introduces into his code. [0] Contrary to popular understanding, Torvalds doesn't dress down people unless they've demonstrated that they should know better and continue to fail to meet their demonstrated potential.

Most people call that sort of management style "stern" and "meritocratic".

[0] Indeed, it is this behavior that led to Sievers's Linux kernel commit bit being unset. Because of this, Greg-KH had to become the front-man and shepherd for the kdbus project.

Re: Busybox removes support for systemd

#172

Earlier quoted context omitted.

> ...network interfaces that dont change names when you swap hardware... I assume you're talking about udev's "Predictable Network Interface Names". [0] That's a feature of udev , and -IIRC- has been around since shortly after udev's repo got merged into systemd's repo, but quite a bit before it became obvious that the Systemd Cabal wasn't going to put much -if any- particular effort into making it easy for folks to…

>> Deploying web-services on systemd is so much better... >Can you be specific here? There are a whole host of service supervision systems out there of varying quality and feature sets. True - but that is a good question by itself right ? Why - when you already had sysv and upstart and everything. Supervisord seems to be very popular that is very, very similar to systemd in its working (same concept of unit files, de…

> ...are you claiming that openrc is BETTER than systemd...

If I were making that claim, I would have made it.

OpenRC's sysvrc replacement is at least as good as systemd's sysvrc replacement. Moreover, I have much more faith in abilities and reasonableness of the OpenRC Cabal than I do those of the Systemd Cabal.

> True - but that is a good question by itself right ? Why...

I'll ask again. Can you get into specifics about why "[d]eploying web-services on systemd is so much better..."? All I'm getting from you is soundbites and equivocation.

> ...[systemd] is making my linux machine extremely stable...

In the ~20 years that I've been using Linux, I've never had instability introduced by an init or RC system. What init or RC-induced instability have you observed in your Linux systems?

> Supervisord ... [has the] same concept of unit files, declarative language,etc ...

Does this mean that that the meaning of the keywords and parameters in supervisord's config files is very close or identical to those in systemd? Or does it just mean that supervisord's configuration files are in .INI format, just like systemd's?

If the latter, then who cares?

1) Superficial syntax similarities do not necessarily enhance understanding. In cases where similar keywords mean differing things in two different systems, they can (and often do) cause confusion and misunderstanding.

2) Startup files for services whose startup sequence is the most complex you can handle in a systemd unit file are equally terse and readable in both systemd and OpenRC. [0] If the startup requirements are more complex than this, systemd has to call out to a shell script(!) or other external program. OpenRC (and other sysvrc replacements) that use interpreted startup scripts can bake such functionality right in to the startup script. This means that -in these systems- you only need to ship and maintain one file, rather than two. ;)

> Where is [systemd] making everyone's life hard...

Systemd is worrisome for several reasons:

1) systemd's scope continues to creep.

2) The Systemd Cabal continues to assert that pretty much every part of systemd is optional. An honest look at the state of systemd and projects like Gnome puts the lie to that statement.

3) Systemd continues to assert that systemd is faster than anything out there. Real-world observation indicates that this means that they've never heard of -say- OpenRC.

4) The Systemd Cabal continues to assert that systemd is modular. They assert that anyone can read their documentation and reimplement any part of systemd. Many people have attempted to do this and found the documentation sorely lacking.

5) The Systemd Cabal aggressively refuses patches that fix breakage that they introduced by changing decades-old behavior for no better reason than "The behavior was legacy and thus broken.". [4]

In short, the attitudes of the people in charge of the project are dreadfully worrisome. Having udrepper in charge of glibc was bad enough. Systemd's devs are substantially more bullheaded, and the project itself is angling to swallow almost all of Linux userspace.

[0] See Nailer's representative systemd unit file at [1] and my conversion of it to an OpenRC startup script. [2] Also, notice the confusion that one has when one is not already familiar with the keywords contained in a systemd unit file. [3]

[1] https://news.ycombinator.com/item?id=10355588

[2] https://news.ycombinator.com/item?id=10357010

[3] https://news.ycombinator.com/item?id=10356330

[4] Their attitude on such things has been summarized as "Fuck your usecase.".

Re: Busybox removes support for systemd

#173
post #168

Earlier quoted context omitted.

This question has always appeared to me as academic, with little or no real-world relevance. If your service manager process were to crash, what are you going to do about it? If you restart the service manager, it won't know what state the system is in, which services are running and which are not, which services were running at the time when it crashed but then stopped just before it restarted, etc. How are you goin…

> If your service manager process were to crash, what are you going to do about it? With the assistance of the SRC_kex.ext extension, you re-establish knowledge of all running services in a new service manager. * http://www-01.ibm.com/support/knowledgecenter/ssw_aix_53/com... Or you make the other engineering tradeoffs. * https://news.ycombinator.com/item?id=10216906 * https://news.ycombinator.com/item?id=8384251

It's literally named SRC_kex.ext? So... would it be fair to say that part of SRC is implemented in kernel-space? The manual page gives me this impression.

That could very well be a solution to the problem, but perhaps not one that vezzy-fnord was hoping for.

I actually wanted to link the second of your linked comments but couldn't find it unfortunately.

Re: Busybox removes support for systemd

#174

Earlier quoted context omitted.

This question has always appeared to me as academic, with little or no real-world relevance. If your service manager process were to crash, what are you going to do about it? If you restart the service manager, it won't know what state the system is in, which services are running and which are not, which services were running at the time when it crashed but then stopped just before it restarted, etc. How are you goin…

There's been a lot of research in fault recovery through message logging and checkpoint-based methods that could be applied here, e.g. [1]. Of course, you use "academic" as a snarl world, so I don't think anything will convince you. The idea that the service manager would not be able to know the system and service states is completely false. Solaris SMF is a design that does, via its use of the configuration reposito…

That's very interesting, I didn't know SMF could do that.

Let's see... init(1) is apparently restarted by the Solaris kernel automatically, which is different from Linux, no automatic kernel panic.

https://github.com/illumos/illumos-gate/blob/master/usr/src/...

  * State File and Restartability
  *   Premature exit by init(1M) is handled as a special case by the kernel:
  *   init(1M) will be immediately re-executed, retaining its original PID.  (PID
  *   1 in the global zone.)  To track the processes it has previously spawned,
  *   as well as other mutable state, init(1M) regularly updates a state file
  *   such that its subsequent invocations have knowledge of its various
  *   dependent processes and duties.
Then init(1) and SMF's svc.startd(1) seem to have a bit of a relationship:

  * Process Contracts
  *   We start svc.startd(1M) in a contract and transfer inherited contracts when
  *   restarting it.  Everything else is started using the legacy contract
  *   template, and the created contracts are abandoned when they become empty.
So init(1) creates the initial contract for svc.startd(1), then the latter creates nested contracts below that. (Aside: doing the equivalent cgroup manipulation on Linux would run afoul of the notorious one-writer rule.)

If svc.startd(1) crashes, init(1) will restart it inside the existing contract of the crashed instance, so it can find its spawned services (in nested contracts), as well as its companion svc.configd(1).

Now during startup, svc.startd(1) calls ct_event_reset(3), and this is really the interesting bit here:

https://github.com/illumos/illumos-gate/blob/master/usr/src/...

     The ct_event_reset() function resets  the  location  of  the
     listener to the beginning of the queue. This function can be
     used to re-read events, or read events that were sent before
     the  event endpoint was opened. Informative and acknowledged
     critical events, however, might have been removed  from  the
     queue.
I'm willing to entertain the idea that with this feature, SMF can properly track the state of the services that its previous incarnation launched, even if it crashed in the middle of handling an event.

With any luck it will also handle the situation if a supervised process exits after the service manager crashes, and before it is restarted, as the contact should buffer the event in the kernel until it is read.

Notably this is a Solaris specific kernel feature of the contract(4) filesystem; does Linux have anything equivalent in cgroups or somewhere?

The other SMF process, svc.configd, uses an SQLite database (actually 2, a persistent one and a tmpfs one for runtime state), so it's plausible that it's properly transactional.

> If we take your logic to its conclusion, we should just run everything in ring 0 with a single unisolated address space, because hey, anything can fail.

That is an entirely erroneous extrapolation, as I never claimed any other single point of failure [in user-space] than the service manager.

Re: Busybox removes support for systemd

#175

Earlier quoted context omitted.

I haven't evaluated all of the previous attempts since that would consume more time than I have available. Can you provide a comparison or some insights into why they're worse?

I can't comment on all of them, but I've dealt with a bunch. I'm out enjoying Halloween right now but if I remember on the morning I'll follow up.

If you get time that would be neat, I'm sure others would appreciate it too. I've heard good things about djb's daemontools from a few friends and colleagues but never had the chance to try it and if you have any insight on that one I'd really appreciate that.

Re: Busybox removes support for systemd

#176
post #159

Earlier quoted context omitted.

Incorrect. The kernel mandates a single writer. It doesn't enforce any particular PID.

You are right, but the cgroup manager should still be something that starts very very early, so you can start components that make use of it. If literally everything your init system starts should automatically use cgroups, you have to start it with the init system or as the first thing the init system will start.

Remember that vezzy-fnord was responding to a comment that made the following erroneous statement:

> systemd is NOT making the change to manage cgroups from PID1. Kernel is...

I've heard systemd proponents assert that both udev and the cgroup manager must live in either kernel space or in PID 1, because to do otherwise would expose systemd to races or something while PID 1 started udev and/or the cgroup manager.

These are also erroneous statements. It's rather important to correct such statements, as we're dealing with a (sadly) highly politicized technical topic.

Re: Busybox removes support for systemd

#177

Earlier quoted context omitted.

The documentation for systemd and its utilities is second to none. God help the software industry if that is indeed the case (of course, it is not).

How so? I was able to easily use systemd and the man pages seem decent. Maybe not the best documentation, but it seems reasonable.

In order to see the quality difference, you have to compare the docs to another project that you make extensive use of.

I know that Postgresql's and Erlang's documentation is really rather good. So, go use Postgresql or Erlang for a slightly non-trivial project, then -now that you know about the topic that the docs cover- compare the quality of the systemd documentation to the documentation of either other project.

Pay special attention to the documentation provided to folks who want to understand the internals of systemd, Postgres, or Erlang. AIUI, [0] systemd's internals documentation is woefully lacking.

[0] And as has been repeated by everyone I've ever seen try to use said documentation.

Re: Busybox removes support for systemd

#178

Earlier quoted context omitted.

> Debian isn't really a leader. They're more of a passive target platform and their committee has people from various strokes of the Linux community. This is so not true that it is bordering on FUD. Systemd's leadership depended on debian making a fairly democratic, open and violently fought battle between upstart vs systemd. Everyone knew that Ubuntu (which is pretty much defacto installed in every laptop sold in As…

Your comment gets it mostly right, except: > Not only did Debian make the decision to support systemd, it voted to NOT support other init systems. This is incorrect: systemd was merely voted as the default init system, other init systems are explicitly supported, here's the TC decision: https://lists.debian.org/debian-devel-announce/2014/08/msg00...

point taken.

actually, I was referring to https://www.debian.org/vote/2014/vote_003 . But I see how my language could be interpreted that way.

Re: Busybox removes support for systemd

#179
post #159

Earlier quoted context omitted.

You are right, but the cgroup manager should still be something that starts very very early, so you can start components that make use of it. If literally everything your init system starts should automatically use cgroups, you have to start it with the init system or as the first thing the init system will start.

Remember that vezzy-fnord was responding to a comment that made the following erroneous statement: > systemd is NOT making the change to manage cgroups from PID1. Kernel is... I've heard systemd proponents assert that both udev and the cgroup manager must live in either kernel space or in PID 1, because to do otherwise would expose systemd to races or something while PID 1 started udev and/or the cgroup manager. Thes…

you are correct - I had conflated the PID1 argument with cgroup daemon, because as far as I stand.. it doesnt make a difference to me. There have been alternative managers like cgmanager [1] that lxc is bringing - which (surprisingly) work well with systemd as well [2] . Probably another reason not be scared of systemd ;)

[1] https://linuxcontainers.org/cgmanager/introduction/

[2] http://unix.stackexchange.com/questions/170998/how-to-create...

Re: Busybox removes support for systemd

#180

There's a lot of hate for systemd and there's also a lot of people ignoring valid criticisms and going so far as labeling those making the criticisms as haters. This does not bode well for reasonable discussion. It has become very political. Whether systemd is a good thing or a bad thing depends ultimately on what you're trying to do and what sort of operating system you're using. For some people systemd is really he…

> There's a lot of hate for systemd and there's also a lot of people ignoring valid criticisms and going so far as labeling those making the criticisms as haters. This does not bode well for reasonable discussion. It has become very political. I can't shake the suspicion that ever since gamergate, or perhaps even "for the lulz" anonymous, there have been people going around the net, latching onto anything vaguely con…

I think there has pretty much always been trolls on the internet. Back in the 90s it felt like no one took the happenings on the internet all that seriously, it was a bit of a lark. Now that it's much more mainstream, it's embedded in our everyday lives and companies make a lot of money from it. So it would make sense that everyone takes it a lot more seriously and it's easier to troll people if they take you seriously.

Although not all haters are trolls of course, but it's really hard(impossible?) to tell over the internet (Poe's law), especially when you have haters, fanatics and trolls all playing each other and the only person who wins is the troll in that scenario.

Post reply on HN