Русская Википедия:OpenRC

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:К удалению Шаблон:Программа

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

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

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

Дизайн

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

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

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

Supervise-daemon впервые появился в версии 0.21, дающей возможность супервизора в openrc. Он может быть включен в init скрипте для supervise-daemon, чтобы он запускал и контролировал демоном. Поддерживаются так же другие супервизоры демонов, включая 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-инструменты), в качестве основной оболочки. Все вызовы, как правило, возбуждаемые fork и exec, будут заменены ради повышения скорости.

См. также

Примечания

Шаблон:Примечания

Ссылки