Vergleich der Init-Systeme
Dieser Artikel vergleicht und kontrasiert Init-Systeme. Einige der unten verglichenen Init-Systeme sind für Gentoo verfügbar, während andere (wie launchd und SMF) es nicht sind.
Verfügbare Software
Funktion | Init-System | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
sysvinit | OpenRC | upstart | systemd | SMF | launchd | Epoch | finit | runit | s6 + s6-rc | BSD rc.d | |
In Gentoo unterstützt | teilweise (verwendet von OpenRC) | Yes (default init) | No | Yes | No | No | Yes | No | Yes | No | No |
Paket / Bug# | sys-apps/sysvinit | sys-apps/openrc | bug #498376 sys-apps/upstart im unity-gentoo overlay. |
sys-apps/systemd | - | - | sys-apps/epoch | - | sys-process/runit | sys-apps/s6 + sys-apps/s6-rc | - |
Unterstützte Plattformen | Linux / BSD | Linux + BSD | Linux | Linux | Solaris | MacOSX | Linux | Linux | Linux / BSD / MacOSX | Linux / BSD / MacOSX | BSD |
Hauptsächlich verwendete Programmiersprache | C | POSIX shell (+ C) | C | C | C | C | C | C | C | C | POSIX shell (+ C) |
Hauptabhängigkeiten | - | init (sysv or BSD) | D-Bus | D-Bus | init(sysv?) | - | libc, /bin/sh | ? | - | skalibs, execline | rcorder |
Init-Skript/Dienstformat | Einzelne Konfigurationsdatei | Shellskripte | Konfigurationsdateien + Shellfragmente | Konfigurationsdateien (ini) | XML (+ Shellskripte) | plist | Mehrere oder einzelne .conf-Datei(en) | Mehrere oder einzelne .conf-Datei(en) | Shellskripte | execline oder Shellskripte | Shellskripte |
Per-Dienst-Konfiguration | No | Yes (conf.d) | Mit in-Job-Mechanismen (normal exit, respawn) | Yes | Yes (Dienstinstanzen) | ? | Yes (v1.1+) | ? | No | No | No |
Läuft als Daemon | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (per Aufruf) | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (PID 1) | Yes (sys-apps/s6-linux-init) | Yes (PID 1) |
Dienstübergreifende Abhängigkeiten/Ereignisse | No | Yes | Yes | Yes | Yes | No | Yes (Grundlegende Unterstützung, v1.3+) | ? | Yes | Yes | Yes |
Parallelstart von Diensten | Yes | Yes (optional) | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
Aufrechterhaltung von Daemons | Yes | Yes (optional ab v0.21+ per supervise-daemon) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Bevorzugter Bereitsteller der Dienst-Dateien | k.a. | Gentoo | Ubuntu | upstream | Solaris | MacOSX | k.a. | k.a. | Void Linux | k.a. | NetBSD, FreeBSD, OpenBSD |
Lizenz | GPL v2+ | 2-cl. BSD | GPL v2 | LGPL v2.1+ | ? | Apache License 2.0 | Unlicense | MIT | BSD | ISC | BSD |
! ! 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) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (default init) || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-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 || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (conf.d) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | With in-job mechanisms (normal exit, respawn) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (service instances) || ? || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (v1.1+) || ? || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes |-
| Running as a daemon || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (invoked) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (sys-apps/s6-linux-init) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (PID 1) |-
| Cross-service dependencies/events || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (basic support, v1.3+) || ? || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes |-
| Parallel service startup || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (optional) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #F2DEDE; color: black; vertical-align: middle; text-align: left; " class="cell-no" | No || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes |-
| Keeping daemons alive || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes (optional v0.21+ via supervise-daemon) || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-yes" | Yes || style="background-color: #DFF0D8; color: black; vertical-align: middle; text-align: left; " class="cell-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 |-
|}
Unterstützte Dienste (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. |
Siehe auch
- 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 (siehe den init Abschnitt).
Externe Ressourcen
- s6 - Forenthread
- Forenthread
- openrc-init
- GNU shepherd - Servicemanager für das GNU Betriebssystem.