systemd sucks!

This blog was missing a systemd rant for quite some time. But fear not, here it is!

As you may know from the previous articles, me and the two other name-giving authors on this blog, who write articles about once a year, all love the awesome Arch Linux. However, it has lately switched to systemd from the good old sysv-init.

I have really tried to like it and installed it on all my two linux machines as soon as I have read the news on, since they always put up good stuff there, right?

When you have just installed systemd and everything works™, it’s quite okay. It even seems to boot fast, although the very characteristic boot messages from the old days are gone. But that’s the new way I thought there, when you boot fast, you don’t need these messages anyway (kernel parameter ‚quiet‘ is your friend).

After using it for a long time now, I can present you the reasons why I started to hate it:

First of all, it tries to hide everything from the user. That’s not the arch-way at all 🙁 I liked the simple init scripts, where I could hack in everything I needed just by modifying some shell scripts. Adrian and I used to modify the rc.sysinit file to speed up the boot manually for example. Or you could start custom commands in rc.local back then, which was very useful. This especially annoys me on my home server, where I need to start the wlan access point, configure IP tables for traffic shaping and do lots of other stuff, to configure it properly. Who gives a fuck about boot time on a server anyway? I ended up writing my own „Fuck Systemd“ service file hack, which starts the shell script /root/ on every boot.

Writing service files is a real pain, too, compared to rc-files. They are more complex and harder to debug. And once you change them, you must tell systemd to reload all service files. It will notify you, that some service files have changed and you must reload them, but it doesn’t do that automatically! What an asshole!!

Oh and the log feature is equally shitty. Everytime I do systemctl status $service, I need to wait 30 seconds until I see some logs! What the fuck? Ever heard of the unix philosophy, that says do one thing and do it well? It’s more like do everything and shit the admin in the face while doing so.

And systemd is really not intuitive. For example: I want to start a service, which I have not enabled before. It gives me a file not found error! With rc scripts, you can do this any time, but here you really need to enable a service (at boot!) before you can start it. This is just bad design and it is fucking annyoing.

Last but not least: I really liked the old boot messages, they looked so much better. Without the quiet kernel parameter, arch looks now just like any other distribution. What a shame :-\

I really hope that sooner or later it will be possible to use arch linux (with the shiny pacman, abs, aur etc.) in combination with the old rc scripts.

So after some months of usage, I am sure that systemd is the worst thing that has happened to my favorite Linux distribution  🙁

There are already some alternatives out there, but they are far away from being a drop-in replacement. Anyway, I’ll probably switch to one of those, when I find enough time to do so.

9 thoughts on systemd sucks!

  1. Personally, having used Arch from 2003 onward, I was very disappointed that Arch gave up a couple of its own unique selling points (like, BSD-style simple init, and The Arch Way where your most powerful config tool was your text editor).

    I switched to Ubuntu’s XFCE variant then. I miss Judd’s Arch Linux. It’s just no longer been the same.

    Schönen Abend.

  2. What annoys me, is that you never know when specific unit file will be executed by systemd.
    I bet it was interesting for developer to implement parallel services startup. However, this feature gives not much (if something at all apart headaches and uncertainty) for user.

  3. Writing unit file is hard?!



    How hard is that?

    And aobut 30sec wait for logs – you should report it as a bug.

  4. A distro which is very similar to arch (the package manager has similar syntax, even) is voidlinux. They used systemd, they switched to runit. If the programs you use are in the 4000 binary packages they ship you’re golden, if not you have to do things yourself, which is the price of independence anyway.

  5. Replacing „stop“ with „start“ (or vice versa) in „service httpd start/stop“ is easy and fast on the command line, but doing the same with „systemctl start/stop httpd.service“ is so much slower because „start/stop“ is in the middle now and you have to skip over „.service“ with your curor too!
    And the „ctl“ part in „systemctl“ easily hides typos (like „systemclt“) and from usability something like service or syscontrol would be a better idea (see man alias for fast help).
    And why do I always have to run journalctl -l to see the whole deal? Why to wrap text automatically when there are tools like fold (see man fold) to do so.
    Why is there no „–debug“ flag for systemclt (Got you!) so I can easily understand why
    my first homemade service file isn’t working.
    Creating your first (proper!) service file takes much longer than copying an old startup script (and changing one line) and I find it confusing that you now start daemons non-daemonized (with ExecStart). I find systemd to be one of those tools where you need a big posterized hardcopy of the dependency graph to make any sense of it (see „Requires“ and „After“).

Comments are closed.