Diagnosing OpenRC Boot Failures on Artix Linux
Step‑by‑step diagnostic guide for OpenRC boot failures on Artix Linux, covering symptoms, causes, checks, fixes, and when to escalate.
18 Nov 2025, 19:56 UTC

Recognizable Condition
After the kernel finishes loading, the system drops to an emergency shell. You may see messages such as "OpenRC did not start", "/etc/rc.conf could not be parsed", or the prompt "(initramfs)" or "rootfs#" indicating that the init process never reached the normal runlevel.
Cause/Diagnostic Table
| Symptom | Likely Cause |
|---|---|
| Emergency shell with "OpenRC did not start" | Missing or corrupted OpenRC base packages (openrc, openrc-core) |
| Boot stops before any service messages, /etc/rc.conf parse error | Syntax error or invalid variable in /etc/rc.conf or a file in /etc/conf.d/ |
| System boots but stays in read‑only mode, rc‑scripts fail to write | Failed fsck leaving the root filesystem mounted read‑only |
| Services listed as "skipped" or absent in rc‑status, default runlevel missing | Incorrect default runlevel pointing to a non‑existent target |
Ordered Checks
- Boot from live media
Use an Artix Linux live ISO. Boot with
liveoptions, then open a terminal. You will need root privileges for the subsequent steps (sudo -ior login as root). - Mount the installed root partition
Identify the partition (e.g.,
/dev/sda2) withlsblkorfdisk -l. Mount it:mount /dev/sda2 /mntIf you have a separate boot partition, mount it as well (
mount /dev/sda1 /mnt/boot). - Chroot into the installed system
Prepare the chroot environment:
for i in /dev /dev/pts /proc /sys /run; do mount --bind $i /mnt$i; done chroot /mntInside the chroot, you are now running as root on the installed system.
- Verify OpenRC installation
Run
rc-status. If the command is not found or returns no services, the OpenRC package is missing or broken.To (re)install, use:
pacman -Sy openrc openrc-coreCheck that
/etc/init.d/rcexists after installation. - Inspect runlevel configuration
List the default runlevel symlinks:
ls -l /etc/runlevels/default/You should see links to
boot,sysinit, anddefault(or equivalent). If the target pointed to by/etc/runlevels/defaultdoes not exist, correct it:ln -sf /etc/runlevels/boot /etc/runlevels/default(Adjust according to your desired runlevel.)
- Test /etc/rc.conf syntax
Run OpenRC’s config test:
rc-config -tAny output indicates a parse error. Note the line number and file, then correct the syntax (e.g., missing quotes, stray characters).
- Check for read‑only root due to fsck
From the chroot, examine the mount flags:
mount | grep ' / 'If the output shows
ro,(read‑only), the filesystem check likely failed. Run a manual fsck:umount /mnt fsck -f /dev/sda2 mount /dev/sda2 /mnt chroot /mntAfter fsck completes without errors, remount read‑write and continue.
Fixes Tied to Findings
- Missing OpenRC: Install
openrcandopenrc-coreas shown in step 4. After installation, rerunrc-statusto confirm services appear. - Invalid runlevel: Recreate the missing symlink or adjust
/etc/rc.conf’src_defaultvariable to point to an existing runlevel directory (e.g.,rc_default="boot"). - Syntax error in config: Edit the offending file (usually
/etc/rc.confor a file under/etc/conf.d/) usingnanoorvim, fix the error, then runrc-config -tagain to verify it passes. - Read‑only root: Perform fsck as described in step 7. Ensure the journal is healthy; if the filesystem is severely corrupted, consider restoring from backup.
Escalation Criteria
If after completing the checks above the system still drops to the emergency shell, consider the following escalation steps:
- Re‑install the entire base system (
baseandbase-devel) from the live environment, preserving/etcand/homeif you have a backup. - Check hardware health (SMART status, memory test) because repeated fsck failures can indicate a failing disk.
- Seek assistance from the Artix community forums or IRC, providing the exact boot messages, output of
rc-config -t, and the contents of/etc/rc.confand/etc/conf.d/.
Practical Verification
After applying a fix, exit the chroot, unmount partitions, and reboot:
exit
umount -R /mnt
reboot
Observe whether the system proceeds past the init stage and reaches a login prompt or graphical display manager. A successful boot will show OpenRC starting services (e.g., Starting sysinit...) and will not drop to the emergency shell.
Limitations
This guide assumes the root filesystem uses a standard Linux ext4, xfs, or btrfs layout that fsck can repair. It does not cover scenarios where the bootloader (GRUB, systemd‑boot) is misconfigured, nor does it address issues caused by custom kernel modules that panic before OpenRC starts. For those cases, additional bootloader or kernel debugging is required.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.