OpenRC (Русский)
OpenRC - менеджер служб, поддерживаемый разработчиками Gentoo. Это система инициализации на основе зависимостей, которая работает вместе с программой инициализации SysVinit.
Установка
OpenRC и сопутствующие пакеты доступны в AUR. Для получения подробной информации о компонентах инициализации смотрите Init.
Установите пакет openrcAUR или openrc-gitAUR[ссылка недействительна: package not found]. С версии 0.25 OpenRC предоставляет собственный init (/usr/bin/openrc-init
). В качестве альтернативы можно использовать busybox. Файлы сервисов содержатся в пакете openrc-arch-services-gitAUR.
Для поддержки совместимости с initscripts-forkAUR, файлы настроек будут установлены в /etc/openrc/
. Бинарный sysvinit init устанавливается в /usr/bin/openrc-init
для совместимости с systemd-sysvcompat или подобных пакетов.
Загрузка
Для загрузки с OpenRC, добавьте init=/usr/bin/openrc-init
в параметры ядра. Чтобы вернуться к systemd, удалите этот параметр ядра.
Каталог /etc/openrc/conf.d
, и файл /etc/openrc/rc.d
используются для настройки.
Использование
В этом разделе проводится параллель между systemd и другими системами init.
Вы можете опустить расширения .service
и .target
, особенно при временном редактировании kernel parameters.
systemd | SysVinit | OpenRC | Description |
---|---|---|---|
systemctl list-units |
rc.d list |
rc-status |
Список состояний запущенных служб. |
systemctl --failed |
rc-status --crashed |
Проверка отказавших служб. | |
systemctl --all |
rc-update -v show |
Отображение всех доступных служб. | |
systemctl (start, stop, restart, status) daemon.service |
rc.d (start, stop, restart) daemon |
rc-service daemon (start, stop, restart, status) |
Изменить состояние службы. |
systemctl (enable, disable) daemon.service |
chkconfig daemon (on, off) |
rc-update (add, del) daemon |
Включить или выключить службу. |
systemctl daemon-reload |
chkconfig daemon --add |
Создание или изменение конфигурации. |
Настройка
Для получения общей информации о настройке OpenRC смотрите:
Подготовка
Смотрите Init#Configuration.
Службы
Службы OpenRC включаются от имени суперпользователя (root) используя rc-update add имя службы runlevel
. По крайней мере рекомендуется включить следующие службы:
Имя службы | Runlevel | Описание |
---|---|---|
udev | sysinit | Устройство горячего подключения |
alsa | default | ALSA state |
acpid | default | ACPI events |
dbus | default | Шина сообщений |
dcron | default | Планировщик |
syslog-ng | default | Системные журналы (логи) |
Смотрите также Native services и демоны.
Сеть
Для общей информации по сети смотрите Network configuration.
Сеть настраивается с помощью newnet
. [1] Измените файл /etc/openrc/conf.d/network
; поддерживаются обе команды ip
(iproute2) и ifconfig
(net-tools). Ниже приведён пример с использованием ip
.
ip_eth0="192.168.1.2/24" defaultiproute="via 192.168.1.1" ifup_eth0="ip link set \$int mtu 1500"
Сетевой сервис добавляется в загрузочный уровень по умолчанию, так что дальнейшие действия не требуются.
Логи загрузки
Чтобы включить ведение журнала загрузки, раскомментируйте строку rc_logger="YES"
в /etc/openrc/rc.conf
.
Когда он включен, журналы загрузки хранятся в /var/log/rc.log
Имя хоста (Hostname)
OpenRC устанавливает имя хоста из /etc/openrc/conf.d/hostname
. Файл выглядит следующим образом:
# Set to the hostname of this machine hostname="myhostname"
Модули ядра
OpenRC использует /etc/openrc/conf.d/modules
вместо /etc/modules-load.d
. Например:
/etc/openrc/conf.d/modules
# Вы должны ознакомится с настройками и документацией вашего ядра # для списка модулей и их параметров. modules="vboxdrv acpi_cpufreq"
Локаль
Раскладка клавиатуры настраивается с помощью /etc/openrc/conf.d/keymaps
и /etc/openrc/conf.d/consolefont
. Вы также можете настроить параметры через файл /etc/locale.conf
, который получается с помощью /etc/profile.d/locale.sh
.
Смотрите [2] и Locale для подробностей.
Советы и рекомендации
Тихая загрузка
Чтобы скрыть загрузочные сообщения из OpenRC, вы можете отредактировать /etc/inittab
и добавить --quiet
к каждой команде openrc. Дополнительную информацию можно найти в $ openrc -h
.
Решение проблем
Ошибка при размонтировании /tmp
При выключении системы, вы можете получить сообщение об ошибке, например:
* Unmounting /tmp ... * in use but fuser finds nothing [ !! ]
Это можно исправить путем добавления
no_umounts="/tmp"
в /etc/openrc/conf.d/localmount
Не работает отключение IPv6
Одним из вариантов является добавление:
# Disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1
в файле с расширением .conf
в /etc/openrc/sysctl.d
Во время выключения, и перемонтирования раздела root, происходят ошибки чтения
Если такое происходит, отредактируйте файл /etc/openrc/init.d/mount-ro
и поместите:
telinit u
после следующей строки:
# Flush all pending disk writes now sync; sync
Не найден /etc/sysctl.conf
По умолчанию, sysctl --system
вызывается для загрузки настройки sysctl. [3] Он содержит файл /etc/sysctl.conf
, который удалён в Arch. [4]
Чтобы предотвратить ошибку "файл не найден", создайте файл:
# touch /etc/sysctl.conf
opentmpfiles-setup не удалось запустить
При загрузке openrc вы можете увидеть такие строки, как :
* Setting up tmpfiles.d entries ... chattr: Operation not supported while setting flags on /var/log/journal chattr: No such file or directory while trying to stat /var/log/journal/%m chattr: Operation not supported while setting flags on /var/log/journal/remote [ !! ] ERROR: opentmpfiles-setup failed to start
Это вызвано тем, что /usr/lib/tmpfiles.d/journal-nocow.conf
использует опции, которые действительны только если журнал находится на файловой системе btrfs.
Подробности см. на https://github.com/OpenRC/opentmpfiles/issues/2.
Обходным решением является создание пустого /etc/tmpfiles.d/journal-nocow.conf для переопределения настроек.
Использование OpenRC с окружением рабочего стола (DE)
Если используется OpenRC с окружением рабочего стола, может помочь ConsoleKit. Установите сервис в /etc/openrc/init.d
, и включите его:
# rc-update add consolekit default
Для большей информации смотрите ConsoleKit.
Возвращение к systemd
В большинстве случаев возврат к systemd не вызывает затруднений. По сути, это обратная процедура перехода на OpenRC, при этом следует обратить внимание на следующее:
- Удаление или иное редактирование параметра
init=
в командной строке ядра. - Замена любых пакетов с поддержкой OpenRC или без нее на их эквиваленты (например, замена dbus-nosystemdAUR[ссылка недействительна: package not found] на dbus)