Live data from Hacker News

Linux distros without systemd

ungleich.ch

271–280 of 449 posts

Re: Linux distros without systemd

#271

Earlier quoted context omitted.

> On the other hand, I do support diversity of software and am glad to see some other options still being promoted and used. Then you should not be wanting to see applications including a hard dependency to systemD.

Why is it another open source developer's obligation to satisfy your design desires? Are you paying them? If not, put your time where you aren't putting your money, become the purveyor of diversity, and submit a patch. Fork, if necessary and it matters to you that much--it's your right to do so.

Full disclosure: I'm a systemd skeptic.

The problem is basically that Linux used to be about choice (choose your distro! choose your DE! choose your shell! choose your browser!) but now that it's become big business, large corporations like Red Hat (developer of systemd) have transformed the evolution of Linux from a bottom-up consensus system to a top-down "we develop all the stuff you use and now it all uses our stuff so now you do too" approach. It's _very_ hard for me to build a system without systemd; I can use a niche Linux distro, I can use a BSD, or I can hack another init system (etc.) in myself. None of those are satisfying, I think for obvious reasons.

systemd is not well written, and it is not well designed. Its style and architecture are inconsistent. Parsing is mixed with validation and business logic. The types of CVEs its generated show that there was no coherent thought put into input validation, fuzzing, taint analysis, and so on. The effects of those flaws (your whole system crashes, etc.) show that failure strategies were never considered. And if all that sounds like overkill to you, maybe it is! But I can tell you that these techniques and design strategies are employed by experts to build software that must be robust, like software that controls medical equipment or transportation control systems. We know how to build software that works and that mitigates failures. Looking at systemd's code, it's clear they used none of that knowledge. And that, combined with its sprawling control over my system, makes me not want it on my machines.

Re: Linux distros without systemd

#272

Earlier quoted context omitted.

> They have a track record of labeling serious bugs as non-issues, ignoring them, or just not filing them as CVEs. Serious issues keep coming up. Additionally, this is not likely to stop, since they took an init system that was (mostly) written in a memory-safe language (bash) and rewrote it in a memory-unsafe language (C++), thus enabling a whole class of systemic security issues that will keep popping up in the fut…

Memory safety is not the alpha and omega of programming languages. People do not write million lines of code applications in bash, for a reason, trade-offs are to be made. That said I agree they should have picked Go instead /s.

Sure, there are other concerns and bash is not an ideal language, but memory safety is responsible for quite a large number of security flaws, since its lack turns bugs into code execution vulnerabilities on a regular basis.

I don't really have an opinion on what language should have been picked instead, though OCaml may be a good candidate.

Re: Linux distros without systemd

#273
I actually really like systemd's service files, and the functionality it provides. I like the ability to express dependencies clearly, the fine-grained control over server restart behavior, and a ton of other systemd features. I'm also very happy to see it replace cron.

What I _do not_ like are:

  - systemd-resolved
  - systemd-networkd
  - systemd taking over disk mounts
  - systemctl
  - unit files spread out all over the place
  - mandatory journald
  - mandatory dbus
  - only works on Linux
  - pushing the BSDs farther towards being obsolete
I'm very glad to see sysv-init on the way out, personally. I think systemd unit files are a huge improvement, and greatly improve standardization and init quality. But that doesn't intrinsically mean that the systemd project is doing the right thing.

Re: Linux distros without systemd

#274

Earlier quoted context omitted.

I'm not such a lover of Go, but: non-sarcastically, Go may well have been a good choice.

Given the timeframe, something like OCaml would likely have been a better option.

Ocaml parallelism/concurrency story was not that good - but Haskell has just got its fancy new epoll based I/O manager (100000+ lightweight threads) around that time, with the 7.0.1 release (16 November 2010)

They could have even take inspiration, imagine: typed, functional, monadic init files - "systemd: avoid success at all costs" :)

Re: Linux distros without systemd

#276

I actually really like systemd's service files, and the functionality it provides. I like the ability to express dependencies clearly, the fine-grained control over server restart behavior, and a ton of other systemd features. I'm also very happy to see it replace cron. What I _do not_ like are: - systemd-resolved - systemd-networkd - systemd taking over disk mounts - systemctl - unit files spread out all over the pl…

Is there an alternative init implementation that is compatible with systemd unit files?

Re: Linux distros without systemd

#277
post #239
post #109

Earlier quoted context omitted.

systemd was not a port of launchd, direct or otherwise. The problem with launchd being difficult to port off MacOS is one of the reasons why launchd never came about for FreeBSD. * http://jdebp.uk./FGA/launchd-on-bsd.html systemd was not a port of anything. And its immediate inspiration was Upstart, the system that Fedora was using at the time, and whose drawbacks provoked Lennart Poettering et al. to start working o…

> systemd was not a port of anything. And its immediate inspiration was Upstart Its motivation was perhaps upstart's shortcomings, but systemd was definitely inspired by the design of launchd and that was repeatedly and explicitly mentioned in Lennart's very first blog post introducing it: > But first, let's clear a few things up: is this kind of logic new? No, it certainly is not. The most prominent system that work…

No, that's not explicit. That's a few instances of "like launchd". Where M. Poettering actually is explicit about inspiration, xe writes the words:

> we took a lot of inspiration from Upstart's code-base

... which they actually did and continued to do, from observation. There were significant discussions amongst the systemd people involving the way that things worked with Upstart, including (for just three examples out of the many over the years) having to work like Upstart with respect to putting the X server on the first KVT, Upstart's handling of SIGPWR to process #1, and eliminating /dev/initctl because it was not really utilized in Upstart.

* https://news.ycombinator.com/item?id=12772915

* https://lists.freedesktop.org/archives/systemd-devel/2016-Ju...

* https://lists.freedesktop.org/archives/systemd-devel/2015-Se...

In comparison, there was almost zero similar consideration of launchd. The idea that launchd inspired systemd is a myth, not borne out by what M. Poettering explicitly wrote was the inspiration nor borne out by the evidence of what the systemd people did down the years.

Re: Linux distros without systemd

#278
post #196

This anti-systemd meme is getting tiring. I generally find it is perpetuated by people who use Linux at a hobby level. Rarely do I speak with guys in Ops who dislike systemd. I am not trying to discredit people here, there are hobby users who are more knowledgeable about Linux related systems than many guys who are professionals. My point is that Linux and systemd are both meant for use on servers, in production, whe…

Ops person here. When you set up a node, you set up all its networking, its services, its packages, its configuration, etc. It doesn't matter what your technology is - you set it up to do whatever it needs, and then hopefully you never have to re-do that again. Systemd's hydra of services affected a lot of that, so we had to learn all the weird gotchas to get newer distros to work properly.

And it's not just a little different, it's more complex. This increases the number of bugs, the time to test and roll out changes, integration work, etc. So the process is more complex. And the operation is also more complex, meaning more training for anyone who's used to how things worked for 30 years. Doing minor ops work now requires looking at 5 different manuals, requiring extra software, adding configuration management where it wasn't before, changing support instructions, healthchecks/automation tasks, migrations to newer disk images while supporting legacy functionality, etc.

And here's the part that really kills me. Alternatives to all the parts of systemd already existed; if you really needed a better system, you could pick up any similar software and make it work! But then distributions start rolling this out en-masse for all new releases, and we don't have a choice to opt-in. It was a breaking change that did nothing for us that we didn't already do for ourselves, even requiring more work than before.

Do our systems boot faster now? My EC2 instances still seem to take forever to spin up, and physical machines still take ~5 minutes to POST, so I'm going to say no. Can we do new things that we couldn't before? No. Are our systems more stable now? No. Are they less complex? No. So while some people talk up the theoretical benefits, I as an ops person have not seen them. But I still have to look up man pages to remember the three different filesystem trees systemd keeps files in, or the wonky configuration files, or what 5 extra commands I need to get something done.

If you're going to make breaking changes, at least have it make my life easier after I get used to it. Systemd has not done that. And it seems to just keep getting heavier.

Re: Linux distros without systemd

#279
I have way too many cases of systemd startup items hanging with their timeout for no good reason.

Worse, my most complicated high-uptime machine usually does not shut down in a reasonable time. Systemd says "waiting for session user cracauer" (something like it) for whatever reason. It also hung on undoing swapspace, when that swapspace was a custom stack of block layers. I don't need swapspace to be "shut down". It went into 20 minutes something always stating another timeout when one expired. I mean, WTF?

The problem here is that I had to do an unclean shutdown on that machine (reset button) multiple times, and that I really can't have.

This also illustrates a point I have been making about Linux and the BSDs from day one: When the BSDs boot or shut down the keyboard is connected to the rc scripts. You can do Control-C for SIGINT and Control-\ for SIGQUIT, The latter makes everybody in the stack leave a coredump on disk.

Now, compare these two:

1) in BSD when there is a startup or shutdown item taking too long or hanging I can abort that single item and I can later debug what was going on with the coredumps.

2) on a Linux system with systemd I cannot "cut through" startup or shutdown items I don't want to wait for, and there is no way to debug any of that if the machine doesn't actually come up completely, or if thing happen at shutdown. The only interaction I can conduct is the reset button.

To add insult to injury, systemd also hides a lot of error messages that would traditionally be dumped on the console, and instead of giving me that error message systemd captures it and print on the screen instructions how to get that error message (which usually are longer than the error message was, WTF?). Instructions that I cannot follow because somebody detached my keyboard, and because I will never be in that machine in an up state while that context is available.

This also invalidates the point that systemd could be one platform that you learn once and then use on a wide basis. The debugging abilities are nowhere close to adequate, so you have to learn by try-n-error.

Re: Linux distros without systemd

#280
post #276

I actually really like systemd's service files, and the functionality it provides. I like the ability to express dependencies clearly, the fine-grained control over server restart behavior, and a ton of other systemd features. I'm also very happy to see it replace cron. What I _do not_ like are: - systemd-resolved - systemd-networkd - systemd taking over disk mounts - systemctl - unit files spread out all over the pl…

Is there an alternative init implementation that is compatible with systemd unit files?

There are certainly automated tools for converting systemd unit files into the service definitions used by other systems.

* http://jdebp.uk./Softwares/nosh/worked-example.html

* http://jdebp.uk./Softwares/nosh/guide/converting-systemd-uni...

* http://jdebp.uk./Softwares/nosh/guide/commands/convert-syste...

Post reply on HN