Comparison of init systems
This article [[Article description::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 | BSD rc.d | |
Supported in Gentoo | partially (used by OpenRC) | Yes (default init) | No | Yes | No | No | Yes | No | Yes | 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 | - |
Supported platforms | Linux / BSD | Linux + BSD | Linux | Linux | Solaris | MacOSX | Linux | Linux | Linux / BSD / MacOSX | BSD |
Main coding language | C | POSIX shell (+ C) | C | C | C | C | C | C | C | POSIX shell (+ C) |
Main dependencies | - | init (sysv or BSD) | D-Bus | D-Bus | init(sysv?) | - | libc, /bin/sh | ? | - | 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 | shell scripts |
Per-service configuration | No | Yes (conf.d) | With in-job mechanisms (normal exit, respawn) | Yes | Yes (service instances) | ? | Yes (v1.1+) | ? | No | No |
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 (PID 1) |
Cross-service dependencies/events | No | Yes | Yes | Yes | Yes | No | Yes (basic support, v1.3+) | ? | Yes | Yes |
Parallel service startup | Yes | Yes (optional) | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
Keeping daemons alive | Yes | Yes (optional v0.21+ via supervise-daemon) | 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 | NetBSD, FreeBSD, OpenBSD |
License | GPL v2+ | 2-cl. BSD | GPL v2 | LGPL v2.1+ | ? | Apache License 2.0 | Unlicense | MIT | BSD | BSD |
Supported services (in Gentoo)
Feature | OpenRC | systemd |
---|---|---|
Filesystem mounting | One script per group (root, local, network, swap...). | Two units per mountpoint (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[1] like dhcpcd[2][3], netifrc[4], iwd [5], or NetworkManager.[6][7] | External (NetworkManager, networkd, DHCP daemons). |
X11 Display Manager setup | Single service for all (required to auto-restart). | Separate DM units. |
See also
- Runit — a daemontools-inspired process supervision suite that also provides a program suitable for running as process 1.
- S6 and s6-rc-based init system — an init system built using components from the s6, s6-rc and s6-linux-init packages
- Nosh — a multi-purpose init and process supervision software package made by Jonathan de Boyne Pollard.
- OpenRC — a dependency-based init system that maintains compatibility with the system provided init program (see the init section).
External resources
References
This article is issued from Gentoo. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.