OpenRCはUnix系オペレーティングシステムにおける、依存関係ベースのinitシステムである。systemdに移行したディストリビューションの、initシステムの代替選択肢であり、NetBSDとGentoo Linuxで活躍する開発者、Roy Marplesによって開発された。
OpenRCはTrueOS、Gentoo Linux、Alpine Linuxや他のUnix系システムにおいてデフォルトのinitシステムであり、Devuanなどのシステムではオプションとして提供されている。
設計
OpenRCのコア部分は、依存関係の管理とinitスクリプトの解析を行う。OpenRCはランレベルをスキャンし、依存関係のグラフを作り、必要なサービスのスクリプトを開始する。スクリプトが開始されたあとはOpenRCは退出する。デフォルトでは、OpenRCは改変されたバージョンのstart-stop-daemonをデーモン管理に用いている。
initスクリプトは、SysVinitで用いられるものと同様であるが、その作成の簡素化のため、いくつかの機能が提供されている。スクリプトは、start()、stop()、status()の状態が推定され、システムはデフォルトの機能を作るために既に宣言された変数を用いる。依存機能は、SysVinitにおけるLSBヘッダーによってなされる他のサービスへの依存関係の宣言に用いられる。設定と動作機構は、conf.dディレクトリ中の設定ファイルとinit.dディレクトリ中のinitファイルに分離されている。
Openrc-initは最初、バージョン0.25において/sbin/initのオプションの代替物として登場した。SysVinitやBusyboxなどの他のinitもサポートされている。
Supervise-daemonは、バージョン0.21において、OpenRCに監査機能を提供するために登場した。この機能はinitスクリプト中でデーモンの開始とモニタリングのために有効化される。runitやs6など他のデーモン監査もサポートされている。
機能
- Linux、TrueOS、FreeBSD、NetBSDに移植可能
- 並行したサービスの起動(デフォルトではオフになっている)
- 依存関係ベースの起動
- cgroups経由でのプロセスの分離
- サービスごとのリソースの制限 (ulimit)
- コードと設定の分離 (init.d/conf.d)
- 拡張可能な起動スクリプト
- 状態の把握が可能なinitスクリプト
- SambaやNFSなど複数のコンポーネントを開始する複雑なinitスクリプト
- 自動による依存関係の計算と、サービスのオーダリング
- モジュール化されたアーキテクチャとオプションのコンポーネントの分離(CronやSyslogなど)
- 高速で柔軟なネットワークの利用(VPNやブリッジなどを含む)
- デバッグモード
