Init alternatives to systemd
This page describes the various init systems which are available as alternatives to systemd
For a more comprehensive explanation of init, and runlevels, see wikipedia.org Page: Init
Init is the first process started during system boot. It is a a daemon process that continues running until the system is shut down. Init is the direct or indirect ancestor of all other processes, and automatically adopts all orphaned processes. It is started by the kernel using a hard-coded filename; if the kernel is unable to start it, panic will result. Init is typically assigned process identifier 1.
The init scripts (or rc) are launched by the init process to guarantee basic functionality on system start and shutdown. This includes (un)mounting of file systems and launching of daemons. A service manager takes this one step further by providing active control over launched processes, or process supervision. An example is to monitor for crashes and restart processes accordingly.
These components combine to the init system. Some inits include the service manager in the init process, or have init scripts in close relation to them. These inits are below referred to as integrated, though entries in different categories may explicitly depend on each other.
A nice (but still non-comprehensive) overview of init systems can be found in this blog entry, titled "A history of modern init systems (1992-2015)"
Contents |
init + runlevel configuration (integrated management)
System | Description | Latest release |
---|---|---|
anopa | An init system/service manager built around s6 supervision suite | 2017-06-20 |
dinit | init system with process supervision, service dependencies and socket activation written in C++ | 2017-03-30 |
einit | Can supervise processes and start them asynchronously, possibly without shell scripts | 2007-12-18 |
Epoch | Single-threaded init system designed for minimal footprint, compatibility and unified configuration | 2015-06-23 |
finit | Fast and extensible init, originally based on EeePC fastinit | 2018-01-24 |
GNU PIES | Program Invocation and Execution Supervisor (inittab-compatible with a native rc format as well) | 2016-10-01 |
initng | Dependency-based init system with parallelization and asynchronous start | 2007-11-11 |
minit | A very small init with process supervision, service dependency ordering and parallel service activation | 2005 ? |
nosh | A suite of system-level utilities for initializing and running a BSD or Linux system (managing daemons / terminals / logging) | 2017-12-11 |
OpenRC | Dependency-based parallel-process startup rc system that works with the system-provided init, normally SysVinit. v0.25 onward includes openrc-init, which can replace /sbin/init (the default OpenRC provider for the init command is SysVinit) |
2017-11-30 |
procd | OpenWrt init and process management daemon with ubus integration | 2018-02-05 |
runit | UNIX init scheme with service supervision, a replacement for SysVinit, and other init schemes | 2014-08-10 |
s6 | an init + small suite of service supervision/management programs (ala daemontools and runit) for UNIX | 2017-06-15 |
System XVI | |
2015-11-07 |
Upstart | Event-based init system which handles start/stop supervision of tasks and services (used in Chrome/Chromium OS) | 2014-09-04 |
uselessd | |
2014-11-16 |
standalone init (separate from configuration/management of runlevels)
System | Description | Latest release |
---|---|---|
busybox init | BusyBox init | 2018-02-15 |
myinit | Simple init with parallel execution and dependencies via reference counting (`start' and `stop' commands) | 2011-07-11 |
ninit | Fork from minit. See ninit Instructions | 2010-01-16 |
simpleinit-msb | A fork of simpleinit (shipped with util-linux until v2.20); currently used in Source Mage GNU/Linux | 2007-11-08 |
sinit | Simple init initially based on Rich Felker’s minimal init | 2015-06-16 |
sninit | Small init implementation with SysV init like (sub)runlevels | 2015-12-31 |
SysV init | Traditional System V init..........Feb 2018: v 2.89b release notes / changelog | 2018-02-27 |
ueld | Similar to BSD init but more integrated | 2017-06-24 |
uinit | Smallest init possible | 2017-05-16 |
Service managers
service manager: a suite of programs which start and stop services, both long-running daemons and one-time initialization scripts, in the proper order according to a dependency tree
Program | Description | Latest release |
---|---|---|
daemontools | collection of tools for managing UNIX services | 2001-07-12 |
daemontools encore | an enhanced version of daemontools github repository | 2014-04-02 |
freedt | a daemontools reimplementation | 2014-09-03 |
GNU Shepherd | service manager written in Guile scheme; used as PID 1 by GuixSD Linux | 2016-12-04 |
god (2) | an easily configurable, extensible, monitoring framework written in Ruby | 2014-03-06 |
Monit | process supervision tool for Unix and Linux; system status is viewable directly from commandline, or via a native HTTP(S) web server | 2017-06-07 |
perp | persistent process (service) supervisor and managment framework for UNIX | 2013-01-11 |
procer | process supervisor developed for mongrel2 | 2014-03-18 |
restartd | a process-restarting daemon (aka Debian restartd) | 2013-01-11 |
s6-rc | service manager for s6-based systems | 2018-01-04 |
Supervisor | process control system written in Python | 2016-02-06 |
watchman | not-so-simple service manager for Linux | 2016-03-31 |
Other
System | Description | Latest release |
---|---|---|
insserv | can be used with SysV -based init systems; provides dependency-driven system startup (dependencies are specified by LSB headers within init.d scripts) | 2012-11-14 |
startpar | can be used by the SysV RC boot system executor to allow parallel process system startup | 2014-02-09 |
See also
- Gentoo wiki page: Comparison of init systems :Talk presents a more extensive / thorough "Detailed Feature Comparison Table"
- Gentoo wiki page: Comparison of init systems
- A history of modern init systems (1992-2015)
- init systems -- overview
- Demystifying the init system (PID 1)
Init-specific articles:
- Manjaro wiki :: OpenRC
- Gentoo wiki :: OpenRC
- guide: Using OpenRC on Arch Linux
- VoidLinux wiki :: Runit
- Obarun wiki :: s6-boot
- Replace systemd with busybox + minirc
- How to run s6-svscan as PID 1
- How to remove systemd from an Exherbo GNU/Linux installation
- Hints on how to perform socket activation with s6
This without-systemd.org page is based on init article at ArchWiki. Content is available under GNU Free Documentation License 1.3 or later.