# 启动流程和架构概述

冷启动是指从关机状态启动系统的过程。冷启动过程包括以下步骤：

1. 冷启动从 primary boot loader (PBL) 开始执行，以此设置初始系统，以执行 eXtensible boot loader (XBL)。
2. XBL 执行包括 DDR 初始化在内的更广泛的系统初始化，并加载 UEFI 镜像。
3. UEFI 提供丰富的固件接口，用于将 systemd-boot 作为启动管理器加载至 Qualcomm Linux，以管理操作系统镜像。

有关完整冷启动流程的更多信息，请参阅[冷启动架构](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-4/bootloader-architecture.html)。

## UEFI 启动管理器

Qualcomm Linux 支持 systemd-boot 作为通用可扩展固件接口 (UEFI) 启动管理器来加载和启动 Linux 内核。在这种情况下，Qualcomm Linux 内核是作为 EFI 存根编译的。

## Systemd-boot

Systemd-boot 是一种 UEFI 启动管理器，用于执行 EFI 镜像、提供启动项并支持统一内核镜像 (UKI)。Systemd-boot 支持以下组件：

- 启动条目：类型 1 boot loader 规范条目位于 ESP 上的 `loader/entries/` 目录。这些文件描述了 Qualcomm^®^ Linux 内核镜像及其相关的 initrd 镜像和其他 EFI 可执行文件。
- UKI：类型 2 boot loader 规范 EFI 统一内核镜像是位于 ESP 上的 `/EFI/Linux/` 目录中的可执行 EFI 二进制文件。

    有关启动项和统一内核镜像的更多信息，请参阅 [The Boot Loader Specification](https://uapi-group.org/specifications/specs/boot_loader_specification/)。

Systemd-boot 是 元 Yocto 层的 systemd 软件包的一部分。Yocto 配方使用 `systemd-boot_254.4.bb` 配方文件编译 systemd-boot，以及 `uki.bbclass` 配方文件来处理 ESP 镜像生成。

有关 systemd-boot 的更多信息，请参阅[使用 systemd-boot 和 UKI 配置和安全启动](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-27/configure_and_secure_boot_with_systemd_boot_and_uki.html)。

## Qualcomm Linux 内核作为 EFI stub

EFI boot stub 允许直接启动 Qualcomm Linux 内核，而无需传统的 EFI boot loader。

当使用 `CONFIG_EFI_STUB` 内核配置选项编译 Qualcomm Linux 内核时，启动固件可以将 EFI 镜像作为可执行文件加载。在这种情况下，固件加载程序导航到 EFI 镜像 `drivers/firmware/efi/libstub/` 中的 `EFI boot stub` 位置以启动内核。

对于 Arm^®^（Arm64），在没有压缩内核支持的情况下，内核镜像作为可移植可执行（PE）文件格式或通用目标文件格式（COFF）镜像运行，并且 EFI stub 链接到内核中。

有关将 Linux 内核作为 EFI 镜像启动的详细信息，参见 [EFI Boot Stub](https://docs.kernel.org/admin-guide/efi-stub.html)。

## 启动镜像和 ESP 或启动分区

ESP 或启动分区作为打包 systemd-boot 和 UKI 的 `efi.bin` 镜像的存储位置。UKI 包括内核镜像、initramfs 和内核命令行参数。

UEFI 固件用于启动 UEFI boot loader 并加载内核启动镜像。ESP 分区使用 UEFI 规范支持的文件分配表 (FAT) 文件系统进行格式化。有关 UKI 镜像格式以及基础 Qualcomm^®^ Linux^®^ meta 层中相应支持的更多信息，请参阅[使用 systemd-boot 和 UKI 配置和安全启动](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-27/configure_and_secure_boot_with_systemd_boot_and_uki.html)。

## 设备树 blob 选择

所有设备树 blob 均打包至 `dtb.bin` 中。UEFI 选择并加载适合 Qualcomm Linux 内核的 DTB。

要了解启动时 DTB 选择，请参阅[平台设备树](https://docs.qualcomm.com/doc/80-70022-3SC/topic/kernel-development.html#device-tree)。

Last Published: Nov 04, 2025

[Previous Topic
开始使用 Qualcomm Linux 内核](https://docs.qualcomm.com/bundle/publicresource/80-70022-3SC/topics/getting_started_chapter2.md) [Next Topic
配置启动后设置](https://docs.qualcomm.com/bundle/publicresource/80-70022-3SC/topics/post-boot-settings.md)