Linux Boot Process Explained (RHEL 7, 8, and 9 Step-by-Step)

Understanding the Linux booting process is essential for every system administrator.
Whether you’re troubleshooting startup issues, tuning system performance, or studying for Red Hat certification exams, knowing how RHEL 7, 8, and 9 boot helps you grasp what happens behind the scenes before you even log in.

This guide walks you through each stage of the RHEL 7/8/9 boot process, from power-on to user login, in a clear, step-by-step manner.


1. Power-On Self-Test (POST)

The boot process starts the moment you power on your machine.
The system firmware — either BIOS (Legacy) or UEFI (Modern) — performs a Power-On Self-Test (POST) to verify that all critical hardware components such as memory, CPU, and storage devices are functioning correctly.

Once POST completes successfully, the firmware looks for a bootable device (e.g., HDD, SSD, or USB) based on the configured boot order.


2. Bootloader Stage – GRUB2

After identifying the bootable device, the firmware hands control to the bootloader, which is GRUB2 (GRand Unified Bootloader version 2) in RHEL 7, 8, and 9.

GRUB2’s job is to:

  • Load the Linux kernel into memory.
  • Load the initramfs (initial RAM filesystem).
  • Display the boot menu, allowing users to select the operating system or kernel version (useful when multiple kernels are installed).

The GRUB2 configuration file is stored in:

/boot/grub2/grub.cfg   (for BIOS systems)
or
/boot/efi/EFI/redhat/grub.cfg   (for UEFI systems)

3. Loading the Linux Kernel

Once the kernel entry is selected in the GRUB menu, GRUB2 loads the Linux kernel (vmlinuz-) into memory.
The kernel initializes CPU, memory, and basic device drivers, preparing the system to transition into user space.

The kernel image is stored in the /boot directory, typically named like:

vmlinuz-5.14.0-70.13.1.el9_0.x86_64

4. Loading Initramfs (Initial RAM Filesystem)

Next, GRUB2 loads the initramfs — a temporary, compressed root filesystem stored in memory.
Initramfs contains essential tools and drivers required to:

  • Mount the real root filesystem (e.g., /dev/sda2)
  • Initialize disk controllers and network interfaces
  • Load required kernel modules (e.g., for LVM or RAID)

In RHEL 7/8/9, the initramfs image is generated by Dracut and is typically located at:

/boot/initramfs-<kernel-version>.img

5. Dracut – The Initramfs Generator

Dracut is the utility responsible for creating the initramfs image during kernel installation or update.
It collects all necessary kernel modules, device drivers, and scripts required to boot the system.

You can regenerate the initramfs manually using:

dracut -f

6. Kernel Initialization

At this stage, the Linux kernel:

  • Initializes all core subsystems (CPU, memory, scheduler)
  • Detects and initializes hardware components
  • Mounts the initramfs as the root filesystem
  • Starts the /sbin/init process (or systemd in RHEL 7/8/9)

Once this is complete, control passes from the kernel to systemd — marking the transition from kernel space to user space.


7. Mounting the Real Root Filesystem

After the kernel initializes the system, it switches from the temporary initramfs to the permanent root filesystem, typically located on /dev/mapper/rhel-root or a similar volume.
This transition is crucial for booting into a functional operating system.


8. SELinux Initialization

RHEL uses Security-Enhanced Linux (SELinux) by default.
During the boot process, SELinux:

  • Loads its policies
  • Labels files and processes with appropriate security contexts
  • Ensures mandatory access control (MAC) policies are enforced

If SELinux encounters issues during boot, the system may enter permissive mode, allowing diagnostics without enforcing restrictions.


9. Systemd Initialization

RHEL 7, 8, and 9 replaced the traditional SysV init system with systemd.
Systemd is responsible for:

  • Starting and managing services and daemons
  • Mounting filesystems
  • Handling device events
  • Managing targets (system states)

You can view the default target using:

systemctl get-default

Typically, it’s:

multi-user.target  (for text mode)
graphical.target   (for GUI mode)

To view currently active services:

systemctl list-units --type=service

10. Target Initialization

Targets in systemd are modern equivalents of traditional runlevels.
Each target defines a specific system state with associated services and daemons.

TargetEquivalent RunlevelDescription
poweroff.targetRunlevel 0Shuts down the system
rescue.targetRunlevel 1Single-user mode
multi-user.targetRunlevel 3Text-based multi-user mode
graphical.targetRunlevel 5GUI mode
reboot.targetRunlevel 6Reboots the system

11. Login Prompt or GUI Display

Once all system services are started, the system either:

  • Displays a login prompt (on console for multi-user.target), or
  • Launches a graphical login manager (GDM) for GUI-based environments.

At this point, the Linux system is fully operational and ready for user login.


Summary: Linux Boot Process Flow

StepStageDescription
1POSTHardware check via BIOS/UEFI
2BootloaderGRUB2 loads kernel and initramfs
3Kernel LoadKernel initializes core subsystems
4InitramfsTemporary root filesystem setup
5DracutBuilds initramfs for kernel boot
6Kernel InitHardware and memory initialization
7Real Root MountSwitch from initramfs to real root
8SELinuxLoads and enforces security contexts
9SystemdStarts services and targets
10TargetDefines system state (multi-user/graphical)
11LoginSystem ready for user login

🏁 Conclusion

The Linux boot process in RHEL 7/8/9 is an advanced, well-structured sequence that transitions smoothly from hardware checks to a fully functional user environment.

Understanding this process helps administrators:

  • Troubleshoot boot failures
  • Customize startup behavior
  • Improve system reliability

Whether you’re studying for RHCSA/RHCE or managing production servers, mastering these stages is a fundamental Linux skill.