OpenRC


OpenRC — система инициализации на основе зависимостей, которая работает вместе с программой инициализации init. Она полностью совместима со сценариями Gentoo, но, тем не менее, может использоваться и в других дистрибутивах Linux и BSD. Он был создан Роем Марплсом, разработчиком NetBSD, который также принимал активное участие в проекте Gentoo.[2][3]

OpenRC предоставляет обычные функции, ожидаемые от современной системы инициализации: загрузка на основе зависимостей, процесс сегрегации через cgroups (в Linux и других системах — разделение между разными уровнями запуска), конфигурации переменных среды.

Такие операционные системы как Gentoo, Alpine Linux, Hyperbola GNU/Linux-libre[англ.], Parabola GNU/Linux-libre, Maemo Leste, TrueOS и ряд других unix-подобных систем используют OpenRC, в то время как некоторые другие, такие как Devuan, Artix Linux предлагают её как один из вариантов[4]. Это означает, что программные пакеты и демоны этих операционных систем/дистрибутивов поддерживают его, поставляют и/или используют доступные скрипты.

OpenRC состоит из нескольких модульных компонентов, основными из которых является init (необязательная), основная система управления зависимостями и supervise-daemon (необязательно). Он написан на C и POSIX-совместимой оболочке, что делает его пригодным для использования в системах BSD и Linux. Основная система OpenRC занимается управлением зависимостями и анализом выполнения сценария инициализации. OpenRC работает путем сканирования уровней запуска, построения графа зависимостей и последующего запуска необходимой сценарной службы. Он завершается после запуска скриптов. По умолчанию OpenRC использует модифицированную версию start-stop-daemon для управления демонами.[5]

Скрипты имеют сходство со скриптами, используемыми в системе инициализации SysVinit, но предлагают несколько функций, упрощающих их создание. Предполагается, что сценарии имеют start(), stop() и status(), и система использует уже объявленные переменные для создания функций по умолчанию[6]. Функция зависимостей используется для объявления зависимостей от других служб, которые будут выполняться с заголовками LSB в SysVinit. Конфигурация и механизм инициализации разделены файлами настройки конфигурации в каталоге conf.d и файлами настройки инициализации в каталоге init.d.

Openrc-init впервые появился в версии 0.25 в качестве опциональной замены для init. Поддерживается несколько других систем инициализации, включая SysVinit и Busybox