Skip to main content
The boot architecture uses boot loaders and Board Support Package (BSP) images at each stage of boot. The boot loaders manage each boot stage until the Linux Kernel and the applications are ready to run.

Boot loader

The system runs the boot loader software when powered on, serving as an interface for loading the operating system and other required applications. Qualcomm chipsets, including the ones supported by Qualcomm Linux, use a multistage boot process as follows: Boot architecture

Primary boot loader (PBL)

  • Establishes a secure root-of-trust (RoT) and secure boot process for applications. For more information, see Secure boot.
  • Identifies the primary storage device and loads the secondary boot loader called the eXtensible Boot Loader (XBL). If the system encounters any recoverable error while loading the XBL image, the PBL enters the emergency download (EDL) mode. For more information about how to detect EDL mode, see Enumeration of EDL device manager.
  • Loads XBL segments into the boot SoC internal memory. For more information about how PBL loads the XBL segments, see APSS cold boot flow.

eXtensible Boot Loader (XBL)

  • Initializes the hardware, firmware images, CPU cache, MMU, boot device, PMIC, and DDR.
  • Sets up the RAM dump USB driver, USB charging, thermal check, power management integrated circuit (PMIC), and low-power double data rate (LPDDR) clock functions.
  • Collects the RAM dump over USB onto the host computer.
  • Loads and verifies the Qualcomm® Trusted Execution Environment (Qualcomm TEE), Qualcomm Hypervisor, and UEFI image.
  • Provides the XBL configuration (XBL_CFG), which is part of the cold boot flow and includes PMIC and other driver settings.
  • Provides XBL with a Qualcomm-signed ELF segment to initialize the external protection units (xPU).
  • XBL_CFG is a standalone binary with platform-specific configurations and settings. The XBL uses the XBL_CFG driver to load and configure the required settings. The driver uses the binary to provide on-demand read access to each setting of XBL_CFG.

Unified extensible firmware interface (UEFI)

UEFI is the software interface between an operating system (OS) and the platform firmware. It includes data tables with platform information, along with the boot and runtime service calls that the OS and its loader can use. Together, they create a standard environment for booting an OS and running the UEFI applications. Qualcomm uses Tianocore EDK-II, an open-source implementation available at http://www.tianocore.org/edk2/, which follows the UEFI specification. The system offers the following build options:
  • Retail build: Has minimal debug features and an optimal memory footprint, making it ideal for production environments.
  • Debug build: Ideal for development environments, with all debug features enabled.
For developing a UEFI application, see Unified Extensible Firmware Interface (UEFI).

U-Boot

U-Boot is an open-source boot loader that can be used as an alternative to EDK II in the Qualcomm Linux boot flow. In this configuration, U-Boot replaces the EDK II while all other stages remain unchanged. U-Boot provides the following functionality:
  • Initializes and configures platform hardware and peripherals required for boot
  • Loads and transfers control to the systemd-boot EFI image, which subsequently loads the Operating System (OS)
  • Implements UEFI boot services and limited runtime services for OS
  • Provides an interactive command-line interface for system configuration and debugging
  • Supports secure boot mechanisms by verifying OS image using trusted cryptographic signatures
For more details on U-Boot, please refer U-Boot on Qualcomm Linux.

systemd-boot OS manager

systemd-boot is a UEFI boot manager that executes configured EFI images. It only supports systems with UEFI firmware and does the following:
  • Loads boot entry information from the EFI system partition (ESP), mounted at /efi, /boot, or /boot/efi during the Linux OS runtime and from the extended boot loader partition (XBOOTLDR) (mounted to /boot). You must locate the configuration file fragments, kernels, initial RAM disk (initrd), and other EFI images within the ESP or XBOOTLDR.
  • Reads simple and generic boot loader configuration files, and selects one file per boot loader entry. All the files are in the ESP partition.
To ensure that the Qualcomm Linux Kernel can run as an EFI image, use the CONFIG_EFI_STUB compilation option.

Next steps