OpenRC
Related articles
OpenRC is a service manager maintained by the Gentoo developers. OpenRC is dependency based and works with the system provided init program, normally SysVinit.
Contents
Installation
OpenRC and accompanying packages are available in the AUR. For details on init components, see Init.
Install either the openrcAUR or openrc-gitAUR package. openrc-sysvinitAUR or busybox are used as the init process. Service files are available from the openrc-arch-services-gitAUR package.
To maintain compability with initscripts-forkAUR, configuration files are installed to /etc/openrc/
. The sysvinit init binary is installed to /usr/bin/init-openrc
for compability with systemd-sysvcompat or similar packages.
Booting
For booting with OpenRC add init=/usr/bin/init-openrc
to the kernel parameters. To switch back to systemd, remove the parameter again.
The /etc/openrc/conf.d
directory, and the /etc/openrc/rc.d
file is used for configuration.
Configuration
For general information on configuring OpenRC, see:
Preparation
See Init#Configuration.
Services
OpenRC services are enabled by issuing rc-update add service_name runlevel
as root. It is recommended to at least enable the following services:
Service name | Runlevel | Description |
---|---|---|
udev | sysinit | Device hot-plugging |
alsa | default | ALSA state |
acpid | default | ACPI events |
dbus | default | Messaging bus |
dcron | default | Scheduling |
syslog-ng | default | System logs |
See also Native services and Daemons.
Network
The network is configured through newnet
. [1] Modify the /etc/openrc/conf.d/network
file; both the ip
(iproute2) and the ifconfig
(net-tools) commands are supported. Below is an example configuration using ip
.
ip_eth0="192.168.1.2/24" defaultiproute="via 192.168.1.1" ifup_eth0="ip link set \$int mtu 1500"
The network service is added to the boot runlevel by default, so no further action is required. See Network configuration for general networking information.
Boot logs
To enable boot logging, uncomment the rc_logger="YES"
line in /etc/openrc/rc.conf
. When enabled, boot logs are stored in /var/log/rc.log
.
Hostname
OpenRC sets the hostname from /etc/openrc/conf.d/hostname
. The file looks as follows:
# Set to the hostname of this machine hostname="myhostname"
Kernel modules
OpenRC uses /etc/openrc/conf.d/modules
instead of /etc/modules-load.d
. For example:
/etc/openrc/conf.d/modules
# You should consult your kernel documentation and configuration # for a list of modules and their options. modules="vboxdrv acpi_cpufreq"
Locale
Keyboard layout can be configured via /etc/openrc/conf.d/keymaps
and /etc/openrc/conf.d/consolefont
. You can also configure the settings through the /etc/locale.conf
file, which is sourced via /etc/profile.d/locale.sh
.
See [3] and Locale for details.
DM-Crypt
See DM-Crypt - Gentoo-en for automatically mounting encrypted LVM or other block devices.
Tips and tricks
Quiet booting
To hide boot messages from OpenRC, you can edit /etc/inittab
and add --quiet
to every openrc command. For further information check with $ openrc -h
.
Troubleshooting
Error while unmounting /tmp
When shutting the system down, you might get an error message such as
* Unmounting /tmp ... * in use but fuser finds nothing [ !! ]
This can be fixed by adding
no_umounts="/tmp"
to /etc/openrc/conf.d/localmount
Disabling IPv6 does not work
One option is to add:
# Disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1
in a file with a .conf
extension under /etc/openrc/sysctl.d
During shutdown remounting root as read-only fails
If the above happens, edit the /etc/openrc/init.d/mount-ro
file and put:
telinit u
after the following line:
# Flush all pending disk writes now sync; sync
/etc/sysctl.conf not found
By default, sysctl --system
is called to load the sysctl configuration. [4] This includes the /etc/sysctl.conf
file, which was removed from Arch. [5]
To prevent a missing file error, create the file:
# touch /etc/sysctl.conf
opentmpfiles-setup failed to start
On booting openrc you may see lines like these :
* 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
This is caused by /usr/lib/tmpfiles.d/journal-nocow.conf
using options that are only valid if journal is on a btrfs filesystem.
See https://github.com/OpenRC/opentmpfiles/issues/2 for details
A workaround is to create an empty /etc/tmpfiles.d/journal-nocow.conf to override the settings.
Using OpenRC with a desktop environment
If using OpenRC with a desktop environment, ConsoleKit may help. Install the service to /etc/openrc/init.d
, and enable it:
# rc-update add consolekit default
See ConsoleKit for more information.