runlevel is a software configuration of the system which allows only a selected group of processes to exist.
What are the runlevels in Slackware ?
0 - Halt
1 - Single User Mode
2 - unused (but configured the same as runlevel 3)
3 - multiuser mode without display manager(default Slackware runlevel)
4 - Multi-user mode with X11 with KDM/GDM/XDM (session managers)
5 - unused (but configured the same as runlevel 3)
6 - Reboot
In Slackware Linux runlevel 1 is for maintenance (as on other Linux distributions). runlevels 2, 3 and 5 identically configured for a console (with all services active except the X Window System); and runlevel 4 adds the X Window System.
How to check the current runlevel of the system?
The runlevel command is used to find the current and previous runlevels on Unix-like operating systems.Type the following and press the Enter key to get the details of runlevel:
If there is no recorded previous runlevel the command will show ‘N’ and then the current runlevel.
Or one can use the command who with the argument -r to get the current runlevel details.
# who -r
run-level 3 2013-06-29 23:57 last=S
Which is the default runlevel and how to change it ?
The default runlevel in slackware is 3, which means system will boot in to a console. So the user have to enter username and password in console and then give the ‘startx’ command to start the x window system.
To change the runlevel one can follow any of the steps bellow :
1. Manually edit the /etc/inittab file. (To change the default runlevel)
This method need a reboot to make the change in effect. i.e, we know that the default runlevel in slackware is 3 and that’s why the system boot in to a console. But what if one need to boot his system to a started X window system ? for that the runlevel must be 4, right? So open the configuration file /etc/inittab in your favorite editor as root and find the following line.
and change 3 to 4, which is the runlevel for multiuser mode with X window system started. And then on the system will boot with X windows started. Do not set the default run level to 0 or 6, you can guess what will happen then.
2. init or telinit
Init can be in one of eight runlevels: 0-6 and S or s. The processes spawned by init for each of these runlevels are defined in the /etc/inittab file. The runlevel is changed by having a privileged user run telinit, which sends appropriate signals to init, telling it which runlevel to change to.
According to the manual page :
# init [ -a ] [ -s ] [ -b ] [ -z xxx ]
# telinit [ -t SECONDS ]
To execute these commands user need to login as root. To use these commands one can either use the console or a virtual console, using Ctrl+Alt+F (console 1, you use Ctrl+Alt+F1. To reach back to the window system use Ctrl+Alt+F7), if the user started x window system.
How to configure runlevels in Slackware
The init is the parent of all processes with a pid 1. Its primary purpose is to create processes from a script stored in the file /etc/inittab file. After init is invoked as the last step of the kernel boot sequence, it looks for the file /etc/inittab to see if there is an entry of the type initdefault. The initdefault entry determines the initial runlevel of the system. If there is no such entry (or no /etc/inittab at all), a runlevel must be entered at the system console. So entries in /etc/inittab controls autonomous processes required by the system by telling init what is the default runlevel, and what to do when entering or leaving each runlevel.
In Slackware /etc/rc.d/ contains a few scripts for several of the daemons or subsystems a system may run, and the scripts includes rc.0, rc.S, rc.K, rc.M, rc.6. Where rc.0 actually is a symlink to the rc.6 script because it’s so similar: rc.6 reboots the system except when invoked as rc.0, in which case it halts the system. The rc.? scripts do several things directly, as well as running the other scripts. So on Slackware, runlevels can be administered with an editor.