4.5 KiB
title, layout, parent, nav_order
| title | layout | parent | nav_order |
|---|---|---|---|
| OpenRC | default | Init Systems | 1 |
OpenRC
OpenRC is a traditional init system used by Gentoo, Artix Linux, Devuan, Alpine Linux, and other non-systemd distributions. It is well-established, actively maintained, and provides a balance of simplicity and feature completeness.
Note: Earlier Euri Linux builds shipped OpenRC as an install-time option, but it conflicted with dinit during the installer flow (services didn't enable correctly). OpenRC is no longer an install-time option. On an already-installed system, manual switching via
rc-update addworks fine — see Changing init.
Comparison with systemd
| Feature | systemd | OpenRC |
|---|---|---|
| Log storage | Binary journal (journalctl) |
Plain text files (/var/log/) |
| Service control | systemctl start/stop/enable |
rc-service start/stop, rc-update add/del |
| Dependency handling | Automatic, parallel | Manual (need/use/before/after) |
| Configuration format | .service unit files (INI-like) |
Shell scripts (/etc/init.d/) |
| Binary footprint | ~80+ binaries | ~15 binaries |
| Scope | Init + logind + resolved + timedated + networkd + more | Init only |
What changes for you as a user?
Service management
| Task | systemd | OpenRC |
|---|---|---|
| Start a service | sudo systemctl start sshd |
sudo rc-service sshd start |
| Stop a service | sudo systemctl stop sshd |
sudo rc-service sshd stop |
| Enable at boot | sudo systemctl enable sshd |
sudo rc-update add sshd |
| Disable at boot | sudo systemctl disable sshd |
sudo rc-update del sshd |
| Check status | systemctl status sshd |
rc-service sshd status |
| List enabled | systemctl list-unit-files --enabled |
rc-update show |
| View logs | journalctl -u sshd |
less /var/log/messages |
Key commands
# List all services with their runlevel
rc-status
# List enabled services
rc-update show
# Add a service to a runlevel
rc-update add <service> <runlevel>
# Remove a service
rc-update del <service> <runlevel>
# Start/stop/restart a service
rc-service <service> start
rc-service <service> stop
rc-service <service> restart
Runlevels in OpenRC work like directories under /etc/runlevels/:
/etc/runlevels/
├── boot # Low-level system services (filesystems, udev, etc.)
├── sysinit # System initialization (hwclock, hostname, etc.)
├── default # Normal boot services (NetworkManager, sshd, etc.)
└── shutdown # Shutdown services
Rationale for non-systemd
Euri Linux uses Dinit as its init system. The switch away from systemd was motivated by three factors:
-
Scope expansion — systemd has grown beyond process supervision to include logind, resolved, timedated, networkd, homed, and other subsystems. This consolidates OS management into a single project with an expanding scope.
-
SysV compatibility removal — systemd 260 (March 2026) removed
systemd-sysv-generator,rc-local.service, and related legacy compatibility code, breaking distributions that were not fully systemd-native. -
Age verification (PR #40954) — merged March 2026, this added
birthDatefields to userdb JSON for age verification compliance. While optional at the time of writing, the precedent raises concerns about future requirements.
When to use OpenRC
OpenRC is suitable for users who want a well-documented, traditional init system with explicit dependency management. Its shell-script-based service files are straightforward to write and debug. Users migrating from Gentoo, Alpine, or Devuan will find OpenRC familiar.
OpenRC does not include built-in process supervision. Users who want automatic service restart on crash should consider Runit or S6 instead.
Compatibility
Most desktop software is agnostic to the init system. Browsers, editors, games, and media players function identically regardless of what manages PID 1.
Software that does depend on systemd and will not function:
systemctl,journalctl,loginctl,timedatectl- GNOME (dropped non-systemd support upstream)
- Native
.serviceunit files (systemd-only format)
Logs are written to plain text files under /var/log/messages and can be read with any text viewer.