Jump to content

OpenRC

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by ThatLinuxGuy (talk | contribs) at 20:15, 4 April 2020 (Added line about notoriety in intro, started design section to explain unique program architecture). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
OpenRC
Original author(s)Roy Marples
Developer(s)OpenRC Developers
Initial release5 April 2007; 18 years ago (2007-04-05)
Stable release
0.42.1 / 20 August 2019; 5 years ago (2019-08-20)[1]
Repository
Written inC[2]
Operating systemLinux, FreeBSD, NetBSD, TrueOS
Size~900 KB
TypeInit daemon
License2-clause BSD license
Websitewww.gentoo.org/proj/en/base/openrc/

On Unix-like systems, OpenRC is a dependency-based init - the first process started during booting of the computer system. It received some notoriety[3] as an alternative init sytem as many distributions have switched to systemd.

Since 0.25 OpenRC includes openrc-init, which can replace /sbin/init, but the default provider for the init program is SysVinit for OpenRC. As well as Linux, OpenRC can also be used on several BSD systems. It was created by a NetBSD developer, who started the Gentoo/FreeBSD project.

OpenRC is the default init system of TrueOS[4], Gentoo, Alpine Linux, Hyperbola GNU/Linux-libre, Parabola GNU/Linux-libre, Artix Linux, Maemo Leste and other unix-like systems, while some others such as Devuan offer it as an option.[5] That means that the software packages and daemons of those systems/distributions support it, coming with or using the available scripts.

Design

OpenRC is made up of several different components that can be interchanged based on user choice. Several inits are supported including openrc-init, SysVinit and Busybox[6]. Several daemon supervisors are also supported including runit, s6 and OpenRC's own supervise-daemon.

Features

  • Portable between Linux, TrueOS, FreeBSD, and NetBSD
  • Parallel service startup (optional, in development)[7]
  • Dependency based boot-up
  • Process segregation through cgroups
  • Per-service resource limits (ulimit)
  • Separation of code and configuration (init.d / conf.d)
  • Easily extensible startup scripts customizable by users
  • Ability to include an unlimited variety of commands beyond basic "start, stop, and status"
  • Stateful init scripts (is it started already?)
  • Complex init scripts to start multiple components (Samba (smbd and nmbd), NFS (nfsd, portmap, etc.))
  • Automatic dependency calculation and service ordering
  • Proper integration into container/virtualization (Linux-VServer, OpenVZ, etc.)[8]
  • Proper modular architecture and separation of optional components (Cron, syslog)
  • Expressive and flexible network handling (including VPN, bridges, etc.)
  • Support for bare-metal bare-dependency servers[9][10]
  • Verbose debug mode

References

  1. ^ "openrc-0.42.1". Retrieved September 19, 2019.
  2. ^ "openrc", Analysis Summary, Ohloh, retrieved 2012-03-10
  3. ^ "DistroWatch.com: Put the fun back into computing. Use Linux, BSD". distrowatch.com. Retrieved 2020-04-04.
  4. ^ "4. Post Installation Configuration — TrueOS® User Guide". www.trueos.org. Retrieved 2017-03-12.
  5. ^ "Devuan ASCII 2.0.0 stable release". Retrieved 2018-07-17.
  6. ^ OpenRC
  7. ^ Parallel startup in OpenRC was disabled by default due to bug 391945 (boot can hang when rc_parallel=yes)
  8. ^ OpenRC
  9. ^ gentoo-embedded post, 29 Jul 2011
  10. ^ Using Mdev on Gentoo