Добавить в корзинуПозвонить
Найти в Дзене

Artix Linux (управление сервисами в dinit)

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая шпаргалка по системе инициализации DInit в контексте Artix Linux, со всевозможными мыслями и дополнениями. Dinit это современная система инициализации и менеджер сервисов, написанная на C++. Она призвана занять "золотую середину" между минималистичными системами инициализации такими как runit или openrc и функционально богатыми, но сложными systemd. Управление сервисами в dinit осуществляется в основном через командную утилиту dinitctl. Она используется для взаимодействия с запущенным экземпляром dinit системным или пользовательским. Особенности системы инициализации dinit Архитектурные особенности Установка пакетов. Так как рассматриваем систему инициализации в контексте Artix, то при установке пакета следует установить одноименный пакет с суффиксом -dinit, в нем находится механизм управления сервисом для системы инициализации dinit. Например при установке openssh следует установит

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая шпаргалка по системе инициализации DInit в контексте Artix Linux, со всевозможными мыслями и дополнениями.

Dinit это современная система инициализации и менеджер сервисов, написанная на C++. Она призвана занять "золотую середину" между минималистичными системами инициализации такими как runit или openrc и функционально богатыми, но сложными systemd.

Управление сервисами в dinit осуществляется в основном через командную утилиту dinitctl. Она используется для взаимодействия с запущенным экземпляром dinit системным или пользовательским.

Особенности системы инициализации dinit

  • Скорость: Считается одной из самых быстрых систем инициализации.
  • Простота управления: Синтаксис команд напоминает systemctl, что облегчает переход для пользователей systemd.
  • Зависимости: Поддерживает продвинутую систему управления зависимостями между сервисами.
  • Декларативность: Сервисы описываются в простых текстовых конфигурационных файлах.

Архитектурные особенности

  • Управление зависимостями: В отличие от классических скриптовых систем, dinit понимает связи между сервисами. Он запускает службы параллельно, как только их зависимости удовлетворены, что значительно ускоряет загрузку.
  • Контроль процессов: Dinit постоянно следит за запущенными процессами. Если сервис «падает», система может автоматически перезапустить его.
  • Монолитность: Это единый бинарный файл, который работает как PID 1 (init) и одновременно как менеджер сервисов. Это избавляет от необходимости плодить дерево процессов-супервизоров для каждого отдельного демона.
  • Пользовательские сервисы: Dinit позволяет запускать отдельный экземпляр менеджера для обычного пользователя, что удобно для управления в графических оболочках, аудио-серверами или агентами.

Установка пакетов. Так как рассматриваем систему инициализации в контексте Artix, то при установке пакета следует установить одноименный пакет с суффиксом -dinit, в нем находится механизм управления сервисом для системы инициализации dinit. Например при установке openssh следует установить и пакет openssh-dinit. Команда выглядит так:

sudo pacman -S openssh openssh-dinit
Установка пакетов
Установка пакетов

Для большинства команд требуются привилегии суперпользователя (sudo), если вы управляете системными службами.

Управление автозапуском. Чтобы служба запускалась автоматически при загрузке системы, ее нужно включить. В dinit это обычно означает создание символической ссылки в специальной директории загрузки, часто это /etc/dinit.d/boot.d/ или аналогичном, в зависимости от дистрибутива.

  • sudo dinitctl enable [название сервиса] - Добавляет в автозапуск, а также запускает сервис немедленно.
  • sudo dinitctl disable [название сервиса] - Удаляет ссылку из директории автозапуска.

Основные команды управления службами dinit. Ниже приведены основные команды, аналогичные systemctl в systemd:

  • dinitctl start [название сервиса] - Запускает указанную службу и помечает ее как активную.
  • dinitctl stop [название сервиса] - Останавливает службу. Это действие также снимает отметку "активна".
  • dinitctl restart [название сервиса] - Перезапускает службу (останавливает, затем запускает).
  • dinitctl status [название сервиса] - Показывает текущее состояние службы (запущена, остановлена, PID процесса и т.д.).
  • dinitctl list - Отображает список всех известных dinit служб и их текущее состояние.
  • dinitctl reload [название сервиса] - Перезагружает файл конфигурации (описания) службы из файла.

Перейдем к практике, по манипулируем ssh, для добавления сервиса в автозапуск следует выполнить команду ниже

sudo dinitctl enable sshd

что бы посмотреть состояние сервиса выполним следующую команду

sudo dinitctl status sshd

так же можно состояние посмотреть через list отфильтровав grep по названию сервиса, иначе покажет все сервисы в системе

sudo dinitctl list | grep ssh

думаю команды ниже уже знакомы, это перезапуск и просмотр состояния

sudo dinitctl restart sshd
sudo dinitctl status sshd
sudo dinitctl list | grep ssh

команда ниже, обратите внимание не перезапускает сам сервис, а заставляет перечитать конфиги, что иногда более удобно чем перезапуск сервиса.

sudo dinitctl reload sshd
sudo dinitctl list | grep ssh

довольно таки понятно, останавливаем сервис и просмотр статуса с фильтрацией через grep по названию сервиса.

sudo dinitctl stop sshd
sudo dinitctl list | grep ssh

команда ниже исключает сервис из автозагрузки.

sudo dinitctl disable sshd
sudo dinitctl list | grep ssh
Манипуляции с сервисом ssh в системе инициализации DInit
Манипуляции с сервисом ssh в системе инициализации DInit

Плюсы и минусы

  • Плюсы: Молниеносная загрузка, малый объем потребляемой памяти, высокая стабильность.
  • Минусы: Меньшее количество готовых скриптов для редкого софта по сравнению с OpenRC или runit (хотя база активно растет).

Dinit пока не является такой же массовой системой инициализации, как OpenRC или runit, но она активно набирает популярность в дистрибутивах, ориентированных на производительность и минимализм.

На сегодняшний день dinit используется или поддерживается в следующих дистрибутивах:

Дистрибутивы с поддержкой "из коробки"

  • Artix Linux: Один из главных популяризаторов dinit. Это один из немногих дистрибутивов, который предлагает официальные ISO-образы с уже настроенной средой на базе dinit.
  • Chimera Linux: Современный дистрибутив, использующий dinit в качестве основной и единственной системы инициализации по умолчанию. Он интересен тем, что сочетает ядро Linux с пользовательским окружением FreeBSD и компилятором LLVM.
  • eweOS: Легковесный дистрибутив на базе библиотеки musl, который также заявляет о поддержке dinit "из коробки".
  • antiX Linux: В последних версиях (например, antiX-26) dinit включен в список доступных систем инициализации наряду с runit и sysVinit.

Частичная поддержка и сообщество

  • Gentoo: Dinit доступен в репозиториях, однако он не является официальной системой инициализации и требует ручной настройки (в отличие от стандартного OpenRC).
  • Void Linux: Официально использует runit, но в сообществе существуют инструкции и успешные примеры ручного перевода системы на dinit.
  • PCLinuxOS: Хотя основной упор делается на независимость от systemd, dinit может встречаться в экспериментальных сборках или репозиториях.

За основу взято статьи и темы форумов по данной тематике, а так же собственный опыт и наработки.
За сим откланиваюсь...