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[ссылка недействительна: package not found], файлы настроек будут установлены в /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)