Boot Process

Understanding the Linux boot sequence from BIOS/UEFI through kernel initialization to system readiness

The Linux boot process is the sequence of events that occurs when a system starts up, from power-on to a fully operational system. Understanding this process is crucial for system administration, troubleshooting startup issues, and optimizing system performance.

Key Concepts

  • BIOS/UEFI: Firmware that initializes hardware and loads bootloader
  • Bootloader: Program that loads the kernel (GRUB, LILO)
  • Kernel: Core of the operating system
  • Init System: First process that manages other processes (systemd, SysV)
  • Runlevels/Targets: Different system states and service configurations

Boot Sequence Stages

Stage 1: BIOS/UEFI

  • Power-On Self Test (POST)
  • Hardware initialization
  • Boot device selection
  • Loads Master Boot Record (MBR) or EFI boot manager

Stage 2: Bootloader (GRUB)

  • Presents boot menu
  • Loads kernel and initramfs
  • Passes kernel parameters

Stage 3: Kernel Initialization

  • Hardware detection and driver loading
  • Root filesystem mounting
  • Starts init process (PID 1)

Stage 4: Init System

  • Service startup and management
  • User space initialization
  • System ready for login

Common Boot Commands

GRUB Commands

grub-install /dev/sda - Install GRUB to disk update-grub - Update GRUB configuration grub-mkconfig -o /boot/grub/grub.cfg - Generate config

Systemd Commands

systemctl list-units - Show loaded units systemctl enable service - Enable service at boot systemctl disable service - Disable service at boot

Practical Examples

Example 1: Check boot messages

1
dmesg | head -20

Shows kernel messages from boot process

Example 2: View systemd boot analysis

1
systemd-analyze

Displays boot time breakdown

Example 3: Check service startup times

1
systemd-analyze blame

Shows which services took longest to start

Example 4: View boot chart

1
systemd-analyze plot > boot.svg

Creates visual boot timeline

Boot Configuration Files

GRUB Configuration

  • /boot/grub/grub.cfg - Main GRUB config
  • /etc/default/grub - GRUB defaults
  • /etc/grub.d/ - GRUB script directory

Systemd Configuration

  • /etc/systemd/system/ - Local unit files
  • /lib/systemd/system/ - Package unit files
  • /etc/systemd/system/default.target - Default target

Use Cases

  • Troubleshooting boot failures
  • Optimizing boot performance
  • Configuring dual-boot systems
  • Setting up automatic service startup
  • Recovering from boot issues

journalctl -b - View boot logs systemctl get-default - Show default target systemctl set-default - Set default target lsblk - List block devices mount - Show mounted filesystems

Tips & Troubleshooting

Common Boot Issues

  • Kernel panic: Check hardware, filesystem corruption
  • GRUB rescue: Reinstall GRUB or fix configuration
  • Service failures: Check journalctl -u service-name
  • Slow boot: Use systemd-analyze to identify bottlenecks

Recovery Options

  • Boot from rescue disk or USB
  • Use GRUB rescue mode
  • Single-user mode: Add single to kernel parameters
  • Emergency mode: Add emergency to kernel parameters

Performance Tips

  • Disable unnecessary services
  • Use SSD for faster I/O
  • Optimize initramfs size
  • Parallel service startup (systemd default)

Boot Parameters

  • quiet - Suppress boot messages
  • splash - Show graphical boot screen
  • ro - Mount root filesystem read-only
  • rw - Mount root filesystem read-write
  • init=/bin/bash - Emergency shell access