- 冷启动从主引导加载程序(PBL)开始执行,PBL 为可扩展引导加载程序(XBL)设置初始系统。
- XBL 执行更广泛的系统初始化,包括 DDR 初始化,并加载 UEFI 镜像。
- UEFI 提供丰富的固件接口,在 Qualcomm® Linux 上加载 systemd-boot 作为引导管理器来管理操作系统镜像。
UEFI 引导管理器
Qualcomm Linux 支持将 systemd-boot 作为通用可扩展固件接口(UEFI)引导管理器来加载和引导 Linux 内核。在这种情况下,Qualcomm Linux 内核会被构建为 EFI stub。Systemd-boot
Systemd-boot 是一个 UEFI 引导管理器,它执行 EFI 镜像、提供引导条目并支持统一内核镜像(UKI)。Systemd-boot 支持以下组件:- 引导条目:类型 1 引导加载程序规范条目位于 ESP 上的
loader/entries/目录中。这些文件描述了 Qualcomm® Linux 内核镜像以及关联的 initrd 镜像和其他 EFI 二进制文件。 - UKI:类型 2 引导加载程序规范 EFI 统一内核镜像是位于 ESP 上
/EFI/Linux/目录中的可执行 EFI 二进制文件。 有关引导条目和统一内核镜像的更多信息,请参阅 The Boot Loader Specification。
recipes-kernel/images/esp-qcom-image.bb recipe 文件来处理 ESP 镜像的生成。
有关 systemd-boot 的更多信息,请参阅 UEFI 与 systemd-boot。
作为 EFI stub 的 Qualcomm Linux 内核
EFI boot stub 允许在不使用传统 EFI 引导加载程序的情况下直接引导 Qualcomm Linux 内核。 当 Qualcomm Linux 内核使用CONFIG_EFI_STUB 内核配置选项编译时,引导固件可以将 EFI 镜像作为可执行文件加载。在这种情况下,固件加载程序会导航到 EFI 镜像 drivers/firmware/efi/libstub/ 中的 EFI boot stub 位置来引导内核。
对于不支持压缩内核的 Arm®(Arm64),内核镜像作为可移植可执行(PE)文件格式或通用目标文件格式(COFF)镜像运行,且 EFI stub 被链接到内核中。
有关将 Linux 内核作为 EFI 镜像引导的更多信息,请参阅 The EFI Boot Stub。
引导镜像与 ESP 或 boot 分区
ESP 或 boot 分区用作存储efi.bin 镜像的位置,该镜像打包了 systemd-boot 和 UKI。UKI 包括内核镜像、initramfs 和内核命令行参数。
UEFI 固件启动 UEFI 引导加载程序并加载内核引导镜像。ESP 使用 UEFI 规范支持的文件分配表(FAT)文件系统进行格式化。有关 UKI 镜像格式以及基础 Qualcomm® Linux® meta 层中相应支持的更多信息,请参阅 UEFI 与 systemd-boot。
设备树 blob 选择
所有设备树 blob 都打包为dtb.bin 的一部分。UEFI 为 Qualcomm Linux 内核选择并加载正确的 DTB。
若要了解引导时的 DTB 选择,请参阅引导时 DTB 选择。
