OpenRC
OpenRC is a dependency-based init system for Unix-like systems that maintains compatibility with the system-provided init system, normally located in /sbin/init
Configuration file is stored in
vim /etc/rc.conf
Create backup of rc.conf
cp -v /etc/rc.conf /etc/rc.conf.bak
Show status with servicelist
rc-status --servicelist
Show list of runlevels (similiar as ls /etc/runlevels)
rc-status --list
shutdown
sysinit
boot
default
nonetwork
Use rc-update show -v to display all available init scripts and their current runlevel
rc-update show -v
Additional runlevels (indicated as
install -d /etc/runlevels/<runlevel>
Add syslog-ng to runlevel
rc-update add syslog-ng
Add syslog-ng to runlevel at boot
rc-update add syslog-ng biit
Remove syslog-ng from runlevel
rc-update del eggdrop
* service eggdrop deleted from runlevel default
Find symlinks under runlevel
find /etc/runlevels -type l
Find broken symlinks in /etc/runlevels
find /etc/runlevels -xtype l
Delete broken symlinks in /etc/runlevels
find /etc/runlevels -xtype l -delete
Folders in /etc/runlevels
ls -l /etc/runlevels/
total 20
drwxr-xr-x 2 root root 4096 Jan 9 18:52 boot
drwxr-xr-x 2 root root 4096 Jan 29 15:33 default
drwxr-xr-x 2 root root 4096 Jan 9 18:52 nonetwork
drwxr-xr-x 2 root root 4096 Jan 9 18:52 shutdown
drwxr-xr-x 2 root root 4096 Jan 9 18:52 sysinit
Show unused runlevels
$ rc-status --unused
ip6tables [ stopped ]
dbus [ started ]
mit-krb5kdc [ stopped ]
mit-krb5kadmind [ stopped ]
display-manager-setup [ started ]
virtlogd [ started ]
agetty [ stopped ]
modemmanager [ stopped ]
osclock [ stopped ]
gpm [ stopped ]
cupsd [ stopped ]
iptables [ stopped ]
dhcpcd [ stopped ]
elogind [ stopped ]
rtorrent [ stopped ]
runsvdir [ stopped ]
Runlevels at boot can be found in /etc/runlevels/boot
ls -l /etc/runlevels/boot/
total 0
lrwxrwxrwx 1 root root 18 Jan 9 18:48 binfmt -> /etc/init.d/binfmt
lrwxrwxrwx 1 root root 20 Jan 9 18:48 bootmisc -> /etc/init.d/bootmisc
lrwxrwxrwx 1 root root 18 Jun 13 2025 cronie -> /etc/init.d/cronie
lrwxrwxrwx 1 root root 16 Jan 9 18:48 fsck -> /etc/init.d/fsck
lrwxrwxrwx 1 root root 20 Jan 9 18:48 hostname -> /etc/init.d/hostname
lrwxrwxrwx 1 root root 19 Jan 9 18:48 hwclock -> /etc/init.d/hwclock
lrwxrwxrwx 1 root root 19 Jan 9 18:48 keymaps -> /etc/init.d/keymaps
lrwxrwxrwx 1 root root 22 Jan 9 18:48 localmount -> /etc/init.d/localmount
lrwxrwxrwx 1 root root 20 Jan 9 18:48 loopback -> /etc/init.d/loopback
lrwxrwxrwx 1 root root 19 Jan 9 18:48 modules -> /etc/init.d/modules
lrwxrwxrwx 1 root root 16 Jan 9 18:48 mtab -> /etc/init.d/mtab
lrwxrwxrwx 1 root root 18 Jan 9 18:48 procfs -> /etc/init.d/procfs
lrwxrwxrwx 1 root root 16 Jan 9 18:48 root -> /etc/init.d/root
lrwxrwxrwx 1 root root 24 Jan 9 18:48 save-keymaps -> /etc/init.d/save-keymaps
lrwxrwxrwx 1 root root 29 Jan 9 18:48 save-termencoding -> /etc/init.d/save-termencoding
lrwxrwxrwx 1 root root 19 Jan 9 18:48 seedrng -> /etc/init.d/seedrng
lrwxrwxrwx 1 root root 16 Jan 9 18:48 swap -> /etc/init.d/swap
lrwxrwxrwx 1 root root 18 Jan 9 18:48 sysctl -> /etc/init.d/sysctl
lrwxrwxrwx 1 root root 21 Jun 6 2025 syslog-ng -> /etc/init.d/syslog-ng
lrwxrwxrwx 1 root root 34 May 11 2025 systemd-tmpfiles-setup -> /etc/init.d/systemd-tmpfiles-setup
lrwxrwxrwx 1 root root 24 Jan 9 18:48 termencoding -> /etc/init.d/termencoding
Show current status for runlevel
$ rc-status
Runlevel: default
NetworkManager [ started ]
libvirtd [ started ]
samba [ started ]
bluetooth [ started ]
syslog-ng [ started ]
cronie [ started ]
netmount [ started ]
cpupower [ started ]
rclone-gdrive [ started ]
usbcrypt [ started ]
sshfs-server [ started ]
display-manager [ started ]
local [ started ]
Dynamic Runlevel: hotplugged
user.wuseman [ started 00:09:10 (0) ]
Dynamic Runlevel: needed/wanted
dbus [ started ]
virtlogd [ started ]
display-manager-setup [ started ]
Show current setup of runlevels
$ rc-update
NetworkManager | default
binfmt | boot
bluetooth | default
bootmisc | boot
cgroups | sysinit
cpupower | default
cronie | boot default
devfs | sysinit
display-manager | default
dmesg | sysinit
fsck | boot
hostname | boot
hwclock | boot
keymaps | boot
killprocs | shutdown
kmod-static-nodes | sysinit
libvirtd | default
local | default nonetwork
localmount | boot
loopback | boot
modules | boot
mount-ro | shutdown
mtab | boot
netmount | default
procfs | boot
rclone-gdrive | default
root | boot
samba | default
save-keymaps | boot
save-termencoding | boot
savecache | shutdown
seedrng | boot
sshfs-server | default
swap | boot
sysctl | boot
sysfs | sysinit
syslog-ng | boot default
systemd-tmpfiles-setup | boot
systemd-tmpfiles-setup-dev | sysinit
termencoding | boot
udev | sysinit
udev-trigger | sysinit
usbcrypt | default
Enable a service for a specifik user
rc-update --user add <service>
Check status for a process
rc-service syslog-ng status
Start a service
rc-service syslog-ng start
Stop a service
rc-service syslog-ng stop
Create log file for our boot
rc_logger="YES"
rc_log_path="/var/log/rc.log"
Set parallel jobs
rc_parallel=YES
Check Installed and Running Cron Services
rc-service -l | grep -E 'cron|cronie|fcron|dcron|vixie'
Inspect Cron Service Availability and Status
rc-service cron status 2>/dev/null || rc-service cronie status 2>/dev/null
How to create a script in /etc/init.d and run it with rc-update add name
Resource(s)