Install and Enable an OpenRC Service on Artix Linux
Install a daemon under OpenRC on Artix Linux, enable it in the default runlevel, and verify it starts after reboot.
13 May 2026, 20:18 UTC

Problem: a package installed under Artix does not start by itself
Artix Linux uses OpenRC as its init system instead of systemd. Installing a daemon with pacman places binaries and configuration files on the system, but it does not automatically register the daemon with OpenRC's runlevels. Without that step, the service will not start after reboot, and rc-service cannot manage it until an init script exists and is enabled.
Takeaway: install the package, confirm its OpenRC init script is present in /etc/init.d, add it to the default runlevel with rc-update add, then start it with rc-service.
Prerequisites
- Artix Linux installed with the OpenRC variant.
- Root access, either a root shell or
sudoon your user account. - The service package installed from the Artix repositories, for example
opensshfor the SSH daemon. - Confirm PID 1 is OpenRC, not systemd:
ps -p 1 -o comm=
Run this on the Artix host as any user. The expected result is openrc or sysvinit. If it returns systemd, this guide does not apply to your installation.
Procedure: enable an OpenRC service
This example uses sshd. Replace sshd with your service name throughout, and verify the exact init script name before proceeding because Artix is rolling and names can change between snapshots.
1. Install the package
sudo pacman -S openssh
Run as a user with sudo privileges, or as root without sudo. This installs the daemon and, for OpenRC Artix images, typically an init script at /etc/init.d/sshd.
2. Verify the init script
ls -l /etc/init.d/sshd
If the file is missing, the package may not provide an OpenRC script, or the script may have a different name. List /etc/init.d and search for the daemon name before continuing.
3. Add the service to the default runlevel
sudo rc-update add sshd default
This creates a symlink in the default runlevel so OpenRC starts sshd during boot. Run as root or with sudo.
4. Start the service now
sudo rc-service sshd start
This starts the daemon immediately without waiting for a reboot.
Expected checks
rc-update showlistssshdunder the default runlevel.rc-service sshd statusreports that the daemon is running.rc-statusshowssshdin the started services list after boot.
rc-update show | grep sshd rc-service sshd status rc-status
Run these as root or with sudo. If status reports stopped or not running, inspect the daemon's log file, often under /var/log, or run rc-service sshd start again and read any error message.
Verify persistence after reboot
Reboot the machine, then run:
rc-service sshd status
The service should still be running because it is enabled in the default runlevel. If it is not, confirm the symlink exists with rc-update show and check that the init script has not been removed by a package update.
Rollback and recovery
Enabling a service changes system state. To undo it:
sudo rc-service sshd stop sudo rc-update del sshd default
stop halts the daemon immediately. rc-update del removes it from the default runlevel so it will not start on the next boot.
Risk: removing sshd or networking from the default runlevel can lock out remote access. Keep a local console or Artix live USB available before disabling network or SSH services.
If a bad init script prevents boot, boot from Artix live media, mount the installed root partition, chroot into it, and either fix the script under /etc/init.d or remove the service from the default runlevel with rc-update del.
Limitations
- Artix is a rolling release; package names and init script names can change. Always verify the exact name in
/etc/init.dbefore runningrc-update add. - Do not maintain both a systemd unit file and an OpenRC init script for the same daemon. That can create duplicate listeners or conflicting state.
rc-servicecontrols the running state, but it does not edit the daemon's configuration files. Configuration changes usually require a manual restart withrc-service <service> restart.
Practical verification
After completing the procedure, run ps -p 1 -o comm= to confirm OpenRC is PID 1, then rc-update show to confirm the service appears in the default runlevel. Finally, check rc-service <service> status and rc-status after a reboot to confirm automatic startup.