🌐 🇵🇱 Polski · 🇬🇧 EN
The process of booting and initializing a system can seem quite complicated, especially if you have never dealt with it before. Nevertheless, it is an essential topic that comes in handy when encountering issues with the Linux environment startup.
When you turn on the computer, the first program to start is the BIOS, whose primary task is to test the system (POST - Power On Self Test), followed by the initialization of peripheral devices. The BIOS detects devices and takes control over them. Boot devices are contained within the (MBR - Master Boot Record), which is the primary boot record in the first sector of the hard drive. There, GRUB (Grand Unified Bootloader) searches for the label marked as default. Finally, the operating system kernel spawns the process responsible for launching the entire environment. To be able to troubleshoot environment startup issues, one must fully understand how services are started and stopped, how to add system services to the boot process, and how to manage the bootloader itself.
System startup process (booting).
When the environment starts, the GRUB tool displays a list of existing (installed) systems on the machine during startup, and if no selection is made within a specified time, it launches the system marked as default. Once started, the system kernel is initialized, which subsequently begins managing the devices that make up the given configuration. Depending on how GRUB has been configured, the startup process may be visible or invisible to the user. Everything that happens during the environment startup is logged to the file:
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have power installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
System startup process (booting).
When the environment starts, the GRUB tool displays a list of existing (installed) systems on the machine during startup, and if no selection is made within a specified time, it launches the system marked as default. Once started, the system kernel is initialized, which subsequently begins managing the devices that make up the given configuration. Depending on how GRUB has been configured, the startup process may be visible or invisible to the user. Everything that happens during the environment startup is logged to the file:
/var/log/dmesg
If the system drivers are in place, the system kernel invokes:
/sbin/init
Although performing hardware tests is not required for RedHat exams, in real-world scenarios, the command # lsmod may prove helpful.
Starting with RedHat version 6, a new booting tool called UpStart was introduced, replacing the traditionally used SysV init. The new solution was designed to launch the environment faster. Since many RedHat-based environments still run on version 5, it is worth knowing how to use SysV init.
The "init" program is the first process spawned by the system kernel. It acts as the "ignition point" of the system and is responsible for the subsequent stages of system startup, along with user-defined configurations. The configuration regarding system startup can be found in the file:
/etc/inittab
The content of the inittab file:
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have power installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
The content of the /etc/inittab file indicates that the default runlevel is 5, which signifies the system's graphical shell, from which programs located in /etc/rc.d/rc#.d are available.
To change the system runlevel in the aforementioned file, we find the line:
id:5:initdefault:
and change it to
id:3:initdefault:
After performing the above, the system will boot into console mode (terminal).
Comments