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 archlinux.org, 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/startup.sh 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.