SystemD is blamed for long boot times and being heavy and bloated on resources. I tried OpenRC and Runit on real hardware (Ryzen 5000-series laptop) for week each and saw only 1 second faster boot time.
I’m old enough to remember plymouth.service (graphical image) being the most slowest service on boot in Ubuntu 16.04 and 18.04. But I don’t see that as an issue anymore. I don’t have a graphical systemD boot on my Arch but I installed Fedora Sericea and it actually boots faster than my Arch despite the plymouth (or whatever they call it nowadays).
My 2 questions:
- Is the current SystemD rant derived from years ago (while they’ve improved a lot)?
- Should Linux community rant about bigger problems such as Wayland related things not ready for current needs of normies?
Keep in mind that it all started 20 years ago with Pulseaudio. Pottering was not really a nice guy (on mailing lists ofc, I don’t know him personally) whose software I wanted on my machine.
Problem was never speed or even technical, problem was trust on original author and single-mindedness that they were promoting. Acting like it is the only way forward, so anyone believing in freedom part of free software was against it. Additionally, it was looking like tactics used by proprietary software companies to diminish competition.
It looked scary to some of us, and it still does, even worse is that other software started having it as hard dependency.
All of this looks like it was pushed from one place: Portering and RedHat.
While after 20 years I might have gotten a bit softer, you can imagine that 15 years ago some agresive and arogant guy who had quite a bad habbit of writing (IMHO) stupid opinions wanted to take over my init system… no, I will not let him, not for technical reasons but for principal.
I want solutions to come from community and nice people, even if they are inferior, I will not have pottering’s code on my machine so no systemd and no pulseaudio for me, thank you, and for me it is an important choice to have.
Keep in mind that it all started 20 years ago with Pulseaudio. Pottering was not really a nice guy (on mailing lists ofc, I don’t know him personally) whose software I wanted on my machine.
Poettering is like Torvalds: gruff when pressed, but not wrong.
PulseAudio is like systemd: dramatically better than what came before, and the subject of a great deal of criticism with no apparent basis in reality.
PulseAudio did expose a lot of ALSA driver bugs early on. That may be the reason for its bad rap. But it’s still quite undeserved.
Additionally, it was looking like tactics used by proprietary software companies to diminish competition.
This is a nonsensical argument. Systemd is FOSS. It can and will be forked if that becomes necessary.
Which, in light of recent changes at Red Hat, seems likely to happen soon…
Problem was never speed or even technical, problem was trust on original author and single-mindedness that they were promoting.
That’s because fragmentation among fundamental components like sound servers and process supervisors results in a compatibility nightmare. You really want to go back to the bad old days when video games had to support four different sound servers and the user had to select one with an environment variable? Good riddance to that.
I want solutions to come from community and nice people
Then you’d best pack your bags and move to something other than Linux, because Linus Torvalds is infamous for his scathing (albeit almost invariably correct) rants.
@argv_minus_one @monobot Pulse Audio is good for a desktop multi-program environment. Its optimized for context switching, however for MIDI applications it has too much latency and you need to use Jack.
@thanhdo @argv_minus_one @monobot What about Pipewire? Doesn’t that combine Pulseaudio und Jack capabilities?
PipeWire is a whole other audio manager that happens to be compatible with PulseAudio and JACK.
Poettering is like Torvalds
Lol, not even close. I am not talking about being harsh for writing stupid code. Nor I want to go 20 years back to proove it to some random person, do it yourself.
Systemd is FOSS. It can and will be forked if
Yeah, the same way chrome can be forked. No, software developed like that - in closed room just source being dropped on to community, what happened with PA and SD in the begging no one wants to touch. Gentoo had big problems just maintaing eudev and elogind to enable gnome and some other software to work.
Luckily, it is not important anymore, there is pipewire so I managed to skeep PA completely.
Those sound like perfectly valid reasons to me. Thanks for the illuminating look into it.
The traditional init systems suited me just fine, i saw no need to change them. If they were so bad, then they could’ve been fixed or replaced.
The migration to systemd felt forced. Debian surprised everyone with the change. Also systemd’s development is/was backed by corporate Red Hat, their lead developer wasn’t exactly loved either and is now working for Microsoft. Of course Canonical’s Ubuntu adopted it as well. Overall feels like Windows’ svchost.exe, hence people accusing it of vendor lock-in.
It’s not just an init system, it’s way waaay more. It’s supposed to be modular, but good luck keeping only its PID1 in a distro that supports systemd. It breaks the “do one thing right” approach and, in practice, does take away choice which pisses me off.
I had been using Debian since Woody, but that make me change to Gentoo on my desktop which, to me, took the best path: they default to OpenRC but you’re free to use systemd if you want to. That’s choice. For servers i now prefer Slackware and the laptop runs Devuan whenever i boot it up.
To be fair systemd hasn’t shown its ugly face in the Ubuntu VMs i’m forced to use at work.
YMMV. If you’re happy with it, fine. This, of course, is only my opinion.
Nah, it’s fine. Boot times are considerably faster than sys.v in most cases, and it has a huge amount of functionality. Most people I work with have adopted it and much prefer it to the old init.d and sys.v systems.
People’s problem with systemd (and there are fewer people strongly against it than before) seem to break down into two groups:
-
They were happy with sys.v and didn’t like change. Some were unhappy with how distros adopted it. (The debian wars in particular were really quite vicious)
-
It does too much. systemd is modular, but even so does break one of the core linux tenets - “do one thing well”. Despite the modularity, it’s easy to see it as monolithic.
But regardless of feelings, systemd has achieved what it set out to do and is the defacto choice for the vast majority of distros, and they adopted it because it’s better. Nobody really cares if a user tries to make a point by not using it any more, they’re just isolating themselves. The battle was fought and systemd won it.
deleted by creator
systemd is modular, but even so does break one of the core linux tenets - “do one thing well”.
Linux itself (i.e. the kernel) breaks the hell out of that so-called core tenet. Have you looked at
make menuconfig
at any point? There’s everything but the kitchen sink in there.Apples to oranges, and you can have a minimal kernel tailored to your needs.
“do one thing well”
Arguably, Systemd does exactly that: orchestrate the parallel starting of services, and do it well.
The problem with init.d and sys.v is they were not designed for multi-core systems where multiple services can start at once, and had no concept of which service depended on which, other than a lineal “this before that”. Over the years, they got extended with very dirty hacks and tons of support functions that were not consistent between distributions, and still barely functional.
Systemd cleaned all of that up, added parallel starting taking into account service dependencies, which meant adding an enhanced journaling system to pull status responses from multiple services at once, same for pulling device updates, and security and isolation configs.
It’s really the minimum that can be done (well) for a parallel start system.
They’re the main reasons, yes, but there are plenty others .
Thanks a lot. I truly hope this is the big picture and SystemD whiners are just a fringe minority lol
I just hate the syntax, systemctl start apache2 feels like dumb manager speak over service apache2 start.
But other then that I love how systemd has been for me.
How so? I like the systemctl syntax more, since it allows for starting/stopping many units at once. It also supports a much richer set of commons than service ever did.
it just feels like a manager decided the command should read like english, made the decision then went back to never entering a command again in the terminal again. every day, i get to decide, should i enter “systemctl restart problem_service” all again or hit up on the keyboard and and hold back, then rewrite over the previous status command. bit less work if the status/stop/start/restart bit was on the end like it used to be.
The bit was on the end because it was an argument to the script specific to that program. Instead, the control is now at the start because it is an argument to systemctl itself. This removes the ability to define custom controls, but enables you to control many things at once.
Yeah,
command subcommand args...
. Theservice
format makes more sense when you’re seeing it as “run this script to control this service”. Thesystemctl
format makes more sense as a frontend subcommand to control systemd itself.
In BASH ALT+T will swap the last white spaced separated strings… It’s still annoying but makes “systemctl problem_server start/status/restart” a bit easier. CTRL+W will clear the current string to whitespace, so up arrow, ALT+T, CTRL+W, status, ALT+T, Enter.
systemctl start apache2 mysql haproxy
That is the reason.
Y’know, I felt that way to begin with and it certainly took a long time for my fingers to adjust, but I’ve grown to adjust to that.
And it’s better - you can do: “systemctl restart Service1 Service2 Service3” Before, with “system Service1 restart” you could only action on service at a time.
Plus, it’s linux, so you can set up aliases to change the order into anything you like, even carry on using the old muscle memory formats. (Although I don’t encourage this if you intend working on multiple servers!)
One of my biggest problems with critics of systemd is that a lot of the same people who make that second point also argue against wayland adoption when xorg does the exact same thing as systemd. It makes me feel like they’re just grumpy stubborn old Linux nerds from the 90s who just hate anything that’s not what they learned Linux with.
Which is sad, because honestly I think it’s kind of not great that an unnecessarily massive project has gained such an overwhelming share of users when the vast majority of those users don’t need or use most of what it does. Yeah, the init systems from before systemd sucked, but modern alternatives like runit or openrc work really well. Unfortunately they get poorly supported because everyone just assumes you have systemd. I don’t like the lack of diversity. I think it’s a problem that any init system “won”.
Unfortunately they get poorly supported because everyone just assumes you have systemd.
No, they get poorly supported because they were a pain to support even before systemd ever showed up. I for one was extremely tired of writing the same shit over and over again in every init script and then going through the tedious process of porting the script to every platform for minor idiosyncrasies of the various distros (start-stop-daemon available or not was one I remember, the general bash/GNU vs. BSD stuff you get with any script was another) from 10 year old RHEL to modern ones.
Maybe
systemd
gets grouped withwayland
andxorg
with other init systems simply because of usability?I mean, I got used to the thought that what I prefer is less usable, because some pretentious UX designers say so, and we Unix nerds use inconvenient things because we are all perverts.
But when I read about industrial design and ergonomics, it seems that my preferences are consistent with what I read, and all those UX designers and managers should just be fired for incompetence and malice.
Back to wayland/xorg and runit/systemd (for example), same reason FreeBSD may seem easier to set up and use than an “advanced” Linux distribution - there’s less confusion.
Xorg, or X11, “used to” do the “minimum necessary” for a remote display system… in the 80s. Graphics tech has changed A LOT in the last 40 years, with most of the stuff getting offloaded to GPUs, so the whole X11 protocol became more and more bloated as it kept getting new and optional features without dropping backwards compatibility.
The point against Wayland, was dropping support for remote displays, while kind of having an existential crysis for several years during which it didn’t know what it wanted to become. Hopefully that’s clear now.
OpenRC and runit are indeed working alternatives, but OpenRC is kind of a hack over init.rd, while runit relies a bit too much on storing all its status in the filesystem. Systemd has a cleaner approach and a more flexible service configuration.
Is there somewhere I can read about the Debian wars? I am curious about that 🤓
I also think that sounds intriguing.
Prepare for a rabbit hole… but this ought to get you started…
I like it too. Very easy to work with and set up services as needed.
-
Yes. Yes it is. systemd isn’t bad for boot times, but more for tying so many goddamn things to init, PID1, creating just about the best attack point one could ever ask for. Wayland not being ready can be solved by not using it for the time being. Just use X. Also, it’s still called plymouth.
I’m honestly a big fan. Systemd-init has tons of options like run targets, sandbox options, users you want things to run as, etc. System-oomd has tons of qol stuff for desktop users to help with stutter and responsiveness. I am also kind of excited for UKI that systemd-boot is set to support.
UKI?, what is that?
Unified kernel image, basically a kernel and an initrd in one file that can be directly booted from UEFI. It is a bit more complicated than that but that should get you started searching for it if you want to learn more.
As a guy that’s been installing Linux since you had to compile network drivers and adjust the init scripts to use them; SystemD rocks.
Systemd (the collection of components present in a typical distro) is like many other large frameworks:
It can do a lot, has some good design ideas at its core, and is certainly useful to a lot of people.
But the implementation is opinionated and invasive, so if your needs don’t happen to match what its author(s) envisioned, it can easily become more of a liability than a benefit. Making matters worse, it is buggy as hell.
I don’t think it’s helpful to think of the topic as “a rant”. Criticisms of systemd are diverse, and at least some of them are founded in practical experience. Being dismissive of them only stirs up resentment and division.
To be fair, we knew before it would be buggy and invasive. The actual surprise for me was failure of project governance, even with Debian. It was enough to consider me moving to *BSD, thogh they have their own share of issues.
As someone who recently started learning linux properly by setting up arch, systemd is nice. It does a lot of things that make life easier for me and it never gets in the way.
What DE/WM you chose with your Arch? Wayland?
KDE on X because I like KDE and have an nvidia GPU.
F
If only there was an AMD card with 24GB of VRAM for less than 1000$…
…rx 7900 has 24gb
Just the XTX, which is about 1000$ where I live.
Boot times aren’t really an issue and not really relevant to good vs bad. You should be able to rice each one for speed on your particular use case if you really want to.
Be wary of anything you get from RedHat. I use their stuff sometimes but ensure I can happily live without gnome, systemd, pipewire, wayland or whatever else they are generously gifting to us freeloaders.
I am for most part quite happy with it. For all the complexity it brings, it also allows you to do a lot of stuff easily and reliable that would have been a nightmare with previous systems.
My biggest nitpick is that some commands are needlessly obtuse, e.g. trying to find an error message in
journalctl
is a mess when you aren’t already deeply familiar with the tool. It will show you messages that are months old by default, will give exactly the same output for typos in the unit name as it will for no error messages and other little things like that.systemd isn’t bad at all. People simply don’t understand that it is not “just an init service”.
It’s not THAT bad. It was THAT BAD remembering who invented and pushed it. You know, all these psh-sh-sh-sh-audio memes. People just do not want to:
- Use software written by developer who didn’t manage previous project to work properly.
- Change anything if it just works ©®™.
Currently systemd does its job well and right, despite on fact that systemd not so modular as you would expect. Event hardcore systemd haters now using it and happy. Including me :)
deleted by creator
- Is the current SystemD rant derived from years ago (while they’ve improved a lot)?
No it’s almost always been derived from people’s behinds.
- Should Linux community rant about bigger problems such as Wayland related things not ready for current needs of normies?
Yes.
Systemd is spectacular in many ways. Every modern OS has a process management system that can handle dependencies, schedule, manage restarts via policy and a lot more. Systemd is pretty sophisticated on that front. I’ve been able to get it to manage countless services in many environments with great success and few lines of code.
I think it is one of those situations where everyone complains about what they use.
The reality is that system startup is insanely complicated due to the nature of software dependencies, and there will never be a perfect solution across multiple distros.
Lot’s of things in computing should be simplified. Especially bios firmware / boot process. It has become overly complicated mess offering zero value for anybody. In 10 years the bios chip size has increased from 8 mbit to 256 mbit and no features added. Only TPM 2.0 has been added, but it is another chip than bios.
Haven’t you heard? The UEFI bios can have binaries included by the board manufacturer that Windows will ask for and automatically run on startup… for example to download a GigaByte control center installer to fill your recent install with crapware… that would then proceed to download a self-update from a http (no-s) URL. And the binaries will work even if they’re signed with revoked certificates and have been injected by any device with DMA access!
That’s… like… super cool, isn’t it? If only we could have that on Linux… /s
Also, the modern bioses have pretty graphics and mouse support… /s/s
I noticed this driver crapware by updating the mobo bios I bought used. Luckily MSI has a rollback tool lol.
My i5-2500K had a nice GUI bios with 16 mbit bios chip. Including UEFI and Secureboot and other modern features.