OpenRC
在类Unix系统上,OpenRC是一个基于依赖的init系统。因为多数发行版切换成了systemd,它被用作一种替代的init系统[3][4][5]。它是Roy Marples创建的,他是也活跃于 Gentoo计划的NetBSD开发者[6][7]。
原作者 | Roy Marples |
---|---|
開發者 | OpenRC开发者 |
首次发布 | 2007年4月5日 |
当前版本 |
|
源代码库 | |
编程语言 | C[2], Shell |
操作系统 | Linux, FreeBSD, NetBSD, TrueOS |
文件大小 | ~900 KB |
类型 | Init守护进程 |
许可协议 | 2条款BSD许可证 |
网站 | www |
OpenRC是Gentoo、Alpine Linux、Hyperbola GNU/Linux-libre、Parabola GNU/Linux-libre、Artix Linux、Maemo Leste、TrueOS[8]和其他类unix系统的缺省init系统,而其他一些发行版比如Devuan把它作为一个选项提供[9]。这意味着这些支持它的系统/发行版的软件包和守护进程(daemon),带有或使用可获得的脚本。
设计
OpenRC构成自一些模块组件,主要的组件是init(可选)、核心依赖管理系统和守护进程监管器(supervisor)(可选)。它用C语言和遵循POSIX的shell写成,这使得它在BSD和Linux系统上可以使用。
OpenRC的核心部份处理依赖管理和init脚本分析。OpenRC通过扫描运行级别,建造依赖图,接着启动需要的服务脚本来工作。一旦脚本都已经启动它就退出。缺省的,OpenRC使用一个修改版本的start-stop-daemon用于守护进程管理[10]。
init脚本享有与SysVinit使用的脚本的相似性,但是提供了一些特征来简化它们的创建。脚本都假定有start()
、stop()
和status()
,而系统使用已经声明的变量来创建这些缺省函数[11]。使用依赖函数来声明对其他服务的依赖性,这在SysVinit中是用LSB头完成的。配置和机制是分离的,分别采用在conf.d
目录中的配置文件和在init.d
目录中的init文件。
Openrc-init首先出现在版本0.25中,用作对/sbin/init
的可选的替代。还支持一些其他init包括SysVinit和BusyBox[12]。
监管守护进程(supervise-daemon)首次出现在版本0.21中,给予openrc监管能力。它可以在init脚本中启用,用作启动和监控一个守护进程的监管守护进程。支持一些其他其他守护进程监管器包括runit[13]和s6[14]。
特征
引用
- . 2024年1月12日 [2024年1月19日].
- , Analysis Summary (Ohloh), [2012-03-10], (原始内容存档于2012-11-05)
- . distrowatch.com. [2020-04-04]. (原始内容存档于2020-11-17).
- . [6 April 2020]. (原始内容存档于2020-11-17).
- . [6 April 2020]. (原始内容存档于2020-04-06).
- . [6 April 2020]. (原始内容存档于2018-02-18).
- . [6 April 2020]. (原始内容存档于2011-07-19).
- . www.trueos.org. [2017-03-12]. (原始内容存档于2017-09-18) (英语).
- . [2018-07-17]. (原始内容存档于2018-09-23) (英语).
- . [6 April 2020]. (原始内容存档于2021-12-11).
- . [6 April 2020]. (原始内容存档于2020-11-11).
- . [2020-11-15]. (原始内容存档于2021-01-25).
- . [6 April 2020]. (原始内容存档于2021-03-08).
- . [6 April 2020]. (原始内容存档于2019-03-06).
- . [5 April 2020]. (原始内容存档于2021-01-25).
外部链接
- 官方网站
- 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