# OpenRC

Related articles

- eudev
- init
- init Rosetta
- SysVinit

Warning: Arch Linux only has official support for systemd. When using OpenRC, please mention so in support requests.

OpenRC is a service manager maintained by the Gentoo developers. OpenRC is dependency based and works with the system provided init program, normally SysVinit.

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

The factual accuracy of this article or section is disputed.

Reason: openrc-sysvinitAUR removes systemd-sysvcompat (Discuss in Talk:OpenRC#)

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:

- OpenRC manuals
- OpenRC migration
- gentoo wiki.

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

Note: You may also use NetworkManager, dhcpcd or netcfgAUR by enabling the respective services. netcfg mimics the netctl behaviour (see [2] if you want to enable profiles connection on booting - requires `wpa_actiond`). You could consult the official documentation or old wiki documentation (be aware of consulting version later than 2012-05-13)

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

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

Note: This problem occurs only if your tmp is mounted as a tmpfs.

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

### X server does not start unless user is root

With the Xorg release 1.16, X was made rootless by relying on systemd-login. Using `startx` will not work when running OpenRC as init system.

This can be solved by creating the `/etc/X11/Xwrapper.config` file with the contents:

    # Xorg.wraper configuration file
    needs_root_rights = yes

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

## See also

- Wikipedia:OpenRC
- Gentoo wiki
- Forum thread about OpenRC in Arch
- Blog: OpenRC on Arch Linux
- Manjaro wiki

Category:

- Boot process

Hidden category:

- Pages or sections flagged with Template:Accuracy