# Init systems

# Alternatives

Good alternatives to systemd

  • sysvinit - the original init
  • OpenRC - a dependency-based init system
  • s6 - a daemontools-inspired process supervisor
    • s6-linux-init - s6-based Linux init system
    • s6-rc - service manager
    • s6-overlay - integrates s6 with Docker images
    • 66-tools - a suite of s6 helpers made by the creators of the Obarun distribution
  • runit - a minimalistic daemontools-inspired process supervisor
  • Upstart - an init replacement for sysvinit made by Canonical
  • GNU Shepherd - init system and service manager made by GNU, intended for GNU/Hurd and GNU/Guix
  • Finit - Finit is an alternative to init system, originally reverse engineered from the EeePC fastinit
  • Hummingbird - hummingbird is an init system designed for speed. It can only start and stop the system.
  • cinit - cinit is a fast init system with dependency features and profile support.
  • initng - Initng is a faster and modern replacement for sysvinit, doing as much as possible asynchronously
  • dinit - Dinit is a service supervisor that focuses on portability, clean design, robustness, and usability.

# The bad

Why systemd sucks

  • It does not adhere to the Unix philosophy and attempts to handle everything (for example, DNS, bootloader, and networking).

  • Systemd was designed essentially on the presumption that nobody other than systemd would be using cgroups, and they even tried to lobby to make cgroups a private property of systemd in the kernel(Making the kernel only work with systemd) but that didn't work either. Systemd appropriates the cgroup tree, takes control of it, and completely messes with any other user of the cgroup tree. Systemd's use of cgroups for process tracking is a fundamentally broken concept; cgroups were never meant for this (making systemd by definition a "hack"), and it's a good way to screw up resource usage.

  • Systemd has a strong requirement on glibc for no apparent reason, limiting it to Glibc-based linux systems.

  • Systemd relies on DBus for IPC; however, as the term 'Desktop bus' says, DBus was never developed with this in mind, and it shows. DBus was not designed as a transport during early boot, but rather to support IPC within a single desktop session. This is why systemd wanted to promote kdbus so hard, as kdbus fixed several issues with DBus being used as IPC during early boot.

  • Systemd's security and general code quality methods are subpar; many security flaws appear in systemd as a result of its insistence on stuffing a lot of code into pid1, adding new bloat features ontop of thousands of lines of bloated code.

  • Systemd doesnt care about what maintainers want, by the creator of systemd source

# list

# Resources

  • suckless - "There is a menace which is spreading like a disease throughout the Linux world, it is called systemd."
  • darkedgy - "I am not sure I am such a big fan of reimplementing NetworkManager…"
  • nosystemd - "If this is the solution, I want my problem back."
  • ihatesystemd - "Some things about systemd aren't necessarily bad, they're just damned Ugly."
  • Systemd: broken by design - "systemd is broken by design"
  • Systemd: Harbinger of the Linux apocalypse - "It might not be the end of the world, but the design of systemd and the attitudes of its developers have been counterproductive"