Comparison of init systems
From Gentoo Wiki
This article compares and contrasts init systems for Unix(like) OSs , irrespective of whether they are available for Gentoo or not. See the init system ( meta ) article for init system software available in Gentoo.
Init system comparison table
| Feature | Init system | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sysvinit | OpenRC | 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) | Yes | No | No | Yes | No | Yes | No | No | No | No | |
| Package / Bug# | sys-apps/sysvinit | sys-apps/openrc | sys-apps/systemd | - | - | sys-apps/epoch | - | sys-process/runit | sys-apps/s6 + sys-apps/s6-rc | - | - | - | |
| Supported platforms | Linux / BSD | Linux + BSD | Linux | Solaris | Darwin | Linux | Linux | Linux / BSD / Darwin | Linux / BSD / Darwin | Linux | BSD | Linux / BSD / Darwin | |
| Main coding language | C | POSIX shell (+ C) | C | C | C | C | C | C | C | C | POSIX shell (+ C) | C++ | |
| Main dependencies | - | init (sysv or BSD) | D-Bus | init(sysv?) | - | libc, /bin/sh | ? | - | skalibs, execline | s6, s6-rc | rcorder | - | |
| Init script/service format | single config file | shell scripts | 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) | 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 (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 | No | Yes (basic support, v1.3+) | ? | Yes | Yes | Yes | Yes | Yes | |
| Parallel service startup | Yes | Yes (optional) | 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 | |
| Preferred service file supplier | n/a | Gentoo | upstream | Solaris | MacOS | n/a | n/a | Void Linux | Artix Linux | Obarun | NetBSD, FreeBSD, OpenBSD | Artix Linux, Chimera Linux | |
| License | GPL v2+ | 2-cl. BSD | LGPL v2.1+ | ? | Apache License 2.0 | Unlicense | MIT | BSD | ISC | ISC | BSD | Apache License 2.0 | |
OpenRC compared to systemd
| 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
- 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 ).
- 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
- systemd — a modern SysV-style init and rc replacement for Linux systems.
- User:AdibSaad/66 — 66 + 66-rc guide. Warning: status of instructions unknown.
External resources
- s6 - Forum thread
- Forum thread
- openrc-init
- GNU shepherd - service manager for the GNU OS.
- Finit - Fast init for Linux systems.
- 66tools-overlay
- Dinit
- " Comparison of Dinit with other supervision / init systems " - by the developer of Dinit