In CentOS 7 / RHEL 7, systemd uses targets instead of run-levels. /etc/inittab
is no more used by systemd to change the run levels.
This guide will help you to set default runlevel in CentOS 7 / RHEL 7.
Change default runlevel
The default runlevel can be set either by using the systemctl command or making a symbolic link of runlevel targets to the default target file.
Method 1
Let’s check the current run level by issuing the following command.
systemctl get-default
Output:
runlevel5.target
Before changing the default runlevel, we have to check out the available targets.
systemctl list-units --type=target
The output will look like below.
UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network.target loaded active active Network nfs.target loaded active active Network File System Server paths.target loaded active active Paths remote-fs.target loaded active active Remote File Systems slices.target loaded active active Slices sockets.target loaded active active Sockets swap.target loaded active active Swap sysinit.target loaded active active System Initialization timers.target loaded active active Timers LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type.
Change default to runlevel 3 (nothing but a multi-user.target).
systemctl set-default multi-user.target
Confirm the default runlevel.
systemctl get-default
Output:
multi-user.target
Reboot and check it out.
reboot
Method 2
You may be noticed a below output when the systemctl set-default multi-us er.target command is issued.
rm '/etc/systemd/system/default.target' ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
What the command is done is nothing but making a symbolic link of runlevel targets to the default target file.
Check the current level.
systemctl get-default
Output:
multi-user.target
Before making the symbolic link, let’s list out the files in the systemd directory.
ls /lib/systemd/system/runlevel*target -l
The output will look like below:
lrwxrwxrwx. 1 root root 15 Aug 3 13:44 /lib/systemd/system/runlevel0.target -> poweroff.target lrwxrwxrwx. 1 root root 13 Aug 3 13:44 /lib/systemd/system/runlevel1.target -> rescue.target lrwxrwxrwx. 1 root root 17 Aug 3 13:44 /lib/systemd/system/runlevel2.target -> multi-user.target lrwxrwxrwx. 1 root root 17 Aug 3 13:44 /lib/systemd/system/runlevel3.target -> multi-user.target lrwxrwxrwx. 1 root root 17 Aug 3 13:44 /lib/systemd/system/runlevel4.target -> multi-user.target lrwxrwxrwx. 1 root root 16 Aug 3 13:44 /lib/systemd/system/runlevel5.target -> graphical.target lrwxrwxrwx. 1 root root 13 Aug 3 13:44 /lib/systemd/system/runlevel6.target -> reboot.target
As per the previous step, the current default run level 3. Issue the following command to make a symbolic link of runlevel5.target to 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
Again check the current level.
systemctl get-default
Output:
runlevel5.target
Now the default runlevel is 5 (graphical mode), reboot the server and check it out.
reboot
Conclusion
That’s All. I hope this post helped you to change the default runlevel in CentOS 7 / RHEL 7. We welcome your comments.
Source : itzgeek