Skip to main content
胶囊生成工具创建用于更新设备固件的胶囊文件。它们将固件更新打包成可直接安装在硬件上的格式。这些工具可在 Linux 和 Windows 上运行,为不同的开发环境提供灵活性。为保持更新的安全性和可验证性,它们使用 OpenSSL 生成和签署证书。 运行胶囊的前提条件 在开始之前,请执行以下操作: Linux 和 Windows 需要以下工具。

签署胶囊

要按照胶囊生成(Capsule Generation)中的说明签署基于胶囊的系统固件更新,请执行以下步骤:
  1. 生成签名密钥:
    • 使用 OpenSSL 命令行实用工具创建新的自签名 X.509 证书链。这涉及生成私钥和相应的公共证书。
    • 系统使用私钥签署固件更新胶囊,UEFI 固件使用公共证书验证签名。
  2. 签署固件更新胶囊:
    • 使用签名密钥签署固件更新胶囊。此过程对胶囊进行身份验证,并确保其未被篡改。
    • 签名过程包括为固件更新有效载荷创建哈希,然后使用私钥加密此哈希以创建数字签名。
    • 将这些证书放置在名为 `Certificates’ 的文件夹中。此文件夹中的示例文件可能包括 QcFMPCert.pem、QcFMPRoot.pub.pem 和 QcFMPSub.pub.pem。
  3. 验证胶囊:
    • 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 节点中)时,才能执行胶囊更新。
    • 在启动任何胶囊更新过程之前,请确保证书已正确嵌入相应的二进制文件中并在设备上可用。
此验证步骤可确保系统仅应用经过授权的固件更新。