How To Change Current/Default Runlevel in CentOS 8 / RHEL 8
Abstract: multi-user.target Current Runlevel The above output confirms that the system’s current default runlevel is multi-user.target (runlevel 3). Before maki
Since CentOS 7 / RHEL 7, system run levels are replaced with targets and are managed by systemd. Systemd targets are represented by target units and their configuration files end with .target extension.
This systemd target unit file contains other systemd units through a chain of dependencies. For example, the graphical.target which provides graphical console starts GNOME service (gdm.service) and activates the multi-user.target unit.
In this guide, we will see how to change the current/default runlevel in CentOS 8 / RHEL 8.
Available Targets / RunlevelsCentOS 8 / RHEL 8 comes with a number of predefined targets that are more or less similar to the standard set of runlevels found in CentOS 6 / RHEL 6.
Runlevel Target Units Description 0 runlevel0.target / poweroff.target Power off the system. 1 runlevel1.target / rescue.target Single User mode 2 runlevel2.target / multi-user.target multi-user mode. 3 runlevel3.target / multi-user.target multi-user mode. 4 runlevel4.target / multi-user.target multi-user mode. 5 runlevel5.target / graphical.target Graphical mode. 6 runlevel6.target / reboot.target Reboot the system. Change Default RunlevelThe default runlevel can be set either by using the systemctl command or making a symbolic link of runlevel targets to the default.target file.
1. Using systemctl Command
2. Making Symbolic link of runlevel targets
Using systemctl CommandLet’s check the current run level by running the following command.
systemctl get-default
Output:
graphical.targetCurrent Runlevel
The above output confirms that the system’s current default runlevel is graphical.target (runlevel 5).
To change the default runlevel to runlevel 3 (nothing but a multi-user.target), use the below command.
systemctl set-default multi-user.targetChange Default Runlevel
Reboot and check it out.
You can turn off runlevel 5 (graphical.target) and switch to the runlevel 3 (multi-user.target) in the current session without rebooting the systemreboot
Verify that the default runlevel is runlevel 3 (multi-user.target) post the reboot.
systemctl get-default
Output:
multi-user.targetRunlevel After Change Making Symbolic Link of target
Check the current runlevel.
systemctl get-default
Output:
multi-user.targetCurrent Runlevel
The above output confirms that the system’s current default runlevel is multi-user.target (runlevel 3).
Before making the symbolic link, let’s list out the runlevel files in the systemd directory.
ls /lib/systemd/system/runlevel*target -lRunlevel Files
At this time, the default runlevel is multi-user.target (runlevel 3). Issue the following command to make a symbolic link of runlevel5.target to the default.target file.
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
or
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
Reboot the server and check it out.
You can also switch to the runlevel 5 (graphical.target) get the graphical console in the current session without rebooting the systemreboot
Verify that the default runlevel is runlevel 5 (graphical.target) post the reboot.
systemctl get-default
Output:
graphical.targetRunlevel After Change Change Current Runlevel
You can switch the current runlevel with the systemctl isolate <name.target> command in the session. To invoke multi-user.target / graphical.target, use the below command.
systemctl isolate graphical.target
OR
systemctl isolate multi-user.target
Conclusion
That’s All. I hope this post helped you to change the current/default runlevel in CentOS 8 / RHEL 8. Please share your feedback in the comments section.