Use systemd if you want. It's not perfect, but nothing is. There are certainly good reasons to use systemd, including, but not limited to, that it's the default on most distros and you don't want to mess with init systems. My only complaint is that too much software and documentation is written with the expectation that you have systemd for no good reason, which makes it harder to leave, which makes more people stick with it, which is an excuse to neglect support for other init systems even more.
Here is an alternative Piped link(s):
https://piped.video/thOifuHs6eY
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I'm open-source; check me out at GitHub.
I'm not sure if this counts as reasoning, more like they just feed each other, with all starting from the original lack of documentation
That just sounds like a reason to not bother supporting Linux, when Windows is so much more popular
Yeah. That was my point. It's a self fulfilling cycle of people using it because it's all that's supported, and it being all that's supported because people use it. I think that is a problem. That's the same reason most software is for Windows. I don't think that's a good reason.
My question was just curiosity. If there's a good reason to switch to something else, I'd like to know, you know?
You get a lot more transparency with the other init systems. Systemd is a big system that does lots of things and it's not always possible to see everything it's doing, because it's doing a lot.
It also likes to hide things behind port redirections and binary storage of things that have always been text before so you pretty much have to use their tools to even read them
I can actually understand what's going on with other init systems. They're basically just a list of stuff that gets run before you even log in. I do not understand everything that systemd does. I like understanding what my computer is doing. Most people don't care about that, and there's nothing wrong with that, but systemd is not what I want. I feel forced into using it anyway though, because it can be a lot of work to avoid it, and there's no reason for that beyond the fact that not enough people care.
I get it. I'm in a small niche within a small niche. Nobody owes me an easy alternative to systemd. I'd still like one though.
Exactly. Other systems are clearly doing one thing: init. Systemd wants to do everything
Agreed. Was just looking at Podman's documentation the other day, and even though it'll run on distributions without systemd, for a second I thought cgroups might not even work without systemd. Glad that's not the case though, but I'm predicting a few problems down the road simply because I plan to use Alpine.
If you try to switch a distro that's already using Systemd to some other init system, you'll have so many broken things to fix!
I was just trying to make fun of how hard it is to replace Systemd. I am still gonna make the switch when I get some free time.
Debian lets you switch and AFAIK it mostly works fine. They provide both sysvinit and runit as alternatives. Packages are only required to provide systemd units now, however a lot of core packages still provide sysvinit scripts, and Debian provides a package orphan-sysvinit-scripts
that contains all the legacy sysvinit scripts that package maintianers have chosen to remove from their packages.
That's just in the official repository, of course. Third-party repos can do whatever they want.
None of the others are as deeply integrated into everything as systemd, they pretty much just handle starting things up so dropping in a replacement should be fairly straightforward. At least, it was until everything switched to systemd. Which is probably my biggest issue with it: that it integrates to the point you can't replace it anymore.
Honestly I don't know. I just know that desktop environments and a lot of other packages have hard dependencies on Systemd, at least on Arch and Debian based systems. Those packages include: base, flatpak, polkit, xdg-desktop-portals, and vulkan-intel. So yeah, it's nearly impossible to not break anything.
If you actually want a reason, then most people experience faster boot up times using runit instead of Systemd. I haven't tried it yet though.
maybe if you ran systemd you wouldn't have to boot up so often that actual boot times mattered that much.
But then it wouldn't fit the "systemd = devil" narrative if it was actually tested and found out to be false lol
I think it would not actually be easy to test this. The massive combinations of hardware and software configurations in use out in the world make it nearly impossible to conclusively say one way or the other.
For instance consider the hypothetical of a service with a bug that increases its startup in certain circumstances. If Systemd triggered this bug and OpenRC didn't because of some default setting in each, perhaps a timeout setting, would you say OpenRC is conclusively better at start up time? Not really, they just got lucky that their default bypassed someone elses bug. Just off the top of my head other things that would probably cause hell in comparisons are disk access speeds, RAM bottlenecks, network load, CPU and GPU temp and performance etc.
You can perhaps test for specific use cases and sets of services, but I think this is more useful for improving each init system than it is as a comparison between them.
Is boot time that much of an issue besides for arbitrary competitive reasons? I haven’t tried any optimizations and boot time on my headless server is less than two seconds.
It comes in handy for people who wants to run Linux on their notebook without being an engineer and look at Mac users with envy because of their "ready to work" time on their macbooks of 1-2 seconds after they open the lid.
On a server, it solves nothing.
Fun. You can dick around with your init scripts without having to worry about the right triggers or spawn classes or anything. Your system is hackable with bash. Systemd: here are a list of approved keywords, don't insert that there, why are using cron when you can use me?
Systemd, as a replacement init system, is fine-ish. It's sometimes slow and when it decides a service is lost there's not much to do aside from killing the thing and restarting it.
Systemd, the full blown ecosystem that wants to replace literally everything by systemd-thesamethingasbeforebutfromscratch
however, invites scepticism, especially when there are no particular flaws in the existing versions of things. DNS resolution, DHCP clients, NTP sync, etc. worked perfectly well.
From reading all of these comments, I think I have to agree. It seems like systemd as "the tool" is ok (I know there's some argument there too), but systemd as the project and ecosystem seems to go a bit against the soul of GNU and Unix.
"building codes."
It's like the rules systemd breaks except more noticeable when people have fucked around and now find out.
Perhaps the most asinine reason I can give, I really like the color scheme and log design used in OpenRC, makes for a very nice init scroll of text
Easy:
Less Code in Kernelspace means safer OS
I want a Mikrokernel Linux. Maybe RedoxOS will be suitable.
There's a lot of improvements with Plasma 6 and NVIDIA 545 on my RTX 3060 Ti, so that's something to look forward to.
It's getting better for sure, but there are still a lot of issues for me (Plasma 5, Nvidia 545). I think I might stick with it for now until I run into some major dealbreaker for me. Right now I can only game without glitches if I limit my monitors refresh rate to 60hz and even then you will run into issues.
While you blissfully ignore it, systemd is planning the downfall of humanity. Don’t fall for its lies.
systemd isn't perfect, but it's definitely a net plus for me when compared with older init system. In case anyone's interested, this talk summarizes the key points pretty well: https://www.youtube.com/watch?v=o_AIw9bGogo
This was an excellent listen, thank you for the link. I had no idea what was involved in it when I started, nor the roles of initd and launchd before it and what systemd was trying to replace.
The funny thing is that the guy giving the talk, Benno Rice, is primarily FreeBSD/openRC and not Linux, so he seemed fairly agnostic in presenting the various sides, not just from Unix and then Linux but also from the Apple viewpoint, who have also been playing a kind of parallel but separate role in this.
Very cool. Not a beginner level talk, definitely, but there was nothing I couldn't figure out coming from Windows/Mac tech. Really informative, thank you again.
Here is an alternative Piped link(s):
https://www.piped.video/watch?v=o_AIw9bGogo
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I'm open-source; check me out at GitHub.
I'm from the era of untangling hacky init scripts from every flavour of Linux to get something to work or add something new. Systemd was like coming up for air.
Oversimplified: It's the service that handles starting and stopping of other services, including starting them in the right order after boot. Many people hate it because of astrology and supersticion. Allegedly it's "bloated". But still it has become the standard on many (most?) distros, effectively replacing init.
I like init. It's simple. I like systemd as well. It's convenient. Beyond that i don't have very strong feelings on the matter.
Also, see important answer by topinambour-rex.
I think the arguments against the "bloat" are not towards systemd as an init system, but rather are because systemd does so many things other than being an init system. I also don't mind systemd, but I absolutely hate systemd-resolved
. I do not want my init system to proxy DNS queries by setting my resolv.conf to 127.0.0.53.
Just write systemd-
and press tab, that's "the bloat". I'm not saying that the systemd devs should not develop any new tools, but why put them all inside one software package? systemd-homed
is cool, but useless for 99% of users. Same with enrolling FIDO2 tokens in a LUKS2 volume with systemd-cryptenroll
. Far from useless or "bad", but still bloat for an init system.
Now that you mention it, I find systemd messing with my DNS settings incredibly annoying as well, so I can't help but agree on that point. At this production system at work, when troubleshooting, I often need to alter DNS between local, local (in chroot), some other server in the same cluster, and a public one. This is done across several service restarts and the occasional reboot. Not being able to trust that resolv.conf remains as I left it is frustrating.
On the newest version of our production image, systemd-resolvd is disabled.
I am not interested in being preached at unless you have a workable alternative and a good reason why should I switch over.
I just use systemctl because I know how to use it and know all the ins and outs of any bullshit I might encounter. No way I'm switching. I like not being stumped on issues I can't fix for weeks.
As an OpenRC user, Systemd is fine. I prefer openRC but I have systemd on my server and all its LXC containers and I have had no issues with it.
If you think the init wars are stupid, take a look at the FSF people's (attempted) war against Libreboot and their absolute humiliation by the project leader..
To be fair, while it's the Libreboot creator's project and they can do whatever they want with it, I can see why people are upset that Libreboot has had the "Libre" in it's name seemingly neglected.
The FSF is an ideological organisation. It's important that they exist. It's also important that pure free software exists. Pragmatism is also important, but without any purity, the "extreme" of software freedom gets watered down, and so the window of an "acceptable" amount of proprietary-ness shifts as a new, less hardline "extreme" takes it's place, if that makes sense. We should be striving for full software freedom, even if it's currently just a dream.
Libreboot was a pure libre software project. Now it isn't. Originally, a fork called osboot was created with the new blob reduction policy. That was fine, because it was a different name that didn't mislead (also because nobody knew osboot as the fully free BIOS replacement). Then that policy became Libreboot policy. Libreboot is no longer fully libre, despite it having been exactly that for it's whole life. It had an established name as the fully free BIOS replacement. It was known for that. Hence the upset.
Also, I see Canoeboot as a success. Rowe seems to be doing it out of spite, but it's achieved what the GNU project wants. It has successfully pushed Rowe to at least provide some sort of fully free release again.
I agree with your point on the necessity of FSF and pure free software. Your comment seems to describe pretty well the Overton Window
Wtf, I didn't know that Libreboot wasn't fully libre any more. I agree with the FSF's ideology here. The only reason to run Libreboot over Coreboot was 100% FOSS, and if that's not the case, then there is no point to it anymore.
Thanks for mentioning the other projects, I'll take a look
The point isn't just pragmatism. The point is that you're running closed source software either way. Even ideologically, running out of date closed source software because it's built into the chip isn't actually any better than running a current version of the same software from a drive. Maybe that distinction made sense in the 90s when mircocode updates weren't a thing most people dealt with, although honestly even back then it was a little weird. Now it's complete garbage. The FSF is an important organization, which makes it all the more important to call them out when they're wasting time and money on stupid nonsense.
Yeah, I wish someone released software to my exact requirements out of spite. They can release it out of race hate if they like
Here is an alternative Piped link(s):
their absolute humiliation by the project leader.
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I'm open-source; check me out at GitHub.
I just use whatever that does the job. Sometimes I switch to systemd free distros just to know what it's like (currently checking out dinit version of Artix)
I think most of the discrimination arises from a way of thinking which puts minimalism, simplicity and speed as the first priority and starts a unhealthy obsession over it. Sometimes keeping things too minimal can require more work than doing the actual work. This can also be seen in people who rave about WMs vs DEs and Wayland vs X.
Oh and I use XFCE btw. I feel like that's the DE which gives me enough control over everything while not bombarding me with a truck ton of settings. I started using DEs again because I was spending all my time ricing away with window managers (and none of my rices were not even that good).
I sure love journalctl -u
taking five second to give me ten lines of logs. Which I have to use because older, more robust services got replaced by default and the replacements got tightly integrated into everything else making it a pain to switch back, AND these replacement exhibits all the flaws that were fixed in older solutions.
Granted, this will only improve going forward, but why reinvent everything just to put systemd-
in front of the name.
That's actually a fair point, though I still think systemd does it in a way that's both too obfuscated and too proprietary, which preferences tying everything to itself rather than being able to work alongside and integrate smoothly with other tools that already exist.
It feels a bit like change for change sake at times... I know there are underlying reasons, but it breaks too many of the core philosophies of *NIX for my taste
I love being bombarded by a truck ton of settings, that's why I've been exclusively on KDE for years. Settings are awesome!
You do you. No offence to KDE, I just prefer gtk over qt. Xfce has been my fallback desktop for a long time. So maybe I got attached to it.
At the level I care about, which is "I want this daemon to start when I boot up the computer", systemd is much better. I can write a ~5 line unit file that will do exactly that, and I'll be done.
With init, I needed to copy-paste a 50-line shell script that I don't really understand except that a lot of it seemed to be concerned with pid files. Honestly, I fail to see how that's better...
The only arguments against I have seen so for is systemd does a lot more than just handing system startup (systemd-resolved
is one such example) and files that was previously stored as text now require systemd's own tool to read (journalctl
?).
So not the actual startup function, just everything else.
Mmm I have a general dislike of systemd because it doesn't adhere to the "do one thing and do it well" approach of traditional Unix systems.
It's a big old opaque blob of software components that work nicely together but don't play well with others, basically.
Edit: but it solved a particular set of problems in serverspace and it's bled over to the consumer Linux side of things and generally I'm ok with it if it simplifies things for people. I just don't want a monoculture to spring up and take root across all of Linux as monocultures aren't great for innovation or security.
Based on the video someone posted, it's not very portable either.
I feel that little part of my brain that wants to add yet another standard itching. Easily starting something at boot is good, but I don't see why that has to come with loss of modularity.
Afaik they don't care about being portable to instead focus as much as possible on being fast and whatever
Heresy!
Let me tell you for the next six hours why XMonad is the only way to go.
... And if you want Wayland you can write it yourself
I see way more posts that are pro-systemd than anti these days, so I think you might be tilting at windmills a bit.
I would love to think about systemd less, but I've worked with it professionally since a year or so before Debian switched while I was an intern working in embedded. I got to see the flame wars and shaped my opinion of systemd by wrestling with its growing pains. Writing your own service files and working with DBus was ass back then, and while it has gotten better, my patience with it has diminished. In the end the frustration was enough that after I ditched windows, systemd was the next to go.
That would be the end of it, but other programs keep growing annoying systemd dependencies or their projects get swallowed up by the systemd ecosystem entirely. I was so excited at the start to work with the parallel execution and dependency management, but the number of times systemd broke something, swallowed up the output, and then corrupted its own journal and lost the logs really turned me against it.
I don't know, I'm not a power-user so systemd is just a thing in the background, I don't have much opinions over it.
I think you might be tilting at windmills a bit.
No systemd love or hate for me, as for the meme, I respect both opinions (I'm still learning btw) but don't particularly like proselitjzers. Sharing an opinion and experiences (like you did) is fine and often informative, what I don't like are people (expecially on lower-quality places like 4chan) spamming stuff like "systemd is the devil and killed my child" or "systemd weights more than the Linux kernel" I guess I need to make up my mind, haven't interacted with the OS at a low enough level yet.
I understand what you mean. If you are on the fence and not super interested in init systems, you can pretty easily get by with systemd without thinking about it. Most desktop environments have tools to manage user services in easy GUI's, and you can find guides for anything more advanced you want to accomplish with them usually.
If you want to dive in though, systemd is a great init system to learn. Nowadays learning systemd is a lot less of a moving target, and it's in use virtually everywhere so the knowledge is valuable. It's also fairly well documented at this point, which is great for learning how it works.
My personal advice if you want to go that path is to just open up some service files. There are lots of interesting examples in /lib/systemd/system
Systemd service files are just plain text, and pretty straightforward to read. Its divided into nice sections, and naming is pretty straightforward (Or the systemd brainworms are really in deep). Look for names you recognize or programs you use. Especially ones you are familiar with on the command line. I don't recommend changing them to start, especially in the system directory, just open a couple and you should quickly start seeing the connections between what they are trying to accomplish and whats in each file. Then if you see anything you don't understand or peaks your curiousity check the documentation. Once you're ready try writing one of your own for something in the usr service directory. No pressure though, its not necessarily essential knowledge