OpenRC | |
---|---|
Тип | Init |
Разработчики | Roy Marples[вд] и William Hubbs[вд] |
Написана на | Си[2] |
Операционные системы | Linux, FreeBSD и NetBSD |
Первый выпуск | 5 апреля 2007 |
Последняя версия | |
Репозиторий | github.com/OpenRC/openrc |
Лицензия | 2-пунктная лицензия BSD[вд][3] |
Сайт | wiki.gentoo.org/w… (англ.) |
![]() |
OpenRC — система инициализации на основе зависимостей для unix-подобных систем, которая работает вместе с программой инициализации init. Полностью совместима со сценариями Gentoo, но, тем не менее, может использоваться и в других дистрибутивах Linux и BSD.
Создана разработчиком NetBSD Роем Марплсом, который также принимал активное участие в проекте Gentoo.
Предоставляет основные функции современных систем инициализации: загрузка на основе зависимостей, изоляция запускаемых модулей посредством контрольных групп, разделение между разными уровнями запуска, конфигурации переменных среды.
Среди дистрибутивов Linux, использующих OpenRC — Gentoo, Alpine Linux, Hyperbola GNU/Linux-libre[англ.], Parabola GNU/Linux-libre, Maemo Leste, TrueOS. Некоторые дистрибутивы, в том числе Devuan и Artix Linux предлагают OpenRC как один из вариантов, то есть их программные пакеты и демоны поддерживают такой вариант инициализации.
OpenRC состоит из нескольких модульных компонентов, основными из которых является init (необязательная), основная система управления зависимостями и supervise-daemon (необязательно). Написан на Си и POSIX-совместимой оболочке, что делает его пригодным для использования в системах BSD и Linux. Основная система OpenRC занимается управлением зависимостями и анализом выполнения сценария инициализации. OpenRC работает путём сканирования уровней запуска, построения графа зависимостей и последующего запуска необходимой сценарной службы. По умолчанию OpenRC использует модифицированную версию start-stop-daemon для управления демонами. Сценарии имеют сходство с используемыми в системе инициализации SysVinit, но предлагают несколько функций, упрощающих их создание. Предполагается, что сценарии имеют функции start(), stop() и status(), и система использует уже объявленные переменные для создания функций по умолчанию. Функция зависимостей используется для объявления зависимостей от других служб, которые будут выполняться с заголовками LSB в SysVinit. Конфигурация и механизм инициализации разделены файлами настройки конфигурации в каталоге conf.d и файлами настройки инициализации в каталоге init.d.
Openrc-init впервые появился в версии 0.25 в качестве опциональной замены для init. Поддерживается несколько других систем инициализации, включая SysVinit и Busybox
Supervise-daemon — служба супервизора — впервые появилась в версии 0.21; может быть включена в init-сценарии для запуска и управления демоном. Поддерживаются также другие супервизоры демонов, включая runit.
OpenRC обеспечивает ряд особенностей, которые преподносили как инновационные такие системы инициализации, как systemd, GNU Shepherd или upstart, например, поддержку контрольных групп. Реализация подобных функций не потребовала радикальных изменений.
Среди заявляемых особенностей: