高通设备固件签名

日暮清林
2025-02-03 / 0 评论 / 58 阅读 / 正在检测是否收录...

环境准备

高通 Sectools 需要使用 Python 2.

固件签名 (secimage)

查询 Chipset

sectools.py secimage -h --chipset=LIST

查询 Sign ID

sectools.py secimage -h --chipset=sm8250 --sign_id=LIST

签名固件

需要注意 config_pathchipset 参数二者只用提供一个即可。

以签名 QCS8250 的 ABL 独立固件为例,使用高通测试签名进行签名:

sectools.py secimage  --config_path=QCS8250.LA.2.0/common/sectools/config/sm8250/sm8250_secimage.xml --sign_id=abl -i abl.elf -s

随后可在 Sectools 目录的子目录 secimage_output 中,找到已签名的固件。
本例中为QCS8250.LA.2.0/common/sectools/secimage_output/sm8250/abl/abl.elf

已知问题与解决方案

编译好的 ABL 刷入不开机,开机日志显示:

pil-abl failed to validate firmware metadata return Device Error
​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌‌​​‌​‌​​‌​​‌‌‌‍​‌‌​‌‌‌‌‌‌‌​​‌​‌‍​‌‌‌​‌​​​‌​​​​​‌‍​‌​​‌‌​‌‌‌‌‌​​​‍​‌​‌​​‌​​​​​‌​‌‍​‌‌​​​‌​​​​‌​​‌‍​​​​‌​​‌​​​​​​‌‍​‌​‌​‌‌‌‌‌‌​​‌​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​‌‌​​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​‌​​​​​‍‌​‌‌​​‌​‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌​‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌​​‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌​​‍‌​​​​‌‌​‍‌​​‌​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌‌​‌​​​‌‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​‌​​​‌‌‍‌​​​‌‌‌​‍‌​​​‌​‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​​‌​​‌​‍‌‌​‌​​‌​‍‌​​‌‌​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌‌‌​​‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌‌​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​‌​​‌‌‍‌​​‌​​​​‍‌​​​‌‌‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌​‌​​​‌‌‍‌​‌​‌‌​​‍‌​​‌​‌‌​‍‌​​‌‌​​​‍‌​​‌​​​‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌‌​‌​​‌​‍‌​‌‌‌​​‌‍‌​​‌​‌‌​‍‌​​​‌‌​‌‍‌​​‌​​‌​‍‌​​​‌​​​‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​‌‌​​​​‍‌​​‌​​​‌‍‌‌​‌​​‌​‍‌​‌​‌‌‌​‍‌​​​‌​‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​​‌​​‌​‍‌‌​‌​​‌​‍‌​‌​‌‌‌‌‍‌​​‌​​‌‌‍‌​​‌‌‌‌​‍‌​​​‌​‌‌‍‌​​‌‌​​‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌​​‌​​‌​‍‌‌​‌​​‌​‍‌​‌‌‌​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌‌‌​​‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

查询 BSP 中的 XBL 源码可知:
PilValidateMetadata() 函数中,将 ABL 映像信息通过 PilScmStdCall() 发送给安全环境中的 TA 校验,校验通过后,TA 才会将 ABL 加载到安全内存中。

结合高通设备启动流程:
<Power On> -> PBL -> XBL Sec (Start QSEE) -> XBL Core [XBL] -> ABL (Fastboot/LinuxLoader) -> Linux Kernel -> HLOS (Android/Debian/Ubuntu)

对比高通提供的 Bootloader 包中的 abl.elf 文件发现,自己编译的 ABL 固件缺少签名。由于设备暂未开启安全启动,因此使用高通测试签名进行签名并刷入测试。经过测试,固件可以开机并加载。

0

评论 (0)

取消