Skip to content

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 below) may be created by using:

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