Comparison of init systems
From Gentoo Wiki
This article compares and contrasts init systems. Some of the init systems compared below are available for Gentoo, while others (like launchd and SMF) are not.
Available software
Feature | Init system | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sysvinit | OpenRC | upstart | systemd | SMF | launchd | Epoch | finit | runit | s6 + s6-rc | 66 + 66-rc | BSD rc.d | dinit | |
Supported in Gentoo | partially (used by OpenRC) | Yes (default init) | No | Yes | No | No | Yes | No | Yes | No | No | No | No |
Package / Bug# | sys-apps/sysvinit | sys-apps/openrc | bug #498376 sys-apps/upstart in unity-gentoo overlay. |
sys-apps/systemd | - | - | sys-apps/epoch | - | sys-process/runit | sys-apps/s6 + sys-apps/s6-rc | - | - | - |
Supported platforms | Linux / BSD | Linux + BSD | Linux | Linux | Solaris | MacOSX | Linux | Linux | Linux / BSD / MacOSX | Linux / BSD / MacOSX | Linux | BSD | Linux / BSD / MacOSX |
Main coding language | C | POSIX shell (+ C) | C | C | C | C | C | C | C | C | C | POSIX shell (+ C) | C++ |
Main dependencies | - | init (sysv or BSD) | D-Bus | D-Bus | init(sysv?) | - | libc, /bin/sh | ? | - | skalibs, execline | s6, s6-rc | rcorder | - |
Init script/service format | single config file | shell scripts | config files + shell fragments | config files (ini) | XML (+ shell scripts) | plist | multiple or single .conf | multiple or single .conf | shell scripts | execline or shell scripts | config files + execline fragments | shell scripts | config files |
Per-service configuration | No | Yes (conf.d) | With in-job mechanisms (normal exit, respawn) | Yes | Yes (service instances) | ? | Yes (v1.1+) | ? | No | No | Yes | No | Yes |
Running as a daemon | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (invoked) | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (sys-apps/s6-linux-init) | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) |
Cross-service dependencies/events | No | Yes | Yes | Yes | Yes | No | Yes (basic support, v1.3+) | ? | Yes | Yes | Yes | Yes | Yes |
Parallel service startup | Yes | Yes (optional) | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes |
Keeping daemons alive | Yes | Yes (optional v0.21+ via supervise-daemon) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Preferred service file supplier | n/a | Gentoo | Ubuntu | upstream | Solaris | MacOSX | n/a | n/a | Void Linux | Artix Linux | Obarun | NetBSD, FreeBSD, OpenBSD | n/a |
License | GPL v2+ | 2-cl. BSD | GPL v2 | LGPL v2.1+ | ? | Apache License 2.0 | Unlicense | MIT | BSD | ISC | ISC | BSD | Apache License 2.0 |
Supported services (in Gentoo)
Feature | OpenRC | systemd |
---|---|---|
Filesystem mounting | One script per group (root, local, network, swap, etc.). | Two units per mount point (fsck + mount), runtime-generated with dependencies. |
getty (terminal prompts) | Started through /etc/inittab or via agetty script | One unit per console, instantiated from template on-demand. |
Networking setup | Several options like dhcpcd[1][2], netifrc, iwd, or NetworkManager.[3] | Integrated (systemd-networkd), or using any of the external options mentioned prior. |
X11 Display Manager setup | Single service for all (required to auto-restart). | Separate Display Manager units. |
See also
- Runit — lightweight process supervision suite, originally inspired by daemontools-inspired that offers fast and reliable service management.
- S6 and s6-rc-based init system — an init system built using components from the s6, s6-rc and s6-linux-init packages
- OpenRC — a dependency-based init system for Unix-like systems that maintains compatibility with the system-provided init system (see the openrc-init sub-article).
- User:AdibSaad/66
External resources
- s6 - Forum thread
- Forum thread
- openrc-init
- GNU shepherd - service manager for the GNU OS.
- [1] - Original maintainer of dinit
- 66tools-overlay
- Original maintainer of 66tools-overlay
- Original maintainer of dinit