- 生成胶囊。有关脚本和说明,请参阅:https://github.com/qualcomm/cbsp-boot-utilities/tree/main/uefi_capsule_generation。
- 在 https://github.com/qualcomm/cbsp-boot-utilities.git 获取
cbsp-boot-utilities/uefi_capsule_generation/目录的 git clone 链接。
签署胶囊
要按照胶囊生成(Capsule Generation)中的说明签署基于胶囊的系统固件更新,请执行以下步骤:- 生成签名密钥:
- 使用 OpenSSL 命令行实用工具创建新的自签名 X.509 证书链。这涉及生成私钥和相应的公共证书。
- 系统使用私钥签署固件更新胶囊,UEFI 固件使用公共证书验证签名。
- 签署固件更新胶囊:
- 使用签名密钥签署固件更新胶囊。此过程对胶囊进行身份验证,并确保其未被篡改。
- 签名过程包括为固件更新有效载荷创建哈希,然后使用私钥加密此哈希以创建数字签名。
- 将这些证书放置在名为 `Certificates’ 的文件夹中。此文件夹中的示例文件可能包括
QcFMPCert.pem、QcFMPRoot.pub.pem和QcFMPSub.pub.pem。
- 验证胶囊:
- UEFI 固件使用公共证书验证胶囊上的数字签名。如果签名有效且与受信任的证书匹配,固件更新过程将继续。
- 启动 devicetree(DT)在以下节点提供根证书——
QcFMPRoot.cer或NewRoot.cer:/sw/uefi/uefiplat/QcCapsuleRootCert。 - 此启动 DT 节点是 UEFI DT 节点,因此其所在的二进制文件取决于具体平台。在
xbl_config.elf同时包含 XBL 和 UEFI DT 节点的平台上,它是xbl_config.elf的一部分。在 UEFI DT 节点被拆分出来的平台上,它则是uefi_dtbs.elf(或其压缩/KVM 变体)的一部分。有关完整的平台明细,请参阅启动接口概述。这两种文件都可以使用 QDTE 工具进行更新。 - 只有当根证书已存在于设备上(特别是在此启动 DT 节点中)时,才能执行胶囊更新。
- 在启动任何胶囊更新过程之前,请确保证书已正确嵌入相应的二进制文件中并在设备上可用。

