Alternatives to systemd

From Without Systemd
Revision as of 22:10, 8 December 2017 by Bobo (Talk | contribs)

Jump to: navigation, search

This page describes the various init systems which are available as alternatives to systemd
For a more comprehensive explanation of init, and runlevels, see 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 incomplete) overview of init systems can be found in this blog entry, titled "A history of modern init systems (1992-2015)"


Alternatives to systemd

init + runlevel configuration (integrated management)

System Description Latest release
dinit init system with process supervision, service dependencies and socket activation written in C++ 2017-03-30
procd OpenWrt init and process management daemon with ubus integration 2016-06-20
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 2015-10-16
initng Dependency-based init system with parallelization and asynchronous start 2007-11-11
eINIT Can supervise processes and start them asynchronously, possibly without shell scripts 2007-12-18
nosh A suite of system-level utilities for initializing and running a BSD or Linux system, for managing daemons, for managing terminals, and for managing logging 2017-07-05
runit UNIX init scheme with service supervision, a replacement for SysVinit, and other init schemes 2014-08-10
Upstart Event-based init system which handles starting, stopping and supervising of tasks and services. This project is dead 2014-09-04
uselessd A fork of systemd v208. This project is dead 2014-11-16
System XVI Modular, self-healing, and interface-oriented service manager and init system. This project is dead 2015-11-07
minit A very small init with process supervision, service dependency ordering and parallel service activation 2005 ?
s6-rc A service manager for s6-based systems, i.e. a suite of programs that can start and stop services, both long-running daemons and one-time initialization scripts, in the proper order according to a dependency tree 2017-07-04
anopa An init system/service manager built around s6 supervision suite 2017-06-20
GNU PIES Program Invocation and Execution Supervisor (inittab-compatible with a native rc format as well) 2016-10-01
OpenRC Dependency-based parallel-process startup rc system that works with the system-provided init, normally SysVinit.
Since v0.25, OpenRC includes openrc-init, which can replace /sbin/init, but the default provider for the init command is SysVinit for OpenRC.

standalone init (separate from configuration/management of runlevels)

System Description Latest release
busybox init BusyBox init. 2017-08-17
ninit Fork from minit. See ninit Instructions. 2010-01-16
myinit Simple init with parallel execution and dependencies via reference counting (`start' and `stop' commands). 2011-07-11
sinit Simple init initially based on Rich Felker’s minimal init. 2015-06-16
SysVinit Traditional System V init. 2010-04-14
sninit Small init implementation with SysV init like (sub)runlevels. 2015-12-31
uinit Smallest init possible. 2017-05-16
ueld Similar to BSD init but more integrated. 2017-06-24
simpleinit-msb A fork of simpleinit (shipped with util-linux until v2.20) by Matthias S. Benkmann currently used in Source Mage GNU/Linux. 2007-11-08

Service managers

Program Description Latest release
restartd Debian restartd - A process-restarting daemon 2013-01-11
daemontools Collection of tools for managing UNIX services. 2001-07-12
daemontools encore enhanced version of daemontools github repository 2014-04-02
GNU Shepherd A service manager written in Guile scheme that is used as PID 1 by GuixSD Linux. 2016-12-04
Monit Monit is a process supervision tool for Unix and Linux. With monit, system status can be viewed directly from the command line, or via the native HTTP(S) web server. 2017-06-07
perp Persistent process (service) supervisor and managment framework for UNIX. 2013-01-11
s6 Small suite of programs for UNIX, designed to allow service supervision in the line of daemontools and runit. 2017-06-15
freedt A daemontools reimplementation. 2014-09-03
procer mongrel2's process supervisor procer 2014-03-18
god (2) Easy to configure and extend monitoring framework written in Ruby. 2014-03-06
watchman A not-so-simple service manager for Linux. 2016-03-31
Supervisor A process control system written in Python. 2016-02-06


System Description Latest release
startpar May be used by the SysV RC boot system executor to allow parallel process system start-up. 2014-02-09
insserv May be used with SysV-based init systems to allow dependency driven system start-up based on dependencies specified by LSB headers in the init.d scripts. 2012-11-14

This page is based on Init article at ArchLinux Wiki Content is available under GNU Free Documentation License 1.3 or later

SEE ALSO: Gentoo wiki page: Comparison of init systems presents an even more extensive / thorough "Detailed Feature Comparison Table"

Personal tools