For a while I had an Asus laptop, and no matter what, it seemed to not want to work properly with systemd-based distros. It would hang on-boot about 95+% of the time, I'd hard shut-off, restart, repeat.
On a whim, I tried Void Linux (runit) on it. And for whatever reason, it worked.
The cool thing with Gentoo is that you can just decide one day to switch to systemd and it's about as easy as changing your profile and updating your system (and maybe recompiling your kernel)
You have to compile everything though, even from a stage 2 installation. I haven't attempted one for like 15 years, but I imagine it's still not quick.
I use distros with systemd but damn, pretty soon it's not gnu/linux anymore, it'll be systemd/linux. systemd already manages services, bootloader, dns and networking. Maybe they'll replace coreutils next and the transition is completed.
SysV init works more reliably, is smaller, does just one job and is much, much better architected.
SystemD tends to fail if you do anything out of the ordinary, is massively bloated, has it's claws into far too many parts of the system, is IMHO poorly architected, the many of the individual components are poorly designed and the whole thing is a huge, and utterly unnecessary, attack surface.
SystemD is probably adaquate if you just want to use your machine in the most basic way, but as soon as you try to do anything beyond that you start running into the rough edges and bad design decisions that it's plagued with.
Could you elaborate on this? As someone who uses SystemD extensively on workstations and servers for spawning and managing both system-level and user-level services, I do find minimal issues overall with SystemD minus some certain functionalities such as socket spawning/respawning.
Of course some of default SystemD's housekeeping services do suck and I replace them with others. I would like to see the ability to just remove those services outright from my systems as separate packages since they do remain useless, but it isn't that big of an issue.
I also use systemd a lot and it baffles me people can claim sysvinit was more reliable with a straight face.
Half the time I restarted MySQL in the sysvinit days (pre-upstart as well), it would fail to stop it then try to start a new instance of it with the old one still running and the only way to fix it was to manually stop the other instance.
Process management is like the one thing systemd really does well thanks to cgroups, it's impossible for it to lose track of processes because the process lied about its pidfile.
SysV init does one job, it runs a set of scripts in an admin defined order, the init portion of SystemD attempts to solve a dependency graph at boot time and execute the startup scripts (units) in the order it devines from that. The big problems I've had around that have been services silently failing to start because it failed to resolve the ordering, and the difficulty of inserting a new unit into the ordering in a specific place. It's doable if there happens to be a target at the point you want, but if not you can't really do it as the existing, and any new, services all sequenced on the existing target. With SysV, of course, setting the service start order is trivial.
The thing is, if SystemD was just an init system it wouldn't be as bad, and has some useful ideas, but it tries to replace huge swathes of the system. As you say, some, and I'd say most, of the default housekeeping services suck, and you need to replace them. Unfortunately this then breaks the much vaunted integration of those services. Leaving them on the system isn't a great plan as it just leaves the extra attack surface. So now you need to contemplate repackaging it to exclude the stuff you don't need, which is a huge pain, and makes keeping up-to-date a big job. You've also got to worry about breaking dependencies from other packages.
Probably the biggest issue though is the huge attack surface SystemD exposes on your system. We've just seen an example of how that can be taken advantage of, with malware in a library way down the dependency chain from the system library that gets jammed into all sorts of things. I understand there is an effort underway to reduce those dependencies, but it'll always be worse than simply not doing that in the first place.
The architectural and design issues are to do with the way the different parts are so tightly linked when they have no rational reason for being, the level of complexity introduced to core services and the incoherence of some of the choices around behavior. A recent bugbear was the automounter. It works most of the time, but if a mount unit fails it just gives access to the mountpoint, when by definition you obviously and explicitly didn't want that. It also has a nasty habit of marking the unit failed, so future attempts also get bypassed until you reset it or have a recovery unit to do that.
Anyway this turned into a wall of text, and its late, so I'm going to stop there, I hope it's reasonable coherent.
Systemd has a larger attack surface area since it touches more things, even though you can assign user accounts and such. Just the simple fact that it does more things than simply executing a shell script (like everything before systemd does) makes it more vulnerable.
My initial learning was in 2004 with Ubuntu, so Upstart and I also messed with FreeBSD, so I was familiar with the RC system. Systemd took me a bit to wrap my head around, and I don't mind it. It's good to know both.
I can actually configure and understand everything the UNIX way, which is actually important to me, because I do some wacky shit with my system + I'm a developer, I physically need to understand my system so I can debug it when it starts to eat shit
Although, seriously, if you're not a developer and don't intend on doing something specific with your system, just pick a mainstream distro and roll. I install Mint MATE or Ubuntu on my secondary systems too.
Hate to be that guy, but all those articles are 5 years or older. Have people had more recent complaints about systemd or did that movement that complains about it kinda move on?
At this point i don't care anymore if my system has systemd or whatever, as long it's works i don't have complaint
Maybe back when I'm still young i will agree with majority linux enthusiasm that systemd is bloat, GUI is bloat, or whatever. But now as long it's work & can do job properly i don't care or even care
Jokes aside, GUI really is bloat. Especially when it's made by a corporate company with absolute dogshit development practices.
On a more serious note, systemd is bloat. With all of you new kids coming over to this side, start with the right way: the runit way. Also compile Gentoo whilst you're at it.
Obligatory /s if anyone is offended, you bunch of snowflakes
I'm not an anti-systemd extremist. I use Void because it is a simple distro that doesn't break as often as Arch does, while also being very up-to-date.
I do have some things I dislike about systemd though which is why I will continue avoiding it in the future.
It doesn't follow the Unix Philosophy. This is a big problem for me, I want to be able to switch out different parts of my system as I please. Systemd is a collection of projects that are all so deeply integrated that you can't use them without also running the Systemd init system. And now Desktop Environments are starting to depend on Logind for example and there's no alternative for non-systemd users. (Except Elogind but that's just Logind ripped out of SystemD)
It's bloated and has many features I don't use. I just need an init system to start all my services at boot and restart them if they fail. Nothing more
Also using a Distro without Systemd is not really that hard
SystemD just isn't necessary for every Linux install.
Linux has thousands of uses that aren't "running on bare metal on my customized gaming rig at my computer desk to play steam games and pretend to look like Mr. Robot"
I like being able to see my logs without waiting 20 minutes, knowing who started what without playing cat and mouse with random processes and being able to change something without going through multiple levels of merged configurations files from three different sources.
I also enjoy tools that were developed over decades and not rewritten from scratch reintroducing long-solved issues.
Aren't you talking about systemd-boot which is optional anyway? systemd covers the Linux init process which should have nothing to do with dual booting, no?
i was forced to use systemd professionally when it was buggy and broke all the time in its first releases in the red hat eco system; so it's fair that some people would hold grudges against it.
Sysvinit on gentoo here. Its so simple and clean, all can be managed and hacked via bash scripts.
I see no benefits in my use cases for systemd. Boot speed is unneeded, service auto-restart is done via Monit, anything else I don't need.
This is true for all my server -and- all my workstations and laptops as well.
Systemd never solved a problem needed to be solved to start with.
Now that it also does coffee and cream for you, i start seeing some benefits like auto-restart services. Was it worthwhile? Meh, dunno.
At first it seemed another case of "I am too young and I want stuff done my way just because" and redhat shoved it down everybody throath to gain marked dominance. That they did.
At least now systemd looks like mature and finally start making sense. I was even contemplating testing a migration on one server.
Then I remembered, I like freedom of choice and keeping up being an old fart, so I didn't (yet).
(No, for Wayland and network manager I think they are both welcome and needed from the start).
It didn't help the main Dev suckass attitude, that didn't made friends.
The kernel is already monolithic enough without adding another piece of monolithic software that everything depends on. IMO the Unix philosophy means we should have interchangeable parts.
There's some amount of user error here but when I did use systemd I had a hard time turning off services I didn't want because they were in the wants-to-have entry of other services. It's like a separate config area to maintain with a specific maintenance tool software instead of flat files.
I'm unfortunately using distros with systemd now tho.
System-d has better logging. Until you have something that needs to really really log. You can argue that if you have something that's that dependent on logging it shouldn't be logging through the console but it's worked fine for decades. Auto pruning of logs isn't necessarily ideal. Getting console logs and assist logs as a pain in the ass.
Same goes for service dependencies we had this sorted it was answered via run levels and naming. It wasn't necessarily the most elegant solution but it was simple and there was very little to go wrong.
The tools to manage the services and logs are needlessly complicated. Service start, service stop, service status, service log, service enable, service disable. And I shouldn't have to reload the Daemon every time I make a change.
This isn't to say that it's all bad. It's flexible, and for most workflows, it's very automated and very light touch. The other pruning on the log file says probably saved a lot of downtime, a whole lot of downtime.
It's really well suited to desktop.
Service creation is somewhat easier.
Dependencies are more flexible than run levels.
To be honest I wouldn't go out of my way to run in a non-system distro but I would feel a little sigh of relief if something I was screwing with was still init.d
Because I left Windows precisely to avoid the kind of shittery that systemd is doing.
It's absolutely no coincidence that the people who have developed the stuff that's brought the most degradation to Linux - systemd, PulseAudio, Gnome's "user has no right to themes" attitude - all come from a Microsoft background or explicitly work for Microsoft.
I'd have far less of a problem if systemd was split into more practical, actually independent things that actually worked and distros didn't buy their snake oil so easily. But for the time being, to me, the systemd experience is pretty much like the PulseAudio experience, what with the whole "waiting 120 seconds for a network interface to activate that it's not going to because it's the damn ethernet port and I'm on the road so the cable is not connected, stupid letter-potter dipshit".