Create the following directories and symbolic links:
# mkdir -p /etc/runit/runsvdir/default # mkdir -p /etc/runit/runsvdir/single # ln -s /etc/sv/getty-5 /etc/runit/runsvdir/single/ # ln -s default /etc/runit/runsvdir/currentCopy the contents of /var/service/ to /etc/runit/runsvdir/current/ and replace /var/service/ with a symbolic link:
# cp -pR /var/service/* /etc/runit/runsvdir/current/ # mv -f /var/service /var/service.old && \ ln -s /etc/runit/runsvdir/current /var/serviceYou have now created two runlevels: default and single. The current runlevel is default. It is safe to remove /var/service.old/ if you don't need it anymore.
Finally edit /etc/runit/2 to set the default runlevel when stage 2 starts:
$ cat /etc/runit/2 #!/bin/sh PATH=/command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin runsvchdir default >/dev/null exec env - PATH=$PATH \ runsvdir /var/service 'log: ...........................................................................................................................................................................................................................................................................................................................................................................................................'
# runsvchdir singleTo switch back to the default runlevel, do:
# runsvchdir defaultSee the runsvdir program for a description of what happens when runsvdir sees the directory changed. Note that there is no guarantee that all services from the previous runlevel will stop, the runsv processes have sent the service daemons a SIGTERM and wait for them to terminate. You can check the status of the previous runlevel through /etc/runit/runsvdir/previous/.
# mkdir /etc/runit/runsvdir/maintenanceAdd the services you want to run in the runlevel maintenance to the newly created directory, e.g.:
# ln -s /etc/sv/getty-5 /etc/runit/runsvdir/maintenance/ # ln -s /etc/sv/ssh /etc/runit/runsvdir/maintenance/ # ln -s /etc/sv/dnscache /etc/runit/runsvdir/maintenance/If you want to switch to the runlevel maintenance, do:
# runsvchdir maintenance