Ive been runing Debian 12 (kde) since bookworm was released and am loving it.
I have recently discovered Devuan which seems to be Debian without systemd - what is the benefit of removing this init system?
It’s mostly opinionated. systemd is written in C, uses a consistent config, is documented well, has a lot of good developers behind it, is very fast and light, and does what it’s doing very well. Since systemd also is split up into multiple parts, it still follows the “do one thing, do it right” philosophy.
There are some people that believe that systemd “took over” the init systems and configuration demons of their distro, and does “too much.” It really does quite a lot: it can replace GRUB (by choice), handle networking config, all the init stuff of course, and much more.
However, I have lived through the fragmented and one-off scripts that glued distros together. Some distros used completely custom scripts for init and networking, so you had to learn “the distro” instead of “learn Linux.” They were often slower, had worse error handling, had their own bugs, were written in various scripting languages like tcl, Perl, Bash, POSIX shell, etc. It was a mess.
The somewhat common agreed-upon init system was System V, which is ancient. It used runlevels, nested configuration (remember /etc/rc.d?), and generally, it was mostly used because it was battle tested and did the job. However, it is arguably esoteric by modern standards, and the init philosophy was revised to more modern needs with systemd.
You can probably tell my bias, here. If you have to ask, then you probably don’t have a “stance” on systemd, and in my opinion, I would stick with systemd. There were dozens of custom scripts running everywhere and constantly changing, and systemd is such an excellent purpose-built replacement. There’s a reason why a lot of distros switched to it!
If you want to experience what other init systems were like, I encourage you to experiment with distros like the one you mentioned. You might even play with virtual machines of old Linux versions to see how we did things a while back. Of course, you probably wouldn’t want to run an old version of Linux for daily use.
It should also be mentioned that init systems are fairly integral to distros. For example, if you install Apache httpd, you might get a few systemd .service files. Most distros won’t include init files for various init systems. You can write them yourself, but that’s quite a lot of work, and lots of packages need specific options when starting them as a service. For this reason, if you decide you want to use a different init system, a distro like the one you mentioned would be the best route.
Great question, and good luck! 👍
I was reading about Slackware today and it seems their init system still uses system V and lots of scripts.
So I’d definitely recommend that OS to anyone curious about the old style of init system.
Slackware uses the sysvinit program, but doesn’t have System V-style scripts. Which is somewhat confusing, but sysvinit is a basic init program that will just do whatever
/etc/inittab
tells it, so you can write your startup scripts to work however you want.Slackware uses what people tend to call a BSD-style init, but it’s nothing like the modern BSDs, nor the older BSDs, not really. If you use Slackware, you’ll learn how Slackware’s init system works, but that’s about it.
Ah my mistake. I’m just generally curious about what distros use an alternative to systemd (not that I have any issues with systemd myself but I like variety).
So I googled what init system Slackware uses and read this page.
http://slackware.com/config/init.php (no https)
They mention several scripts on that page and that’s why I thought they use scripts.
But I haven’t actually used the Slackware yet. Suppose I should though since I’m interested.
No, you’re right that it has scripts, they’re just not the scripts used by SysV-style init systems. They have different names, are in different locations, and are executed differently.
I used Slackware for several years back in the 90s, and from that experience I’d recommend against learning it. I mean, with VMs today it’s simple to try new distributions, so go for it, but I’d put it waaaaay down the list of distributions/operating systems to try. If you have anything else you’re interested, put it first. Slackware is standard Linux so there’s nothing really special you’d find when using it, and it’s just a painful experience in general. I think some people will argue that it helps you “really learn Linux”, but I don’t think so. It just helps you learn Slackware’s idiosyncrasies, and learning pretty much any other distribution would be more beneficial than that.
Slackware has advanced from when I used it in the 90s, but only barely (they have a network-based package manager now, I guess, although it proudly avoids dependency resolution!)
Oof that stance on dependency resolution is a big no for me. As much as I hated building gnome from source it was amazing that Gentoo can do that in a single command.
Great answer. I do use systemd boot on one of my systems as well. It isn’t exactly systemd itself is it? Simply a boot loader packaged as part of the general systemd boot suite, right?
Yeah exactly. It does have some features that require integration with the init system, which systemd obviously supports, but it could be used independently of systemd quite happily, and other init systems could easily support those integrations.
I am fan of principles like KISS and “Do one thing and do it right”. From this point of view is systemd disaster because it is almost everywhere in the system - boot, network, logs, dns, user/home management… It’s always surprise for me if nothing breaks when I do upgrades.
I understand why systemd is here but I’m not at all happy to use it.
Back when systemd was a hot topic I jumped on the bandwagon of using systemd-less distros just because people were telling me how bad it was. To this day I still use openrc but the reality is that systemd works very well and is easy to understand and use. The average user gains no benefit to using another init besides having a better understanding of how the system works.
This is such a “consumer-grade” take imo. No offense intended, but in enterprise Linux development systemd is considered horrible trash.
I can see why a more casual / desktop user would love it, though.
“consumer-grade”
Yeah, that’s the point. Again, the average user (as in desktop user) gains nothing from using a different init. There may have been some crazy server-side scenario where the type of init you used actually mattered but we’re talking about desktop Linux, which the answer is a clear-cut no. I’m not stopping the people that are interested in trying a different init out, I’m just telling them that there’s little to no benefit in the end if they’re expecting an improvement in performance or whatever else.
If you’re a new user you’d be better off moving on from here and not paying much attention. It’s a hot topic full of opinions that everyone will want to force on you.
If you really want to swap out the init system there are some things you need to know.
First, do you need a desktop environment(DE)/window manager(WM)? If so you’ll need to find a DE/WM that is not going to demand you use the mainstream init choice which currently is SystemD. If you want to use Gnome from your chosen distro repo’s then chances are it will pull SystemD with it.
If you want Gnome but not SystemD you’re gonna be building that beast from source every update and for the most part you’ll need to go direct to Gnome for any issue/bug you fall over and this too will be painful.
Simpler WMs will be more forgiving and will only rely on either xorg or wayland and will happily run on any init.
There will be other packages out there that also demand you use SystemD, so you’ll have to find them and decide if you need them or if there are alternatives that don’t have a hard dependency on SystemD.
All the current usable inits are written in C or C+ (except for GNU Shepherd, this is written in guile).
The benefit of swapping out the init system is mainly down to choice, necessity but again this all boils down to what the installation is for and what will it be doing.
For a good run down of the features of the init systems refer to these 2 urls: https://wiki.gentoo.org/wiki/Comparison_of_init_systems https://wiki.archlinux.org/title/Init
All of the init’s (except for epoch) provide parallel service startup so if boot time is a focus test each to find the fastest for your platform, Not all of them provide per-service config.
For example one can cobble together: minirc, busybox, syslogng, crond, iptables, lighttpd.
And the end result would be a relatively secure webserver with a small footprint, you could further extend this with nginx to sit in front of lighttpd to provide waf and cache features.
The biggest bug bear with SystemD is that it writes to binary log files and even though it can be configured to generate plain text, if it falls over in a bad way you will still only get a binary log file and if you’re in a situation where your only access is say busybox for emergencies. In this instance your only option is to boot from another systemd distro and mount the broken install and run:
$ journalctl --file /var/log/journal/system.journal
Other than that many take issue with SystemD trying replace parts of the system that many say don’t really need replacing like sudo, fstab, resolv.conf, etc but again these statements get full of opinion and don’t help us truly way up the differences and some of the SystemD alternatives misbehave or become hard dependencies other projects which makes it harder to disable parts and swap out to your chosen package.
I’ve tried to be more objective with this response and keep as much of my personal opinion out of this, But here is mine:
I don’t really like it but to make it easier to get support for my OS I put up with it, I daily drive arch and so must accept it. I could rip it out or run artix, I’ve gone down this path and got fed up with jumping hurdles to get what I wanted so went back to Arch and now I disable parts of it I don’t need/want, have it generate text log files, use openresolv and other choices.
Devuan is the outlet of a bunch of people that don’t want Linux to evolve, become better and have more flexibility because it violates the UNIX philosophy and/or it is backed by big corp. Systemd was made to tackle a bunch of issues with poorly integrated tools and old architectures that aren’t as good as they used to be. If you look at other operating systems, even Apple has a better service manager (launchd).
Systemd is incredibly versatile and most people are unaware of its full potential. Apart from the obvious - start services - it can also run most of a base system with features such as networking (IPv4+IPV6, PBR), NTP, Timers (cron replacement), secure DNS resolutions, isolate processes, setup basic firewalls, port forwarding, centralize logging (in an easy way to query and read), monitor and restart services, detect hardware changes and react to them, mount filesystems, listen for connections in sockets and launch programs to handle incoming data, become your bootloader and… even run full fledged containers both privileged and non-privileged containers. Read this for more details: https://tadeubento.com/2023/systemd-hidden-gems-for-a-better-linux/
The question isn’t “what is the benefit of removing this init system”, it is “what I’ll be missing if I remove it”. Although it is possible to do all the above without Systemd, you’ll end up with a lot of small integration pains and dozens of processes and different tools all wasting resources.
Devuan community is a cesspool indeed. However, I cannot deny the validity on some of their argument, namely about having alternatives.
Yeah, I just have a question about that community. Debian maintainers told them they were open to a multi init architecture (as in have Debian support both systemd and init) as long as they maintained it, they just rumbled around and decided to fork Debian instead. This is the kind of people we’re dealing with.
Indeed wasted potential. Debian could’ve welcomed them with open arms had they participated in the Init divesity discussion.
That’s the problem, Debian did welcome them with open arms… they decided to left and fork.
people that don’t want Linux to evolve
Exactly this.
The philosophical arguments are pretty garbage. I generally want to know if the “it violates the UNIX philosophy” people use browser extensions… That violates the UNIX philosophy too. Systemd “is backed by big corp” but who do you think is actually contributing time/effort/code to the Linux kernel? It’s the device manufacturers who are trying to get you to buy their products… So that fails too.
No offense to anyone reading this but if you’re really passionately anti-systemd, I would not hire you. This is a dumb hill to die on and a red flag.
Maybe you should hire me then?
what is the benefit of removing this init system?
I don’t know anything about Devuan, but the init system is replaced, not removed. You need an init system. Devuan probably has something more barebone than systemd.
For a desktop user I don’t see any significant benefits to replace systemd. But also no-systemd distros works fine. I was impressed during my try on Alpine Linux, that uses openrc instead. The text printing during OS startup is so short that the terminal didn’t scroll. The bluetooth worked flawlessly. But it is a small community distro, and Alpine is limited by other things than the init system. The init system is a problem for people that have to deal with services.
On political aspects, IMO FOSS works easier with small and focused components that can survive with spare time developers. I can’t make critisicms on technical aspect, I’m not a good programmer, I just notice systemd seems to works fine. Red hat has man-power and capable of large contributions to Linux distros so they leads the innovations. All big distros switched to systemd, now its hard to avoid.
I would like to support smaller FOSS-friendly systems but I use Arch because I need recent versions and the anti-systemd arch-forks are harder to use. I’m a weak guy.
In short, as an user you should be fine by keeping normal Debian. If for political reasons you want a no systemd distro, the easiest is to use MX Linux with the default init.
devuan is a work of art. Artix and Devuan are both the only distros I’d turn to for stability and not having to deal with systemdoom’s mess
For average users, it’s a matter of preference. Like asking what’s the benefit of chocolate over vanilla.
You are curious though, so I’d recommend giving another init system a try. That would give you some perspective on systemd.
Very valid alternatives include:
- s6
- runit
- openrc
- BSD rc.d
And you can find a pretty complete list here.
runit++