Martin Helme

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, например, поддержку контрольных групп. Реализация подобных функций не потребовала радикальных изменений.

Среди заявляемых особенностей:

  • переносимость между Linux, TrueOS, FreeBSD и NetBSD;
  • параллельный запуск служб (по умолчанию отключён);
  • загрузка на основе зависимостей;
  • разделение процессов через контрольные группы
  • ограничения ресурсов для каждой службы (ulimit);
  • разделение кода и конфигурации (init.d / conf.d);
  • расширяемые сценарии запуска;
  • сценарии инициализации с отслеживанием состояния;
  • сложные сценарии инициализации для запуска нескольких компонентов (например, для Samba — smbd и nmbd, для NFS — nfsd, portmap и другие компоненты);
  • автоматический расчёт зависимостей и определение порядка запуска служб;
  • модульная архитектура и разделение дополнительных компонентов (cron , syslog);
  • гибкая работа с сетью (включая VPN, сетевые мосты);
  • подробный режим отладки.

Примечания

Ссылки

No tags for this post.