UEFI Booting Process

2023-11-02
1 min read
  sequenceDiagram
    participant Machine as Machine
    participant UEFI as UEFI Firmware
    participant BootLoader as Boot Loader (GRUB2)
    participant Kernel as Kernel
    participant Systemd as Systemd Unit
    Machine->>UEFI: Power On
    UEFI->>Machine: Power On Self Test (POST)
    UEFI->>Machine: Press F2 for UEFI config
    UEFI->>Machine: Initialize RAM
    UEFI->>BootLoader: Search for bootable device and MBR
    UEFI->>BootLoader: Hand over control
    BootLoader->>Machine: Load grubx64.efi (UEFI)
    BootLoader->>Machine: Load configuration from /boot/efi/EFI/redhat/grub.cfg
    BootLoader->>Kernel: Load kernel & initramfs from disk
    BootLoader->>Kernel: Hand over control
    Kernel->>Machine: Load initramfs into RAM
    Kernel->>Machine: Initialize hardware & drivers
    Kernel->>Systemd: Execute /sbin/init script
    Systemd->>Machine: Execute units for initrd.target
    Kernel->>Machine: Switch root file system
    Systemd->>Machine: Re-execute using disk copy
    Systemd->>Machine: Start/Stop units & solve dependencies
    loop Hardware Initialization
    Machine-->>UEFI: Callbacks & Hardware Initialization
    end