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

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

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая шпаргалка по системе инициализации OpenRC в контексте Artix Linux, со всевозможными мыслями и дополнениями. OpenRC - это система инициализации на основе зависимостей, изначально разработанная для дистрибутива Gentoo, но сейчас доступная во многих других Linux-дистрибутивах, например таких как Alpine Linux, Artix и Devuan. Основные характеристики системы инициализации OpenRC Почему OpenRC? OpenRC часто выбирают пользователи, которые ценят минимализм, предсказуемость классических Linux-систем и хотят иметь полный контроль над процессами без лишних надстроек. OpenRC рассмотрим в контексте Artix Linux, имеет свои особенности в управлении процессов, связанные с тем, что этот дистрибутив основан на Arch Linux, но полностью очищен от systemd. Установка сервисов. Главное отличие в Artix сервисы не поставляются внутри основного пакета. Чтобы получить init-скрипт, нужно установить отдельный п

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

OpenRC - это система инициализации на основе зависимостей, изначально разработанная для дистрибутива Gentoo, но сейчас доступная во многих других Linux-дистрибутивах, например таких как Alpine Linux, Artix и Devuan.

Основные характеристики системы инициализации OpenRC

  • Гибридная роль: Традиционно OpenRC работает как менеджер сервисов «поверх» программы инициализации (например, /sbin/init из пакета SysVinit), но в последних версиях получила собственный компонент openrc-init.
  • Управление зависимостями: Она автоматически определяет порядок запуска служб на основе их связей, что упрощает настройку по сравнению с классическим SysVinit.
  • Параллельный запуск: Поддерживает одновременный запуск нескольких сервисов, если это позволяют их зависимости, что ускоряет загрузку системы.
  • Концепция Runlevels: Использует уровни выполнения для группировки сервисов (например, boot для базовых компонентов, default для обычного режима работы).

Почему OpenRC? OpenRC часто выбирают пользователи, которые ценят минимализм, предсказуемость классических Linux-систем и хотят иметь полный контроль над процессами без лишних надстроек.

OpenRC рассмотрим в контексте Artix Linux, имеет свои особенности в управлении процессов, связанные с тем, что этот дистрибутив основан на Arch Linux, но полностью очищен от systemd.

Установка сервисов. Главное отличие в Artix сервисы не поставляются внутри основного пакета. Чтобы получить init-скрипт, нужно установить отдельный пакет с суффиксом -openrc.

Например для SSH следует установить основной пакет openssh и openssh-openrc в котором находятся механизмы (скрипты) управления сервисом такие как запуск, остановка и статус сервиса:

sudo pacman -S openssh openssh-openrc

далее на примере его будем разбираться

установка ssh в Artix Linux
установка ssh в Artix Linux

Если нужно передать специфические флаги запуска, не редактируйте скрипты в /etc/init.d/. Вместо этого ищите файл с таким же названием в /etc/conf.d/. Подобное утверждение относится и к другим сервисам которые надо предварительно конфигурировать.

Для наглядности сделал скриншот

init-скрипт запуска ssh и конфиг запуска ssh, именно запуска не путайте, конфиг самого ssh находится в /etc/ssh/
init-скрипт запуска ssh и конфиг запуска ssh, именно запуска не путайте, конфиг самого ssh находится в /etc/ssh/

Без установки соответствующего -openrc пакета команда rc-service не найдет скрипт в /etc/init.d/.

Уровни запуска (Runlevels). OpenRC в Artix использует стандартную схему уровней, но важно знать, куда именно добавлять службы:

  • sysinit: Низкоуровневая инициализация, обычно не правится вручную.
  • boot: Службы, необходимые для монтирования файловых систем и настройки ядра.
  • default: Основной уровень для всех пользовательских программ например сеть, звук, графический вход.

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

Синтаксис команд:
sudo rc-update add <имя> default - Добавить в автозагрузку
sudo rc-update del <имя> default - Убрать из автозагрузки
sudo rc-service <имя> start - Запустить сервис
sudo rc-service <имя> stop - Остановить сервис
sudo rc-service <имя> status - Состояние сервиса
rc-status - Показать статус текущего уровня
rc-status --crashed - Найти упавшие службы

команд ни так уж и много, но все же практика не помешает

rc-status

показала все сервисы которые запущены, система чистая так что их тут не много

rc-status --crashed

как видим из выхлопа команды есть один процесс который упал, видимо это мои прошлые опыты, хотя он же и запущен

статусы процессов
статусы процессов
sudo rc-update add sshd default

выполнив команду выше добавим сервис sshd в автозапуск в основной уровень запуска пользовательских процессов, после перезагрузки системы процесс сразу же запустится либо же запустим командой ниже

sudo rc-service sshd start

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

sudo rc-status | grep sshd

выхлоп команды обработать grep по процессу sshd кроме состояния получим еще и время работы процесса, или

sudo rc-service sshd status

в этом случае скажет что сервис запущен

запуск ssh сервиса
запуск ssh сервиса

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

sudo rc-service sshd stop

команда говорит сама за себя, останавливает сервис. Убираем сервис из автозапуска командой

sudo rc-update del sshd default

после этого сервис не будет запускаться при старте системы.

Остановка ssh сервиса
Остановка ssh сервиса

В целом управление процессами в OpenRC не особо сложна, но все же нюансы всегда есть. Например может потребоваться запустить сервис от имени пользователя. Да, OpenRC это позволяет команды будут выглядеть следующим образом

rc-update add <имя> default --user - Добавить в автозагрузку
rc-update del <имя> default --user- Убрать из автозагрузки
rc-service <имя> start --user - Запустить сервис
rc-service <имя> stop --user - Остановить сервис
rc-service <имя> status --user - Состояние сервиса

используется без sudo, но добавляется параметр --user

Если нет пакета -openrc. Да и такое может быть. Если устанавливаете пакет из AUR, ищите версию, в названии которой есть -openrc. Если такой нет, вам придется писать init-скрипт самостоятельно или искать его в репозиториях Gentoo.

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