The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

05.05.2025 21:30

Представлен выпуск сервисного менеджера 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 - сетевой конфигуратор с возможностями для настройки Wi-Fi на стороне клиента.
  • execline 2.9.7.0 - язык написания сценариев.
  • skalibs 2.14.4.0 - библиотека для создания безопасных системных приложений на языке Си.
  • s6-dns 2.4.1.0 - набор клиентских библиотек и утилит, заменяющих типовые DNS-утилиты из BIND и djbdns.
  • dnsfunnel 0.0.3.0 - перенаправляет локальные DNS-запросы на внешний сервер (DNS forwarder).
  • 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-кодирования передаваемых данных.

  1. Главная ссылка к новости (https://skarnet.org/lists/skaw...)
  2. OpenNews: Выпуск системного менеджера systemd 257
  3. OpenNews: Выпуск системы инициализации SysVinit 3.14
  4. OpenNews: Выпуск системы инициализации GNU Shepherd 0.9.2
  5. OpenNews: Доступна система инициализации Finit 4.0
  6. OpenNews: Системный менеджер InitWare, форк systemd, портирован для OpenBSD
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63187-s6
Ключевые слова: s6, init
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Обезьяврус (-), 21:50, 05/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Какая-то она мудрёная. Из всех альтернатив Systemd больше всего мне понравился Runit - он очень быстрый и простой, как палка.
     
     
  • 2.6, Аноним (6), 22:03, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    да, но не трекает зависимостей. А если их трекать, то всё усложняется, и минимальный вариант усложнения - это s6.
     
     
  • 3.12, мяв (?), 22:31, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    минимальный - openrc.
     
     
  • 4.13, мяв (?), 22:32, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    или даже чтоУгодно+startpar.
    да, скорее так.
     
     
  • 5.39, Xo (?), 07:45, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    dinit мне показался проще и быстрей, чем s6.
     
     
  • 6.42, Аноним (42), 09:43, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    sinit*
     
  • 3.29, Аноним (-), 05:39, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >да, но не трекает зависимостей

    Какие ещё зависимости? Запустить, остановить демона. Статус энэбл и дисэбл. Что ещё нужно для счастья? Ничего.

    >А если их трекать, то всё усложняется, и минимальный вариант усложнения - это s6.

    Какой ещё от запускальщика демона усложнение? Вы в своём уме, или вас systemD развратил.

     
     
  • 4.31, Аноним (31), 06:33, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А подумать никак?

    Сервис может зависит от другого сервиса, а тот зависит от нескольких других.

    Как пример

    Сервис логировниия Х, логика которого инициализировать и запустить что-то, а это что-то передает данные по сети.

    Перед тем как запустить этот сервис, нужно инициировать и запустить сервис управления сетью.

    И так далее по цепочке.

     
     
  • 5.41, Аноним (41), 09:40, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    а почему нельзя сразу написать нормально так, чтоб логирование запустилось без сети и ждать его появления?
     
     
  • 6.43, Аноним (41), 09:49, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    самая никчемность подхода зависимостей - когда сервис сети поднят, а связи по факту нет, потому что обрыв, фаервол и все такое.
    аналогия: у тебя есть машина, но оказалось проколото колесо. поэтому давай снимем все колеса, разберем двигатель и сожгем кузов
     
  • 6.52, anonymous (??), 13:49, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > а почему нельзя сразу написать нормально так, чтоб логирование запустилось без сети и ждать его появления?

    Зависимости бывают разные. Бывают времени работы программы - когда сеть нужна тебе для выполнения запросов, и ты просто посылаешь отказ, если сети нет. А бывает зависимость, необходимая для старта, если например из той сети берётся конфигурация. И тут уже никак - без сети ты не знаешь какие порты открывать, каким пользователям разрешать делать запросы - и прочее, а по умолчанию разрешать всем - это очень плохая идея.

    А ещё зависимость нужна чтобы не запускать десяток сервисов вручную. Запускаешь один - остальные запускаются автоматически в вычисленном порядке или параллельно.

     
  • 2.10, мяв (?), 22:31, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    из альтернатив сд, как сервисному менеджеру, только openrc и s6.
    остальное даже не близко по функционалу
     
     
  • 3.24, Аноним (24), 01:45, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Shepherd забыл?
     
     
  • 4.25, АнонимичныйАноним (?), 02:51, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Shepherd это шик, единственный инит, который я действительно понимаю)
     

  • 1.5, Аноним (5), 22:02, 05/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > что позволяет выполнить ресурсоёмкий анализ зависимостей отдельно, а не во время загрузки или изменения состояния.

    У них там что, десяток тыщ сервисов или это опять классический "premature optimization"?

     
     
  • 2.7, Аноним (7), 22:28, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    С системдой же не за 5 секунд загружается, хотя и с ней не сотнями сервисы грузятся.
     
  • 2.8, anonymous (??), 22:28, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    скорее всего затачиваются под встроенные системы. Там частенько делают переконфигурацию через перекомпиляцию.
     
  • 2.9, мяв (?), 22:29, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    даже для 10 сервисовэто дает ощутимый прирост.
    openrc тоже зависимости для нативных сервисов компилит. и стартует их одним openrc-run'ом, запущенным 0'м пидом.
    результат - прирост в 4 раза по сравнению с ненативными.
     
     
  • 3.19, Аноним (5), 00:51, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Только речь о затратах на анализ, а не о способе запуска из-за чего, скорее в... большой текст свёрнут, показать
     
  • 2.46, YetAnotherOnanym (ok), 10:22, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > У них там что, десяток тыщ сервисов или это опять классический "premature optimization"?

    Да.

     

  • 1.15, Аноним (15), 23:38, 05/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Утилиты для отслеживания, набор утилит для создания, обвязка для воссоздания, набор типовых утилит, другой набор утилит, менеджер событий, сетевой конфигуратор, язык написания сценариев, библиотека для создания невозможного, набор клиентских библиотек и утилит, DNS forwarder, DNS-сервер, HTTP-сервер

    Но комбайн — это systemd. Смотри не путай!

     
     
  • 2.22, myster (ok), 01:09, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    В s6-rc модули независимы, а в systemd они не работают отдельно друг от друга, поэтому да, systemd - комбайн
     

  • 1.17, Уважай Линуса Поттеринга (?), 00:02, 06/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Понапридумывают сложнейших систем с кучей сопутствующих пакетов. А могли бы уже просто взять ясное и прекрасное творение Линуса Поттеринга - systemd, и не парить себе голову. Всё легко и просто загружается, настраивается, поддерживается.
     
     
  • 2.18, Someone (??), 00:20, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Линуса Поттеринга..Ну теперь все встало на свои места.
     
     
  • 3.44, Аноним (44), 10:20, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот это поворот!
     
  • 2.21, Аноним (21), 01:05, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Vendor lock - это плохо. Нужны альтернативы.
     
  • 2.23, Аноним (23), 01:38, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Линусу было нас рать, а вот Лёня мог улучшить openrc, а не городить своё.
     
     
  • 3.47, YetAnotherOnanym (ok), 10:31, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. В openrc, по большому счёту, улучшать особо и нечего.
    Идея заменить скрипты на shell (т.е. инструмент общего назначения, приспособленный для решения специфической задачи) на специализированный инструмент - вполне здравая. Проблема в том, что Лёня - классический shitfinger, он превращает в фекалии всё, к чему прикоснётся. Все его творения - и авахи, и пульсу, и системд, пришлось доводить до ума другим людям.
     
     
  • 4.48, 678 (?), 11:09, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > пришлось доводить до ума другим людям

    Сомнительно они это довели до ума, ну серьезно - просто набор костылей прикрутили

     

  • 1.40, Аноним (40), 08:46, 06/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в каких дистрах этот s6 по дефолту? как попробовать это чудо?
     
     
  • 2.49, myster (ok), 12:04, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Artix делают ISO-шки с разными init системами, в том числе с S6.
     
  • 2.50, Engineer (??), 12:22, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В Artix не по дефолту но есть сборки почти со всеми альтенативными инитами.
     

  • 1.45, Соль земли (?), 10:21, 06/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А чего это анализ зависимостей ресурсоёмкий?
     
     
  • 2.51, anonymous (??), 13:44, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    кубическая зависимость от количества сервисов.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру