Customizing runlevels in Debian

Customizing runlevels is an advanced system administration task.


The following advice holds for most services. To enable service service in runlevel R create the symbolic link /etc/rcR.d/Sxyservice with target ../init.d/service. The sequence number xy should be the sequence number that was assigned to the service when the package was installed.


To disable the service, rename the symbolic link so that its name begins with a K instead of with an S and its sequence number is 100 minus xy.


It is convenient to use a runlevel editor such as sysv-rc-conf or ksysv for these purposes.


It is possible to delete the S symlink for a service in a particular runlevel directory instead of renaming it. This does not disable the service but leaves it in a "floating" state as far as the sysv-rc init system is concerned: on runlevel changes the service will be neither started nor stopped but will be left as it was, whether running or not running. Note, however, that a service left in such a floating state will be started if its package is upgraded whether or not it was running before the upgrade. This is a known shortcoming of the current Debian system. Note also that you should retain a service's K symlinks in runlevels 0 and 6. If you delete all the symlinks for a service then on upgrade the service's package will restore the symlinks to their factory default state.


It is not advisable to make any changes to symlinks in /etc/rcS.d/.