Alternatives to systemd

From Without Systemd
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 wikipedia.org Page: Init

Init is the first process started during system boot. It is 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 (aka rc runtime configuration scripts) 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 init systems incorporate the service manager in the init process or have init scripts in close relation to them. Below, such init systems are referred to as integrated, although 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 Modular, self-healing, and interface-oriented service manager and init system   This project is defunct 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 A fork of systemd v208   This project is defunct 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

udev alternatives

udev (userspace /dev) is a device manager for the Linux kernel.

In April 2012, udev's source code was merged into the systemd source tree.[1]

Although udev can still be compiled for usage without systemd, Lennart Poettering said that they will not polish udevd outside of systemd[2], adding:

"Yes, udev on non-systemd systems is in our eyes a dead end, in case you haven't noticed it yet. I am looking forward to the day when we can drop that support entirely."

So to be on the safe side, you probably want to use an alternative to udev:

  • eudev - Gentoo's maintained fork of udev
  • mdev - the plug-and-play manager built into BusyBox

For more see this StackExchange question

related: udevil (2) mounts and unmounts removable devices without a password, shows device info, and monitors device changes. It can also mount ISO files, nfs://, smb://, ftp:, ssh:// and WebDAV URLs, and tmpfs/ramfs filesystems.

See also

Init-specific articles:

Personal tools