SystemD is blamed for long boot times and being heavy and bloated on resources. I tried OpenRC and Runit on real hardware (Ryzen 5000-series laptop) for week each and saw only 1 second faster boot time.

I’m old enough to remember plymouth.service (graphical image) being the most slowest service on boot in Ubuntu 16.04 and 18.04. But I don’t see that as an issue anymore. I don’t have a graphical systemD boot on my Arch but I installed Fedora Sericea and it actually boots faster than my Arch despite the plymouth (or whatever they call it nowadays).

My 2 questions:

  1. Is the current SystemD rant derived from years ago (while they’ve improved a lot)?
  2. Should Linux community rant about bigger problems such as Wayland related things not ready for current needs of normies?
  • !ozoned@lemmy.world@beehaw.org
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    Ok, so I have a very unique background in systemd. I worked at Red Hat supporting it basically as the primary support and I’ve worked with the developers of systemd at Red Hat directly. I no longer work there.

    So first off, it’s “systemd” all lower case. I don’t care, but for some reason Lennart Pottering (creator) does.

    systemd was a MASSIVE change. And Red Hat did a TERRIBLE job relaying it. To the point where I’m still trying to get my company to understand that it can NOT be treated like the old init systems. You can NOT just drop an init script in place and walk away and hope it works. Because a LOT of times it doesn’t. Due to forks, switch users, etc.

    systemd is NOT an init system. RHEL 5 and older had sysvinit as it’s init systemd. RHEL 6 had UpStart as it’s init system and looked exactly like sysvinit that no one even noticed. systemd again is NOT an init system. Init system is 1 part of systemd. systemd does a lot of cool things. It bundles applications together, it manages those applications and can restart them or kill children, it can do resource constraints, it separates out users from the system, and lots more.

    Because it is not an init system there is a LOT LOT LOT of bad recommendations out on the internet where someone has X problem and person suggests Y and IT WORKS! … except it doesn’t REALLY work as far as systemd is concerned and you’ll hit other issues or your application takes longer to start or stop and people just blame systemd.

    It is systemd’s fault that it has done an ATROCIOUS job of helping people adapt. It’s a great example of RTFM. systemd’s man pages are INCREDIBLE and extensive, but when you drop so much knowledge it becomes more difficult to find what you want/need. systemd.index and systemd.directives are your best bet.

    So systemd does a lot of amazing things that sysvinit never attempted to do. It’s never attempted to explain anything it expects everyone just learn magically. it’s INCREDIBLY complex, but once you understand it’s basics you can more easily get an application running, but as soon as there’s a problem it’ll just break your brain.

    To give you an example, sshd’s old init script is like 250 lines of bash. systemd’s unit file comparative is like 12. Because systemd handles a LOT of what you manually had to handle before. BUT to get to that 12 you literally have to learn EVERYTHING new.

    There is no “is it good or bad” here really imo. It’s a completely different fundamental design. Red Hat made it for themselves. Other distros picked it up. It can be argued that lots of folks followed Debian and Debian had a few Red Hat board members that were pushing it. Whether they pushed it of their own accord or because they were with Red Hat I don’t have a clue.

    What I can say is at my current company they’re suffering from a LOT of systemd issues and they don’t even realize it. I’ve been working with Red Hat to try to get Insights to alert people to the failures and we’re making progress.

    To see if you have issues just to start run the two following commands:

    # systemctl list-units --failed
    # systemd-cgls
    

    If you have any units that are failed, investigate those. If you don’t need them, disable them. As for the systemd-cgls this shows HOW systemd is grouping things. ANY application that runs as a service (or daemon or application or runs in the background or however you wanna say it) should be under system.slice. ONLY humans logging into the system (meat bags NOT applications switching to users) should be in user.slice. A LOT of times what happens is an old init script is dropped in place, they start it, it has a switch user and systemd assumes it’s a user and puts it into user.slice. systemd does NOT treat anything in user.slice the same as in system.slice and this WILL eventually cause problems.

    So again, is it good or bad? Eh. It does a lot of cool things, but they did a MASSIVE disservice to ALL of us by just expecting to relearn absolutely EVERYTHING.

    • nyan@lemmy.cafe
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      sshd’s init script under OpenRC is 87 lines, of which around half are blanks, comments, closing braces, and other boilerplate. Granted, that still makes the real code maybe three times the size of your systemd unit file, but the difference isn’t as impressive as you’re making out.

      95% of people shouldn’t need to poke around in their init scripts or unit files anyway. If you actually need to do that, your use case is already somewhat unusual.

      • !ozoned@lemmy.world@beehaw.org
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        As an end user, unless you’re running a server, then no you shouldn’t have to mess with any of it.

        If you’re running a server or a sysadmin you absolutely 100% should be paying attention. Almost every single vendor I’ve seen selling their applications only have initscripts. Which then cause issues. I’ve gone to the vendors and told them and they’ve said go to Red Hat. Well Red Hat doesn’t support that vendor’s init scripts.

        Not naming an application, but it was from a BIG BLUE company and they said their only instructions are to call their script from the user. But it won’t remain running if you do that because systemd will close out the slice when the user logs out. SO it’s obvious they haven’t tried what they’re suggesting.

        And I’m not attempting to state that systemd is impressive in any way. systemd basically took what had been building over 40 years of init scripting and threw it out the window and said our way is better. I don’t think it is. I’m just saying, with a directive based unit file it’ll be simpler to parse than a bash script.

  • digdilem@feddit.uk
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    Nah, it’s fine. Boot times are considerably faster than sys.v in most cases, and it has a huge amount of functionality. Most people I work with have adopted it and much prefer it to the old init.d and sys.v systems.

    People’s problem with systemd (and there are fewer people strongly against it than before) seem to break down into two groups:

    1. They were happy with sys.v and didn’t like change. Some were unhappy with how distros adopted it. (The debian wars in particular were really quite vicious)

    2. It does too much. systemd is modular, but even so does break one of the core linux tenets - “do one thing well”. Despite the modularity, it’s easy to see it as monolithic.

    But regardless of feelings, systemd has achieved what it set out to do and is the defacto choice for the vast majority of distros, and they adopted it because it’s better. Nobody really cares if a user tries to make a point by not using it any more, they’re just isolating themselves. The battle was fought and systemd won it.

    • jarfil@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      “do one thing well”

      Arguably, Systemd does exactly that: orchestrate the parallel starting of services, and do it well.

      The problem with init.d and sys.v is they were not designed for multi-core systems where multiple services can start at once, and had no concept of which service depended on which, other than a lineal “this before that”. Over the years, they got extended with very dirty hacks and tons of support functions that were not consistent between distributions, and still barely functional.

      Systemd cleaned all of that up, added parallel starting taking into account service dependencies, which meant adding an enhanced journaling system to pull status responses from multiple services at once, same for pulling device updates, and security and isolation configs.

      It’s really the minimum that can be done (well) for a parallel start system.

    • Yozul@beehaw.org
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      1 year ago

      One of my biggest problems with critics of systemd is that a lot of the same people who make that second point also argue against wayland adoption when xorg does the exact same thing as systemd. It makes me feel like they’re just grumpy stubborn old Linux nerds from the 90s who just hate anything that’s not what they learned Linux with.

      Which is sad, because honestly I think it’s kind of not great that an unnecessarily massive project has gained such an overwhelming share of users when the vast majority of those users don’t need or use most of what it does. Yeah, the init systems from before systemd sucked, but modern alternatives like runit or openrc work really well. Unfortunately they get poorly supported because everyone just assumes you have systemd. I don’t like the lack of diversity. I think it’s a problem that any init system “won”.

      • taladar@sh.itjust.works
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Unfortunately they get poorly supported because everyone just assumes you have systemd.

        No, they get poorly supported because they were a pain to support even before systemd ever showed up. I for one was extremely tired of writing the same shit over and over again in every init script and then going through the tedious process of porting the script to every platform for minor idiosyncrasies of the various distros (start-stop-daemon available or not was one I remember, the general bash/GNU vs. BSD stuff you get with any script was another) from 10 year old RHEL to modern ones.

  • corsicanguppy@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago
    1. systemd hasn’t become a better project built by better, smarter people to deliver a better set of features. It’s still hot garbage.
    2. it’s okay to continue pointing out it’s hot garbage, in the hopes we can go forward or back or just get on something better/else (same thing).
  • gnumdk@lemmy.ml
    link
    fedilink
    arrow-up
    2
    arrow-down
    1
    ·
    1 year ago

    Just try to implement user session management on a non systemd distro…

    Systemd is way better than others init system. I’m using Alpine Linux on my phone and I really wait for a Fedora/Arch like PMOS project (it’s on the way)

  • lightrush@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago
    1. Is the current SystemD rant derived from years ago (while they’ve improved a lot)?

    No it’s almost always been derived from people’s behinds.

    1. Should Linux community rant about bigger problems such as Wayland related things not ready for current needs of normies?

    Yes.

    Systemd is spectacular in many ways. Every modern OS has a process management system that can handle dependencies, schedule, manage restarts via policy and a lot more. Systemd is pretty sophisticated on that front. I’ve been able to get it to manage countless services in many environments with great success and few lines of code.

  • bloodfart@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Not against systemd (although it’s bad and needs replacing), just against pottering.

  • ikidd@lemmy.world
    link
    fedilink
    arrow-up
    1
    arrow-down
    1
    ·
    1 year ago

    As a guy that’s been installing Linux since you had to compile network drivers and adjust the init scripts to use them; SystemD rocks.

  • nitrolife@rekabu.ru
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    As service manager systemd nice, but look all services:

    systemd + systemd/journal + systemd/Timers
    systemd-boot
    systemd-creds
    systemd-cryptenroll
    systemd-firstboot
    systemd-home
    systemd-logind
    systemd-networkd
    systemd-nspawn
    systemd-resolved
    systemd-stub
    systemd-sysusers
    systemd-timesyncd
    

    That’s look as overkill. I use only systemd, journald, systemd-boot, systemd-networkd, systemd-resolved and systemd-timesyncd, but that a lot systemd. Feel like system make monolith.

    systemd-nspawn for example. Systems manager for containers. Seriously. Why than exists? I don’t understand. Really, someone use that daemon?

    • highduc@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      I think that’s a bad argument. If you go out of your way to install and configure all of these, then yes, they exist and you can do that - but that doesn’t automatically mean they’re bad.

      But in most operating systems they’re not installed, not configured, and you’ll never have to deal with any of that.

      I actually use systemd-boot because it’s very easy to install and configure and systemd-resolved, but for a lot of those I haven’t even heard about.

      And furthermore even if more of them (I think it’s highly unlikely that any OS would use all of those services by default) were preinstalled, they’d only be an issue if they’d cause trouble. If your system is running systemd-whatever and it works well then what’s the issue? The name itself?

      • nitrolife@rekabu.ru
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        As I wrote below, the problem is that this does not comply with the principle of K.I.S.S. One application should solve one task and can be replaced. Even now it is quite difficult to remove systemd-logind, for example. Because, although these are different services, they have long merged into a huge tangle.

        I actually use systemd-boot because it’s very easy to install and configure and systemd-resolved, but for a lot of those I haven’t even heard about.

        you can use EFISTUB If you don’t have dual boot. This literally load kernel from UEFI. I don’t know more simple way. https://wiki.archlinux.org/title/EFISTUB

        • IDe@lemmy.one
          link
          fedilink
          English
          arrow-up
          0
          arrow-down
          1
          ·
          1 year ago

          does not comply with the principle of K.I.S.S. One application should solve one task and can be replaced

          That’s not KISS, but the UNIX principle. And even that part is wrong, as in traditional UNIXes applications were certainly not replaceable.

    • EddyBot@feddit.de
      link
      fedilink
      arrow-up
      0
      arrow-down
      1
      ·
      1 year ago

      Feel like system make monolith.

      you do know what the linux kernel is, right?
      Spoiler: It’s a monolithic kernel

      In the end your distro packager decided to not split systemd into different packages, I believe only Gentoo does actually guide you to this
      so you actually barking on the wrong tree

  • nyan@lemmy.cafe
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    Speaking as someone who uses OpenRC on all my machines . . . no, systemd is not necessarily slow, and personally I don’t care about the speed of my init system anyway. Thing is, systemd also has nothing that makes it more useful to me than OpenRC, so I have no incentive to change. Plus, I dislike the philosophy behind it, the bloat, and the obnoxious behaviour the project showed when interacting with others in its early days. I’m a splitter, not a lumper, and systemd’s attempts to absorb All The Things strike me as rather . . . Windows-like.

    So, in a technical sense I have no reason to believe that systemd is inferior to OpenRC + sysv, and it may be superior for some use cases which are not mine. I don’t spend a lot of time ranting about it, and I see no point in trying to convince people not to use it if it fits their needs. But I still won’t use it if I have another option.

    • chaorace@lemmy.sdf.org
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      1
      ·
      edit-2
      1 year ago

      I agree. SystemD is a great service daemon (or, sigh, unit daemon in the stupid parlance). I like unit file syntax and I like the ergonomics of systemctl. It’s solid and I appreciate the feeling of consistency that systemd lends to the otherwise chaotic landscape of Linux distrobutions.

      It’s for this reason that I’m willing to forgive SystemD overstepping the boundaries of services somewhat. System init/mounting? Sure, that’s a blurry line after all. Logging? Okay – it does make sense to provide a single reliable solution if the alternative is dealing with dozens of different implementations. Network resolution & session management? Fine, I’ll begrudgingly accept that it’s convenient to be able to treat logins/networking as psuedo-services for the sake of dependencies.

      If that’s as far as the scope crept, SystemD and I would be cool, but the so-called “component” list just keeps on going. SystemD has no business being a boot manager, nor a credential manager, nor a user manager, nor a container manager, nor an NTP client. I understand why they can’t deprecate most of this junk, but why can’t they just at least make this cruft optional to install?

  • eleitl@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    The problem of systemd is that it hasn’t been just a replacement of init as they initially claimed, and now deny they ever did. Things like Mono, Gnome and systemd are bad for the ecosystem long term.

    An init done by constructive people wouldn’t be a problem at all.

    • Fryboyter@discuss.tchncs.de
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      The problem of systemd is that it hasn’t been just a replacement of init as they initially claimed

      Apart from the PID 1 part of systemd, almost all tools are optional.

      Although I have a positive opinion about the systemd project, I used netctl instead of systemd-networkd for a long time without any problems. And even today I don’t use systemd-resolved because I use a combination of unbound and Pi-Hole in my private LAN. And so on.

      So you can’t say that the systemd project has replaced various solutions in such a way that you don’t have a choice anymore.