Live data from Hacker News

Without Systemd

without-systemd.org

71–80 of 89 posts

Re: Without Systemd

#71

Earlier quoted context omitted.

This looks surprisingly tempting. I agree with a lot of the ideas behind systemd, but at the rate it is growing, I'm going to type this in systemd-firefox in systemd-xmonad in six months. How stable is it in practice?

I can't see why most people would want that, with the exception of replacing journald. Why strip out device init, or even timers? Swap init is less useful, but I don't see the harm. What is it that makes uselessd attractive? And why do you consider systemd to be bloated?

I like my init system to be an init system. However, the scope of systemd seems to expand monthly. I mean, you get an ntp client, a dhcp client, a logging system, and they apparently want to expand into containerized applications? I'd rather have a project with a smaller, well-defined scope.

Re: Without Systemd

#72
post #42

Earlier quoted context omitted.

> Systemd itself is a monster running as PID 1, which is not very wise from a security perspective either. No. Only a small part of systemd runs as PID 1. Systemd is not a monolith, it is a bunch of various utilities. > However, I think the app-ification they are planning to deploy in Linux systems is extremely dangerous. I agree. This sounds scary. However, it does not mean that distros will hurry to adopt this kind…

> Only a small part of systemd runs as PID 1. Systemd is not a monolith, it is a bunch of various utilities. Ahh, there's the talking point I mentioned in my earlier post[1]. What you're not understanding is that when we describe something as "monolithic" (or "modular") we're talking about if the design[2], not the number of binaries it happens to compile into. This is about minimizing complexity, and the way to do t…

> What you're not understanding is that when we describe something as "monolithic" (or "modular") we're talking about if the design[2], not the number of binaries it happens to compile into. This is about minimizing complexity, and the way to do that is to break the problem into small pieces, while clearly and rigorously defining the interconnections between those pieces (an area that necessarily involves higher complexity).

Designs don't run under PID 1, or any other PIDs. Binaries do. You can't both complain about how insecure systemd is because it has a lot of code under PID 1, and then claim that the size of the code actually running under PID 1 is irrelevant.

Re: Without Systemd

#73

Earlier quoted context omitted.

What, I answered your questions and that's all you've got? I mean, you've made a few basic mistakes here, like nothing reaps orphaned processes, only zombie processes. And launchd does actually parse plist files directly. So much for your devastating rebuttal I guess :-) what's your point with dbus by the way? It's just a form of IPC, and uses a bus daemon to transfer the message. Are you implying that's a problem? I…

Fine, I meant orphaned processes get reparented to it by default (unless a subreaper has been defined explicitly via prctl() flag). As for the launchd thing, I'll need to do further research. Your implication that nspawn isn't for production use strikes me as quite odd. CoreOS based their Rocket platform on it (at least, initially - they might have swappable backends now). That you expect interdependencies from an in…

Ah, the old "you must have a vested interest" argument. Good luck with that. You also haven't raised those counter examples till now.

I've responded to the dependency list being outdated - I asked you to provide me with a later dependency list. I still am - given you stated hundred of binaries, when there aren't I'm curious what you'll come up with!

nspawn isn't for production use, or so says Lennart Pottering, numerous times.

That list of binaries is what is included in Debian Sid unstable. It's not hundreds of binaries. Heck, I've even listed a deprecated one there. If you disagree, it's easy to disprove me: list them.

You quoted the commentary of someone who strongly disagrees with socket activation. I'd assumed you quoted it because you agree. You also asked me if I "even knew what it was", which I do :-)

There is one binary that runs PID 1. The original argument speaks of PID 1 as a key problem, which is the reason most folks don't like systemd.

By dynamic event I mean an event such as a hardware device starting a service, a timer event initialising a service, etc.

Your entanglement argument uses an example that is incorrect, I didn't make this up :-) that's your argument, not mine!

Not all arguments against systemd are misguided. When I first learned systemd ran as PID 1 for what I though was everything, I was concerned. Then I looked into it further and it was all piss and wind, so far as I'm concerned. The one that I find most conducive is binary logs, I'm not a fan. But that seems to be the only thing that even folks like Linus talk about. His real beef is that some of the devs were being dicks, which is really a very Gnome like mentality.

You read into their documentation. They phrase things badly, and those looking for it read into that which I'd not there - like your claims about syslog compatibility, which you can't seem to back up.

Any ctl program needs a way of signalling to the daemon to change its state. Systemd uses dbus: so? What's the issue you have with that?

Init doesn't reap zombied processes, by the way. The kernel does this. Init doesn't do re-parenting either, it just so happens that because it is PID 1 then it's what becomes the parent by default - unless you have a kernel > 3.4 and as you say the child reaper big is set on the parent process.

You seem to have a problem with a process running PID 1 handling dynamic events like hardware changes. I don't think you've given particularly strong reasons why.

Re: Without Systemd

#74

Earlier quoted context omitted.

Fine, I meant orphaned processes get reparented to it by default (unless a subreaper has been defined explicitly via prctl() flag). As for the launchd thing, I'll need to do further research. Your implication that nspawn isn't for production use strikes me as quite odd. CoreOS based their Rocket platform on it (at least, initially - they might have swappable backends now). That you expect interdependencies from an in…

Ah, the old "you must have a vested interest" argument. Good luck with that. You also haven't raised those counter examples till now. I've responded to the dependency list being outdated - I asked you to provide me with a later dependency list. I still am - given you stated hundred of binaries, when there aren't I'm curious what you'll come up with! nspawn isn't for production use, or so says Lennart Pottering, numer…

Your entire argumentative style in this thread is a combination of reasonable points interspersed with straw men, putting stuff in your opponent's mouth, subtle distortions and willful omissions. I've had enough of it, so this will be my last reply.

I've responded to the dependency list being outdated - I asked you to provide me with a later dependency list. I still am - given you stated hundred of binaries, when there aren't I'm curious what you'll come up with!

Where did I say hundreds? I said -likely- reaching a hundred. Single.

There is no official count - the article you linked was written with a special purpose. Nonetheless, I took an i386 experimental deb for systemd-219 (https://packages.debian.org/experimental/i386/systemd/downlo...) and roughly counted 77. I'm not sure what build was actually run (number could be lower than total), and due to the quick unveiling of new interfaces, the number has been higher at one point. Things move fast at systemd, and the fact that you linked an article measuring 204 as evidence for the present shows you're simply out of touch.

nspawn isn't for production use, or so says Lennart Pottering, numerous times.

Well, then it seems everyone is violating that quite tremendously. CoreOS must be incompetent, I don't know.

It's not hundreds of binaries

Nowhere did I say such.

Your entanglement argument uses an example that is incorrect, I didn't make this up :-)

So the fact that systemd, the PID1 which handles both the system state and the OS process state at the same time, isn't true? Bullshit. Deliberately misreading me to push your agenda.

When I first learned systemd ran as PID 1 for what I though was everything, I was concerned. Then I looked into it further and it was all piss and wind, so far as I'm concerned.

Well, of course. systemd doesn't put everything into PID1. That you're picking to focus on this low fodder argument out of everything that has been said by more acquainted people is just disingenuous.

like your claims about syslog compatibility, which you can't seem to back up.

I never mentioned anything about compatibility with syslogd.

Any ctl program needs a way of signalling to the daemon to change its state. Systemd uses dbus: so? What's the issue you have with that?

Now, this, is a total non sequitur. As in, you completely and horrendously misread everything that I said and deliberately projected your own biases into it. This isn't worth responding to simply because it's based on your own odd incredulity.

Init doesn't reap zombied processes, by the way. The kernel does this. Init doesn't do re-parenting either...

Where the hell did I say any of this? I specifically mentioned they get reparented to init(8), and nothing about zombies. Once again, putting words in my mouth.

I've had enough of this nonsense.

Re: Without Systemd

#75

Earlier quoted context omitted.

Maybe the parameters and interface will simplify over time. Patterns emerge with use.

Yeah, that doesn't answer my question. What isn't necessary?

I don't know all of systemd but :

  - journal
  - networkd
  - console
Are already far from generic system config/init parts. These components are very nice and cleaner than older alternatives but it feels like unnecessary coupling. Also every release added magic variables to handle corner cases. They're proficient but complexity is increasing.

Re: Without Systemd

#76
post #31

Earlier quoted context omitted.

Pulseaudio had bugs which caused problems, but what in particular is it about the design of PA that is flawed?

Massively overdesigned while trying to solve a problem that almost no one had (network transparency). FreeBSD's implementation of /dev/dsp is a good example of how simple it can be.

PulseAudio supports network streaming, but it's certainly not the main selling point. Important features are:

* Mixing several streams in software, if there's no hardware support (th e FreeBSD sound driver does that as well)

* Dynamic switching between several audio interfaces without stopping the stream, e.g. switching to a Bluetooth headset during a phone call

* Reducing power usage by supporting different latencies for each client application, and then running the hardware with the lowest currently requested latency

Re: Without Systemd

#77

Earlier quoted context omitted.

Lennart Poettering has a different view on Unix philosophy, it's more 'make it interesting and do what you need to'. I think nobody is right or wrong. This is all growing pain and, as I often say, at the right time I'm sure there will be tinier systemd-like built to be more Unixy (as in 'small set of smaller composable tools').

Something like systemd except being ONLY an init system would be really great.

That's just not their plan. They want to modernize and standardize (to reduce fragmentation) the whole userspace. Replacing init is a big, but far from the only part of the process.

Re: Without Systemd

#78
post #42

Earlier quoted context omitted.

> Only a small part of systemd runs as PID 1. Systemd is not a monolith, it is a bunch of various utilities. Ahh, there's the talking point I mentioned in my earlier post[1]. What you're not understanding is that when we describe something as "monolithic" (or "modular") we're talking about if the design[2], not the number of binaries it happens to compile into. This is about minimizing complexity, and the way to do t…

> What you're not understanding is that when we describe something as "monolithic" (or "modular") we're talking about if the design[2], not the number of binaries it happens to compile into. What you're not understanding is that these other binaries do not run as PID 1 , which is what nextos wrongly claimed. > This is about minimizing complexity, and the way to do that is to break the problem into small pieces, while…

> other binaries do not run as PID 1, which is what nextos wrongly claimed.

I never claimed they did. Obviously, I was replying to this claim:

"Systemd is not a monolith, it is a bunch of various utilities."

> Which is the exact opposite of what has happened during the sysvinit times.

I never mentioned anything about sysvinit, which has nothing to do with the bad design in systemd.

Regarding those times, I would agree that the older sysv-rc/initscripts were not that great either, which is why many of us moved to OpenRC a long time ago.

Re: Without Systemd

#79
post #38

Earlier quoted context omitted.

Just upgrade the compromised package. Now think what happens if you have 20 different containers running 20 different userlands... This is exactly the same as the virtualization scenario, where you might have hundreds of possibly vulnerable virtual-machines running under the same virtualization platform (which maybe Linux). Or lots of Docker containers, some of which may have vulnerable software. App-containerization…

> I can imagine a future world in which package management tools understood containers Solaris has had this with zones since, IIRC, before Oracle bought Sun.

Oh god no! Zones are cool, but package management on Solaris is pretty bad. It has improved since they built something similar to Apt, but AFAIK it doesn't have the deep understanding of Zones that I'm suggesting is desirable.

Re: Without Systemd

#80

Earlier quoted context omitted.

Ah, the old "you must have a vested interest" argument. Good luck with that. You also haven't raised those counter examples till now. I've responded to the dependency list being outdated - I asked you to provide me with a later dependency list. I still am - given you stated hundred of binaries, when there aren't I'm curious what you'll come up with! nspawn isn't for production use, or so says Lennart Pottering, numer…

Your entire argumentative style in this thread is a combination of reasonable points interspersed with straw men, putting stuff in your opponent's mouth, subtle distortions and willful omissions. I've had enough of it, so this will be my last reply. I've responded to the dependency list being outdated - I asked you to provide me with a later dependency list. I still am - given you stated hundred of binaries, when the…

Your entire argumentative style in this thread is a combination of reasonable points interspersed with straw men, putting stuff in your opponent's mouth, subtle distortions and willful omissions. I've had enough of it, so this will be my last reply.

I could characterise your responses the same way :-)

Where did I say hundreds? I said -likely- reaching a hundred. Single.

Even over one hundred is way off. There are now 76, I checked myself.

There is no official count - the article you linked was written with a special purpose. Nonetheless, I took an i386 experimental deb for systemd-219 (https://packages.debian.org/experimental/i386/systemd/downlo...) and roughly counted 77. I'm not sure what build was actually run (number could be lower than total), and due to the quick unveiling of new interfaces, the number has been higher at one point. Things move fast at systemd, and the fact that you linked an article measuring 204 as evidence for the present shows you're simply out of touch."

You were close: 76 binaries. Of which the new ones are some extra utilities. Things don't move that fast, and they haven't been increasing their scope - it's stayed pretty much the same as what it was at version 204. I currently have systemd v208 installed, but out of curiousity I checked what libaries it links to:

  0x0000000000000001 (NEEDED)             Shared library: [libsystemd-daemon.so.0]
  0x0000000000000001 (NEEDED)             Shared library: [libudev.so.1]
  0x0000000000000001 (NEEDED)             Shared library: [libselinux.so.1]
  0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
  0x0000000000000001 (NEEDED)             Shared library: [libwrap.so.0]
  0x0000000000000001 (NEEDED)             Shared library: [libpam.so.0]
  0x0000000000000001 (NEEDED)             Shared library: [libaudit.so.1]
  0x0000000000000001 (NEEDED)             Shared library: [libcap.so.2]
  0x0000000000000001 (NEEDED)             Shared library: [libkmod.so.2]
  0x0000000000000001 (NEEDED)             Shared library: [libdbus-1.so.3]
  0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
  0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
  0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]
Then I checked systemd version 219 - exact same libaries.

nspawn isn't for production use, or so says Lennart Pottering, numerous times.

Well, then it seems everyone is violating that quite tremendously. CoreOS must be incompetent, I don't know.

By "everyone", you mean CoreOS, right? CoreOS contribute to systemd, they probably know what they are doing. The man page does say "systemd-nspawn - Spawn a namespace container for debugging, testing and building" and also "Note that even though these security precautions are taken. Many of the security features may be circumvented and are hence primarily useful to avoid accidental changes to the host system from the container." I'd certainly hope anyone who uses it in production had read the man page first. If not, yeah - must be incompetent.

So the fact that systemd, the PID1 which handles both the system state and the OS process state at the same time, isn't true?

Can't follow what you are trying to say here. systemd is not a proposition. Could you restate that?

That you're picking to focus on this low fodder argument out of everything that has been said by more acquainted people is just disingenuous.

"Your entire argumentative style in this thread is a combination of reasonable points interspersed with straw men, putting stuff in your opponent's mouth, subtle distortions and willful omissions."

I never mentioned anything about compatibility with syslogd.

Yeah, you did actually. You said "journald hijacks /dev/log and expects all syslogd implementations to conform to its own standard."

Now, this, is a total non sequitur. As in, you completely and horrendously misread everything that I said and deliberately projected your own biases into it. This isn't worth responding to simply because it's based on your own odd incredulity.

You wrote "For example, even Apple had the engineering sense to separate their launchd plist configuration parser from the launchd PID1 itself.", which is wrong and you admit that you need to look into this more closely. I mentioned systemctl thinking that you believed that launchctl parsed the configuration files for launchd and somehow launchd communicated with this to get the configuration info. Of course, I assumed that's what you thought - otherwise what was your point? systemctl also parses configuration info. Maybe I got the wrong end of the stick, but given you were wrong in the first place I'm not sure what point you were making now.

In this case, it's less that I deliberately misread you, it's more that you weren't very clear!

Init doesn't reap zombied processes, by the way. The kernel does this. Init doesn't do re-parenting either...

Where the hell did I say any of this? I specifically mentioned they get reparented to init(8), and nothing about zombies. Once again, putting words in my mouth.

In case you aren't following along: an orphaned process won't get reaped. You stated that "init(8)'s duties are reaping orphaned processes and handling high-level global system state at best (like SAK, shutdown, halt, etc.)". You probably meant that init reaps zombie processes - you can't reap an orphaned process, an orphaned process is still running and is reparented by the kernel to PID 1. init doesn't do this.

You were therefore wrong on two counts:

1. The kernel detects when a process is orphaned and reparents to PID 1, which just happens to be init. init doesn't actually do any reparenting, which is sort of key to your argument as you believe that init should be the process that reparents a process when it's parent dies.

2. An orphaned process doesn't get reaped, because it's still running. A zombie process is one that has exited but is still in the process table and the parent process hasn't reaped it yet. You don't seem to understand the difference between the two, so I explained it. I'm explaining it again.

I've had enough of this nonsense.

That's good to know, so have I :-)

Post reply on HN