OpenRC

在类Unix系统上，OpenRC是一个基于依赖的init系统。因为多数发行版切换成了systemd，它被用作一种替代的init系统。它是Roy Marples创建的，他是也活跃于
Gentoo计划的NetBSD开发者。

OpenRC是Gentoo、Alpine Linux、Hyperbola GNU/Linux-libre、Parabola GNU/Linux-libre、、Maemo Leste、TrueOS和其他类unix系统的缺省init系统，而其他一些发行版比如Devuan把它作为一个选项提供。这意味着这些支持它的系统/发行版的软件包和守护进程（daemon），带有或使用可获得的脚本。

设计 
OpenRC构成自一些模块组件，主要的组件是init（可选）、核心依赖管理系统和守护进程（supervisor）（可选）。它用C语言和遵循POSIX的shell写成，这使得它在BSD和Linux系统上可以使用。 

OpenRC的核心部份处理依赖管理和init脚本分析。OpenRC通过扫描运行级别，建造依赖图，接着启动需要的服务脚本来工作。一旦脚本都已经启动它就退出。缺省的，OpenRC使用一个修改版本的start-stop-daemon用于守护进程管理。

init脚本享有与SysVinit使用的脚本的相似性，但是提供了一些特征来简化它们的创建。脚本都假定有start()、stop()和status()，而系统使用已经声明的变量来创建这些缺省函数。使用依赖函数来声明对其他服务的依赖性，这在SysVinit中是用LSB头完成的。配置和机制是分离的，分别采用在conf.d目录中的配置文件和在init.d目录中的init文件。

Openrc-init首先出现在版本0.25中，用作对的可选的替代。还支持一些其他init包括SysVinit和BusyBox。

监管守护进程（supervise-daemon）首次出现在版本0.21中，给予openrc监管能力。它可以在init脚本中启用，用作启动和监控一个守护进程的监管守护进程。支持一些其他其他守护进程监管器包括runit和s6。

特征 
 在Linux、TrueOS、FreeBSD和NetBSD之间可移植。
 并行的服务启动（缺省关闭）。
 基于依赖的引导。
 通过cgroups的进程隔离。
 每服务资源限制（ulimit）。
 代码和配置分离（init.d / conf.d）。
 可扩展的启动脚本。
 有状态的init脚本（它已经启动了吗？）。
 启动多个组件的复杂init脚本（Samba（smbd和nmbd），NFS（nfsd、portmap等））。
 自动的依赖计算和服务定序。
 模块化架构和可选组件的分离（Cron、syslog）。
 有表达力和灵活性的网络处理（包括VPN，网桥等）。
 冗长调试模式。

引用

外部链接 
 
 OpenRC git repositories at gentoo.org  and GitHub 
 Init systems comparison: part 1  and part 2  (LWN.net)
 Openrc-init gentoo wiki   and git commit  

使用BSD许可证的软件
Unix进程和任务管理相关软件