OpenRC (Русский) - ArchWiki

Jump to content
From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи OpenRC. Дата последней синхронизации: 3 февраля 2016. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- eudev
- init
- SysVinit

Важно: Arch Linux официально поддерживает только systemd. При обращении за поддержкой, пожалуйста, укажите, что пользуетесь OpenRC

OpenRC - менеджер служб, поддерживаемый разработчиками Gentoo. Это система инициализации на основе зависимостей, которая работает вместе с программой инициализации SysVinit.

## Установка

OpenRC и сопутствующие пакеты доступны в AUR. Для получения подробной информации о компонентах инициализации смотрите Init.

Установите пакет openrcAUR или openrc-gitAUR. С версии 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 смотрите:

- руководство OpenRC (Англ.)
- миграция на OpenRC (Англ.)
- gentoo wiki.

### Подготовка

Смотрите 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"

Сетевой сервис добавляется в загрузочный уровень по умолчанию, так что дальнейшие действия не требуются.

Примечание: Вы также можете воспользоваться NetworkManager, dhcpcd или netcfgAUR включая соответствующие сервисы. netcfgAUR имитирует поведение netctl (смотрите [2] если вы хотите включать профили соединения при загрузке - требующие `wpa_actiond`). Вы можете проконсультироваться с официальной документацией или старой wiki документацией (последняя версия 2012-05-13)

### Логи загрузки

Чтобы включить ведение журнала загрузки, раскомментируйте строку `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`.

Смотрите [3] и 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`

Примечание: Эта проблема проявляется только если ваш tmp примонтирован как tmpfs.

### Не работает отключение 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. [4] Он содержит файл `/etc/sysctl.conf`, который удалён в Arch. [5]

Чтобы предотвратить ошибку "файл не найден", создайте файл:

    # 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)

## Смотрите также

- Реально ли установить и пользоваться Arch без systemd?
- Wikipedia OpenRC
- Gentoo wiki
- OpenRC for Arch Linux - sourceforge repository
- Forum thread about OpenRC in Arch
- Blog: OpenRC on Arch Linux
- Manjaro wiki

Category:

- Init (Русский)

Hidden category:

- Pages with broken package links