I have seen so many times that systemd is insecure, bloated, etc. So i wonder ¿does it worth to switch to another init system?
I mean, is systemd giving YOU problems? If not, don’t switch just because other people complain about it
deleted by creator
I didn’t use Linux two decades ago (I started on a systemd distro a few years ago), and the init system I use (runit on Void) is both simple to use and boots faster than any systemd-based distro I used; which is what I personally care about. I never used any “advanced” features of systemd other than timers and user services, and these have many alternatives.
I think systemd is fine, and has generally proven itself as reliable, but that doesn’t mean the current alternatives have no merit.
I would be interested in understanding how it boots faster considering that systemd init is fairly small and the features of runit is parallel process starting, which is also something that systemd provides.
Are you sure it’s not just that void itself has less crap to load?
This feels like I’m going to have to set up a couple of Arch installs to compare for myself.
I also had a Debian setup for a while with SysV init which also had a faster startup than systemd (on the same exact setup otherwise).
That Debian install would actually startup faster than my current Void setup, though I wouldn’t recommend it.
I would be interested in understanding how the hell it’s such a big issue, honestly. Even if we generously assume that runit boots 5 times as fast as systemd, on modern systems it makes like a few seconds difference, which… who cares? Who goes around constantly rebooting their shit so many times a day that those 5 seconds they save per boot add up to any significant amount of time?
If you don’t care, good for you; I do care though.
And you can generously assume whatever you want but with systemd I sometimes (across multiple OS’s and machines) had random boots which took way over 5x my current boot time (not to mention extremely long shutdowns, more than 2-3 minutes sometimes compared to less than 2-3 seconds now).
I know this stuff can be analyzed and fixed with tools provided by the systemd project, but I never had to fix anything with runit.
Calm down, I only said I was curious!
I’m on Fedora so I’m unlikely to be switching from systemd for my main system, I have very little interest in switching init’s and I’ll use the one that comes with my distro but people talking it up makes me wonder.
As for rebooting, my couch gaming system gets started and shut down for each session because it could be days/weeks between use so shaving 10 seconds off the start up time is an interesting concept. Although I could probably do better just replacing the grub delay that HoloISO added for some unknown reason.
Why are you so invested in systemd that you have to project your values on other people?
Besides, different approaches can be educational and solutions to improve performance can always be reincorporated into systemd to improve life for everyone.
Even you asking this question means you should not. Systemd is perfectly fine for most people and the people that dislike it have their very specific reasons. Just use what your distro gives you, you shouldn’t have to care about these things.
Just use what your distro gives you, you shouldn’t have to care about these things.
To expand on this: OP, if you want to try a different init, you’re most likely better off switching the whole distro to one using that init. Unless of course your current distro explicitly supports many different init systems (like Gentoo). Don’t try to replace it by hand in a distro that expects to run on systemd, it’s a recipe for disaster.
Gentoo is great because they give you step by step directions for systemd and openrc so you can see the differences in action. (If you choose to read both sets of directions)
Switch to sysvinit and you’ll understand the benefit of systemd
The kind of suggestion that does fuck all. Don’t force your myopic ignorance on others.
Oh yeah ahaha
This is a bit of a strawman. SysVinit is hardly the only alternative:
antiX: sysvinit and runit
Artix: openrc, runit, s6, and dinit
Chimera: dinit
Devuan: sysvinit (default), openrc, runit, sinit
Dragora: sysvinit + perp
Gentoo: openrc, systemd
Guix: shepherd
Hyperbola: openrc and runit
KNOPPIX: knoppix-autoconfig
MX Linux: sysvinit (default), systemd
Obarun: s6 supervision suite
Parabola: openrc, sysvinit, s6, systemd (default)
PCLinuxOS: sysvinit
Slackware: sysvinit
Stali: sinit
Void Linux: runit, openrc
Openrc at least is sysvinit based. Pre systemd the options were really sysvinit and upstart. Upstart was even worse than sysvinit such that afaik no one has bothered to try to revive.
just another one of the holy wars within Linux – for the average user, it’s not going to make any difference – most of the mainstream distros switched over a LONG time ago so if you want to avoid systemd, you have to do a little hunting (ex. Devuan, Void, Gentoo, etc.)
so, it’s all just a “Playstation VS Xbox” kind of thing
It used to be that everything in Linux was a file, ideally a text file, so if you could find the right file you could access or change what you wanted. Systemd is a big program that manages a bunch of stuff and creates unique commands within its programs for doing so, which moves away from that principle and turns system management into what feels a bit more microsofty (like the registry editor program vs editing config files, etc) and a lot of people don’t like that. But to its credit, it does solve a few problems with cobbling together a modern system that doesn’t suck.
Actually it doesn’t really move away that much from the “everything is a file” principle. For example a “service” is a file describing how to properly start a particular service and if you enable a service, then a symlink is created to your service file, …
As a Windows app developer, I wish Windows service management, boot control, and logging were more like that of systemd. What we have is so much more janky and Sisyphean to work with.
It used to be that everything in Linux was a file, ideally a text file
Yes? The entire Systemd configuration is done with files. With a very well defined structure called units that you can use to configure, boot, service startup, networking, containers, mount stuff, open sockets… that’s exactly the point Systemd provides a cohesive configuration file format for a system.
Yeah but I’ve interacted with it a lot and most of my interaction is commands sent through one of their programs. Versus scripts like init.d whose contents I can easily inspect and modify. Init scripts aren’t config files, they’re directly executable code.
Init scripts aren’t config files, they’re directly executable code.
Yes and that’s exactly the problem.
Yes and no. Let me start by saying I use systemd and have never seen any of this as a problem big enough for me to switch.
The Unix philosophy is that a program should do one thing and do it well, the old init.d system did exactly that, but systemd does more than just start programs, for example there’s the systemd-logind service which is used to authenticate users. Why is this a problem? Because some people don’t want to use systemd, therefore they don’t have logind, so if something were to depend on that, like GNOME’s GDM did for a while, it would be impossible to use it without systemd. So in a way people complain about programs becoming dependant on systemd, and systemd grabbing more and more responsibilities to the point where it would become an integral part of Linux, it’s not that systemd is a problem now, is that it has the potential to become so ingrained to everything that it becomes impossible to remove. But in the meantime systemd does provide some advantages, including parallelism which makes the computer boot faster.
Should you switch? Not really, this is more a philosophical debate on what Linux is and should be, I agree with all of the philosophical points and don’t think programs should depend on systemd, but I don’t think that’s directly systemd’s fault.
Keep systemd. People can cry all they like but it’s the best init system we have right now. Unless you want to start building a better one, i guess.
deleted by creator
For desktops it doesn’t make much sense, but now everything’s so oriented to systemd its actually starting to affect embedded Linux applications… so lets try our best to keep the alternatives alive.
deleted by creator
So what do you do under Linux? Browse the web?
Okeeeeeey, so who’s is stuck in their ways?
I’m on Guix which doesn’t use SystemD. Running on an MSI GS66 Stealth laptop with an Nvidia RTX¹ 3080. I browse the web, develop, run Stable Diffusion on the GPU, game using Steam and Lutris (Chivalry 2 and Diablo 4), Zoom calls for work.
Mainly this just like any other machine.
¹ or whatever the letters are these days.
I’m not recommending non-systemd inits, but in a desktop usage, I never wrote a single script with MX Linux and Alpine. Their init system just works.
Systemd is a large piece of software. There are ways to make it smaller and disable various modules for it, but usually by default it’s very heavy.
With a traditional init system, it’s just an init system, and you’ll use other other programs to do the other things. This basically means a chain of interconnected bash scripts. Perhaps you’ll run into some integration issues. Probably not though. It’ll be mostly the same.
There is no real advantage to this from a user perspective beyond a philosophical one. Systemd works quite well at doing the things it tries to do, but it’s the Unix philosophy to “do one thing and do it well,” and some people care very deeply that systemd does not follow their interpretation of that philosophy, and that’s certainly a fair reason to not use it.
However, if you’re not having problems with using systemd, I’d say don’t bother switching.
Systems is not the Unix philosophy, at least, not to me. It tries to handle so many different things and use cases. “One thing” normally means a small thing, and initialising everything you could ever think of is not a small thing.
the only reason to stick to one of those init systems is that you already know everything about them and you dont want to relearn a bunch of stuff.
other than that i see 0 benefits to skip systemd
Is the experience of trying new distros very cool? yes
Should you abandon systemd? no
systemd is not bloated and it’s not insecure. If you don’t have any problems, don’t switch (unless you wanna have some fun trying new things, if you do, run a vm).
systemd is insecure, bloated, etc
[Citation needed]
If a distro that doesn’t use systemd ends up booting much faster or being much easier to configure, maybe those are features you care about. But switching away from systemd in this case is merely an implementation detail. What you’re really doing is moving from a distro to another one that serves you better.
Otherwise, the choice of init system has very little impact to the average user. Maybe it’s worth it to switch init systems if you hate the syntax of unit files and/or the interface of
systemctl
/journalctl
and you use them often enough to warrant the effort. The people who want to use alternatives to systemd without having such a practical issue with it are doing so for philosophical reasons.The Artix folks cite sources for their opinions on systemd being bloated and insecure:
These are terrible sources. 3 random CVEs and opinions of randoms on the internet. The “sources” conflate arguments about systemd as an init system with the non-init parts and with criticisms of Poettering, and a lot of it is “this is bad” with no argument or, worse, incorrect arguments. If there is anything in there that actually proves something, link directly to it. I’m not going to shift through mountains of garbage to find it.
@patatahooligan @prettydarknwild keyword here is average users , else glibc hardly compares to musl
The biggest benefit would be to learn more about how unix systems work from the ground up. I’d say if you’ve had no problems ever with systemd then just stick to it. My linux usage predates systemd (by a lot) and I just want options kept open so I’m never forced onto it against my will.
Basically, if you do not see any reason to switch from systemd then you should not. The thing with systemd is that it is really big and complicated. If you just use defaults of your distro systemd works just fine, but if you want to (or have to) change something fundamental, then dealing with this monstrosity becomes a bit of pain. You basically end with the situation where you are in a war with your own PC. After some time of this, dealing with an init system that does exactly what you tell it to do feels refreshing. There is also the part, where some init systems (sysVinit and runit) boot faster then others (openRC and systemd), but it is not that significant. I use runit BTW. With my setup I spend much less time dealing with runit then I used to with systemd. That being said I still miss some of systemd features.
Too shit to fail.
What distro do you use with runnit?
I, personally, use Void Linux, which is a ‘flagship’ runit distro. But if you want a bigger package repository, then devuan is also a good choice.
Void Linux
If you have to ask, no.
I say this as someone who doesn’t use systemd. There’s not much benefit to it. It’s cool to do if you’re an enthusiast or experimentalist, but from a practical stand point, systemd is most practical.
I use gentoo with openRC btw.
Systemd vs anything else is mostly controversy, 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) than what Linux had with init and friends.
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.
That list of “features” never needed to be replaced by systemd and for the most part are provided by the other init offerings.
As for logging you may find yourself one with a system using systemd that has faced an error and cannot boot good luck reading the binary journal it makes, yes these entries can be pushed out to text file or syslog but if systemd falls over hard it will log to the default binary journal and you’ll need to use another install with systemd to run journalctl --file /path/to/mounted/journal which in an emergency is a true PITA.
It is not an outlet for those who you choose to espouse as “People who don’t want linux to evolve” far from it most of them just want systemd to stop trying to replace things that are not broken and for other projects to stop having it as a hard dependency. Yes it is modular, yes these can be disabled but it has so many tentacles that it is clear the intentions are wider than just being an init.
What’s wrong with ip, iproute2, iptables/nftables, ufw, firewalld, ntp, dnscrypt, privoxy, dnsmasq, openresolve, crond, sudo, mount, syslog-ng?
Are they somehow obsolete now?
If you want a basic bootloader your UEFI has one built in and/or you can boot the kernel directly with efistub, systemd-boot is so basic it’s pointless to the point that an unconfigured install of refind is a truckload better.
I get that this is a hot topic but waaay too many people are just adding pointless opinion and toxic opinion into this debate that doesn’t help anyone make what they want is a decent informed choice and tbh when I see Gnome make a hard dependency of systemd it makes me think either systemd is doing too much, is not modular enough, devs got lazy or all of the above.
And a final FYI I use systemd and have disabled much of it but can’t uninstall the parts I don’t need/want.
That list of “features” never needed to be replaced by systemd and for the most part are provided by the other init offerings.
This is plain wrong. Init wasn’t able to properly start things in parallel and monitor them. With systemd you can even create a visual representation graph of your boot services that you can use to identify what is taking more time and when things are happening.
What’s wrong with ip, iproute2, iptables/nftables, ufw, firewalld, ntp, dnscrypt, privoxy, dnsmasq, openresolve, crond, sudo, mount, syslog-ng?
What’s wrong? Too many tools, way too fragmented and poorly integrated. It is very, very easy to get into trouble if you simply setup a dual stack system with IPv6-PD with those tools. With systemd it all works of the box with simples configuration files and its way more intuitive. For eg. cron is a mess, systemd timers share the unit config format which is way better and more scalable.
I use systemd and have disabled much of it
So you are saying you could just have a very small footprint and have a very lightweight system that is very solid but instead of choose to go with a bunch of different tools? I’ve leveraged systemd to be able to have fully working system on devices with 256MB of RAM while still having RAM for other important applications.
Here’s a handy chart for you
https://wiki.gentoo.org/wiki/Comparison_of_init_systems
As you can see many have the ability to start services in parallel. Some script magic with graphviz will also do similar to analyse blame.
What’s wrong? Too many tools, way too fragmented and poorly integrated. It is very, very easy to get into trouble if you simply setup a dual stack system with IPv6-PD with those tools. With systemd it all works of the box with simples configuration files and its way more intuitive. For eg. cron is a mess, systemd timers share the unit config format which is way better and more scalable.
Do you honestly beloved thie mental gymnastics your getting into just to prove your point, go back to windows. Lol
Well done on using systemd how you wish, now move on and let others use it how they wish or remove it.
It’s not gymnastics, it’s years and years of init bullshit and fragmentation / lack of integration related issues that were solved by systemd.
Keep telling yourself that, meanwhile we’ll all see your obvious dislike of of general userland tools.
I don’t dislike them, I never disliked them… I simply came to like systemd’s efficiency more.
Yup, windows is calling you.
Bye
I would be interested in using a distro that uses only systemd for everything(preferably arch based). Is there such a distro? I know it can be done manually,but I lack the time or patience to do it at this time.
Debian isn’t that far from it right now.
TBH I like Debian, but am used to Arch and plasma. I like the fact that Debian sticks to default DEs with no customizations. If I ever get tired of Arch (probably not) Debian is next on the list.
The article you linked is really nifty! Are there any distros that are using all or nearly all of the features that systemd provides?
In Gentoo we can enable or disable most features via USE flag: https://packages.gentoo.org/packages/sys-apps/systemd
This enables the user to select how much (or little) of systemd is used on their system. It’s also one of the few distros that enables you to switch init systems on a running system if you really want to.
Yes, I wrote the article as a collections of thoughts and links of what I’ve learn about systemd over the years. The reality is that when Debian moved to systemd I wasn’t that happy but after learning all it can do and the way it works I see it was the best move.