OpenRC

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
OpenRC
Скриншот программы OpenRC
Тип init daemon
Автор Roy Marples
Разработчик OpenRC Developers
Операционная система Linux, FreeBSD, NetBSD
Первый выпуск 5 апреля 2007 (2007-Apr-05)
Последняя версия 0.45.2 (3 июля 2022г.)
Лицензия 2-clause BSD license
Ссылки
Сайт GentooWiki, GitWeb

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

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

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

Дизайн

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

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

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

Supervise-daemon впервые появился в версии 0.21, дающей возможности openrc supervision. Он может быть включен в init сценарий для контроля-Де́мона, чтобы начать и контролировать Де́моном.Поддерживается так же супервайзер Де́монов с включёнными runit [6]и s6[7].

Особенности

OpenRC обеспечивает ряд особенностей, которые преподносили инновационными такие системы инициализации, как systemd, GNU Shepherd или upstart, например, запуск аппаратных сценариев инициализации или поддержка cgroups. Реализация подобных функций не потребовала больших изменений, радикально изменяющих дизайн и зависимости.

  • Переносимость между Linux, TrueOS, FreeBSD и NetBSD
  • Запуск параллельной службы (по умолчанию отключен)
  • Загрузка на основе зависимостей
  • Разделение процессов через контрольные группы (cgroups)[8]
  • Ограничения ресурсов для каждой службы (ulimit)
  • Разделение кода и конфигурации (init.d / conf.d)
  • Расширяемые сценарии запуска
  • Скрипты инициализации с отслеживанием состояния (он уже запущен?(да))
  • Сложные сценарии инициализации для запуска нескольких компонентов ( Samba (smbd и nmbd), NFS (nfsd, portmap и Т. Д.))
  • Автоматический расчет зависимостей и службы услуг..
  • Модульная архитектура и разделение дополнительных компонентов ( Cron , syslog )
  • Выразительная и гибкая работа с сетью (включая VPN , Сетевые мосты и Т. Д.)
  • Подробный режим отладки

Интеграция Busybox и OpenRC

BusyBox может использоваться, чтобы заменить большинство утилит, необходимых OpenRC (awk, shell, init, и другие POSIX-инструменты), в качестве основной оболочки для OpenRC. Все вызовы, как правило, возбуждаемые fork и exec, будут заменены ради повышения скорости.

См. также

Примечания

  1. История OpenRC. GitHub. Дата обращения: 30 августа 2020. Архивировано 18 февраля 2018 года.
  2. «Разработчики NetBSD» . (Проверено 30 августа 2020). Дата обращения: 30 августа 2020. Архивировано 19 июля 2011 года.
  3. «Стабильный выпуск Devuan ASCII 2.0.0» . 17 июля 2018, devuan.org (06.08.18). Архивировано 23 сентября 2018 года. Дата обращения 30 августа 2020.
  4. Руководство пользователя (англ.). GitHub. — «Start-Stop-Daemon OpenRC has its own modified version of s-s-d, which is historically related and mostly syntax-compatible to Debian's s-s-d, but has been rewritten from scratch.». Дата обращения: 30 августа 2020. Архивировано 11 декабря 2021 года.
  5. Справочник скриптов, Руководство пользователя, Основные Функции (англ.). GitHub. — «All service scripts are assumed to have the following functions: start() stop() status()». Дата обращения: 11 марта 2022. Архивировано 11 ноября 2020 года.
  6. Руководство по запуску (англ.). GitHub (6 апреля 2020). Дата обращения: 30 августа 2020. Архивировано 8 марта 2021 года.
  7. Руководство s6 (англ.). GitHub (30 августа 2020). Дата обращения: 30 августа 2020. Архивировано 6 марта 2019 года.
  8. "CGroups Support". (Retrieved 5 April 2020). Архивировано 25 января 2021 года. Дата обращения 30 августа 2020.

Ссылки

OpenRC