Новые версии сервисного менеджера S6-rc и системы инициализации S6-linux-init

Представлен выпуск сервисного менеджера s6-rc 0.5.6.0, предназначенного для управления запуском скриптов инициализации и сервисов. Поддерживается отслеживание дерева зависимостей и автоматический запуск или завершение сервисов для достижения указанного состояния. Инструментарий s6-rc может применяться как в системах инициализации, так и для организации запуска произвольных сервисов в привязке к событиям, отражающим изменение состояния системы. Система поддерживает скрипты инициализации, совместимые с sysv-init, и может импортировать информацию о зависимостях из sysv-rc или OpenRC. Код написан на языке Си и распространяется под лицензией ISC.

Сервисный менеджер s6-rc включает набор утилит для запуска и остановки длительно функционирующих процессов (демонов) или сразу завершаемых скриптов инициализации. В процессе работы обеспечивается параллельный запуск не пересекающихся между собой сервисов и гарантируется повторяющаяся при разных запусках последовательность выполнения скриптов. Все изменения состояния обрабатываются с учётом зависимостей, например, при запуске какого-то сервиса будут автоматически запущены необходимые для его работы зависимости, а при остановке – остановлены и зависимые сервисы.

В отличие от других сервисных менеджеров s6-rc поддерживает упреждающее (в offline-режиме) построение графа зависимостей для имеющегося набора сервисов, что позволяет выполнить ресурсоёмкий анализ зависимостей отдельно, а не во время загрузки или изменения состояния. При этом система не является монолитной и разбита на серию отдельных и заменяемых модулей, каждый из которых в соответствии с философией Unix решает только определённую задачу. Проект s6-rc придерживается философии минимализма (не содержит ничего лишнего) и потребляет минимум ресурсов.

Вместо уровней запуска (runlevel) в s6-rc предлагается концепция наборов (bundles), позволяющая группировать сервисы по произвольным признакам и решаемым задачам. Для повышения эффективности работы используется скомпилированная БД зависимостей, создаваемая утилитой s6-rc-compile на основе содержимого каталогов с файлами для запуска/остановки сервисов. Для разбора и манипуляций с БД предлагаются утилиты s6-rc-db и s6-rc-update.

Одновременно сформированы новые версии сопутствующих пакетов, дополняющих s6-rc:

  • s6 2.13.2.0 – утилиты для отслеживания работы процессов и управления процессами (аналог daemontools и runit). Поддерживаются такие возможности как перезапуск процессов после их аварийного завершения, запуск обработчика (активация сервиса) при обращении к сетевому порту, журналирование событий (замена syslogd) и контролируемое предоставление дополнительных привилегий (аналог sudo).
  • s6-linux-init 1.1.3.0 – реализация init-процесса для операционных систем на базе ядра Linux, применяемого для создания систем инициализации, в которых для управления сервисами и скриптами используются пакеты s6 и s6-rc.
  • s6-networking 2.7.1.0 – набор утилит для создания сетевых сервисов, похожий наucspi.
  • s6-frontend – обвязка для воссоздания функциональности daemontools и runit поверх s6.
  • s6-portable-utils 2.3.1.0 – набор типовых Unix-утилит, таких как cut, chmod, ls, sort и grep, оптимизированных для потребления минимальных ресурсов и поставляемых под лицензией ISC.
  • s6-linux-utils 2.6.3.0 – набор утилит, привязанных к Linux, таких как chroot,
    freeramdisk, logwatch, mount и swapon.
  • mdevd 0.1.7.0 – менеджер событий (аналог udevd), предназначенный для обработки горячего подключения устройств. По конфигурации mdevd совместим с mdev из состава Busybox.
  • bcnm 0.0.2.0 – сетевой конфигуратор с возможностями для настройки WiFi на стороне клиента.
  • execline 2.9.7.0 – язык написания сценариев.
  • skalibs 2.14.4.0 – библиотека для создания безопасных системных приложений на языке Си.
  • s6-dns 2.4.1.0 – набор клиентских библиотек и утилит, заменяющих типовые DNS-утилиты из BIND и djbdns.
  • dnsfunnel 0.0.3.0
    dnsfunnel is a DNS forwarder (aka, a DNS cache without a
    cache) meant to listen to local requests and forward them to
    real caches.
  • shibari 0.0.2.0 – простой DNS-сервер.
  • tipidee 0.0.6.0 – HTTP-сервер с поддержкой HTTP/1.1.

В новых версиях во все пакеты добавлена поддержка pkg-config. В библиотеке skalibs реализованы варианты функций ввода/вывода, время работы которых можно ограничить таймаутом. В mdevd добавлена опция “-I” для задания имени группы netlink для приёма запросов, размер буфера по умолчанию увеличен до 1 МБ. В tipideed обеспечена возможность потоковой трансляции вывода CGI-скриптов, добавлена поддержка методов PUT, DELETE и PATCH, реализована директива autochunk для chunked-кодирования передаваемых данных.

Release. Ссылка here.