- 冷启动从主引导加载程序(PBL)开始执行,PBL 为可扩展引导加载程序(XBL)设置初始系统。
- XBL 执行更广泛的系统初始化,包括 DDR 初始化,并加载 UEFI 镜像。
- UEFI 提供丰富的固件接口,在 Qualcomm® Linux 上加载 systemd-boot 作为引导管理器来管理 OS 镜像。
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 配方文件来处理 ESP 镜像生成。
有关 systemd-boot 的更多信息,请参阅 UEFI 和 systemd-boot。
作为 EFI stub 的 Qualcomm Linux 内核
EFI boot stub 允许直接启动 Qualcomm Linux 内核,而无需传统的 EFI 引导加载程序。 当 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 选择。
