OpenRC and runit: Interoperability question on migrating service packages
0 reputation · 07 Mar 2025, 17:00 UTC
0 reputation · 07 Mar 2025, 17:00 UTC
In an Artix Linux installation that initially uses OpenRC, an administrator wants to switch to runit while keeping existing services operational.
Artix packages are split by init suffixes (e.g., cronie-openrc vs. cronie-runit). Mixing packages from different init families is unsupported, and there is no documented in‑place migration path. Systemd‑dependent services such as elogind or seatd may behave differently under each supervisor. The repository layout places Artix’s own repos before any Arch repos, which affects package resolution during the transition.
-openrc and -runit service packages, or does Artix require a purge of one init family before the other can be used?There is no officially supported converter that turns OpenRC service scripts into runit run scripts. On Artix, migration means replacing every -openrc service package with its -runit counterpart in a single pacman transaction, installing the runit base, and then pointing the bootloader at the runit init. The two init families' service packages conflict with each other, so coexistence is not a supported state — pacman will force a replacement rather than let both live side by side.
Confirmed by Artix's packaging design: service packages are split per init (cronie-openrc vs. cronie-runit), the variants declare mutual conflicts, and mixing families across the system is unsupported. Assumed and worth verifying against the current Artix wiki before you start: exact package names for the runit base (e.g., runit plus its rc/meta packages), the runsvdir-managed directory layout (commonly /run/runit/service or /etc/runit/runsvdir/current), and the exact init= path. These details have changed over time, so treat the wiki as authoritative.
pacman -Qs openrc. This list is your replacement checklist./etc/pacman.conf. Pulling a service from Arch can drag in systemd-linked variants that will not run under runit.-openrc package for its -runit equivalent, e.g. pacman -S runit cronie-runit elogind-runit ... and let pacman remove the conflicting OpenRC variants. Do not reboot mid-way; a half-migrated system may not boot cleanly.rc-update runlevel state does not carry over; runit enables services by symlinking service directories into the runsvdir-managed directory, so re-enable each service explicitly.init=/bin/runit-init — verify the path on your system) and reboot.Artix does not use systemd at all; elogind is the init-agnostic logind replacement and works under both supervisors. The catch is that its supervision package must match the active init: swap elogind-openrc for elogind-runit in the same transaction as everything else. The same applies to seatd if you use it. After reboot, verify with loginctl that a session is registered and that power/seat actions work.
After rebooting, check cat /proc/1/comm (should show runit), then sv status on the supervised service directory to confirm services came up. Before committing to the init= change, keep a fallback ready: a bootloader entry that still boots the old init, or live media so you can chroot in and repair package state. A wrong init= path is the most common way this migration leaves a system unbootable, and it is entirely recoverable if you prepared the fallback first.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.