💾 Archived View for lesogorov.site › glogs › 2303 › Is-SystemD-free-really-for-me.gmi captured on 2023-04-26 at 13:05:23. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-04-19)
-=-=-=-=-=-=-
I've been running Systemd-free distros for the past few years.
When I first got into Linux in 2016, it seemed like all the "cool" Linux people used Systemd-free distros and hated on Systemd, but now it seems like this group is not held in the same esteem as they once were. More frequently I hear people more so making fun of this mentality and seeing it as overly dogmatic. By the time I had started using Linux Systemd was already ubiquitous so I ended up learning it in the process of learning how to use Linux.
When I first tried out Void, I remember trying to start sshd and being utterly baffled when I got the message "command not found: systemctl" since on every other distro I had used, that was the way you started things. It wasn't until then that I finally understood really what Systemd was.
I really like Void, it's certainly a bit less polished than others like Arch, and I wish there was a more standardized package naming convention, but nevertheless I find myself switching back to it every few months whenever I leave. It uses runit, its own init system which is probably as close to bare bones as you can get. Each "service" is made up of a directory with at least a shell script to start it, with additional scripts for other functionality. To enable a "service" you sym-link it to /var/run/runit and to disable a service you delete the sym-link. If all you are doing is enabling a few daemons like ssh and tlp, this makes the process very easy.
I've also used Artix Linux for a while, which is just Arch with a few extra repositories that add Systemd-free variants of projects as well as the init systems themselves. Artix supports a number of init systems, though I've only used runit and OpenRC. For whatever reason Artix moved the runit directory to somewhere else that you need to sym-link to, but other than that it's use is practically identical to using it on void. As for OpenRC, It works, sometimes I forget if I should use rc-service or rc-update, but other than that I don't have any complaints or compliments. One headache with Artix is that since it supports a number of init systems, you have to ensure to install both the <service> package and the <service>-<init-system> package; IE you must install openssh and openssh-runit (in the case of runit). This really isn't that much of a hassle until you start installing stuff from the AUR that assumes it's going to be running on Arch proper and thus utilize Systemd functionality.
What drew me to these other init systems was an old forum post I found making reference to /etc/rc.local, which for those who don't know, was just a script that would run at boot by default on OpenRC and SysVinit. The post said to just stick the command in /etc/rc.local and I got frustrated when the command didn't run when I rebooted. Then I found out I had to write this whole .service file if I wanted to have it automatically start, not realizing how easy writing a file like that would be. In hindsight this is moronic, but I put the blame on Systemd for removing this functionality. I thought I finally understood why it was so hated and that day I decided to stop using Systemd.
I've tried out a number of other Systemd-free distros, but each time I find that either it's not really designed for desktop use, in the case of alpine, or that it's buggy. So far I've just lived with the bugs, but more recently I have found myself just being more irritated by them than before. Most of the time these issues have no posts online on how to fix them and even if they do it's hit or miss for whether or not they will work.
Last summer I took a class that was an intro to managing networked systems, which really was just an intro to Linux and how to use the shell, so pretty much just review for me. The course was one created by Red Hat so obviously we used RHEL for all the assignments. This course started having me warm up to Systemd, being shown actually how to use some of the features beyond starting and stopping a service. being able to read the log of a service, setting time-zones, stuff like that. Sure this functionality is present in a non Systemd distro, but with Systemd it's all unified. Then I rewatched the famous "Tragedy of SystemD" talk and it stuck with me that maybe all this Systemd hate was a bit overblown and that each approach had their merits. I still stuck to the non-Systemd-init side, but hey the grass isn't that much less green over there.
Then I spun up my Gemini server using Debian. Using what I learned from the class, as well as what I had learned before the Systemd-free jump, it just came back so naturally. Commands I wasn't as familiar with had clear help guides and there was a plethora of information on how to write a .service file to start Agate, though I had ChatGPT write it and I only modified what I needed to.
Everything is just so neat, I don't need to go around finding which config file controls which thing, almost everything can be done with a command. Plus it's the standard init system nowadays so just about every guide online will work for what you're doing.
Sure Systemd somewhat goes against the Unix philosophy of "Build something that does one thing well" but, as many have pointed out before, Systemd is not really one monolithic project, but a number of smaller project s all unified under the banner of Systemd and designed to work well together. I may not like EVERYTHING Systemd does but I can respect that it has simplified and standardized how things are done on Linux as well as enabling stuff that couldn't be done before.
I just don't really see the costs outweighing the benefits of using Systemd like I once did. Don't be surprised if I jump to a Systemd distro here in the next little bit.