答案内容由AI生成,仅供参考:
关于 bingo 构建自签名包的问题分析与解答
根据您提供的问题描述,使用 bingo build 是可以构建含有自签名内容的固件包的,但需要正确配置签名流程及相关依赖文件。您当前遇到的问题并非 bingo 完全不支持自签名出包,而是构建过程中因某些配置或环境缺失导致失败。
问题核心分析
您反馈以下关键信息:
- 当前使用的是 25.09 版本环境;
- 使用
bmcgo build -b openUBMC -r openubmc_dev可以正常完成自签名出包; - 使用
bingo build -b openUBMC -r openubmc_dev报错,错误集中在:ERROR: 任务 work.task_buildgppbin 执行失败,Command '['/usr/local/bin/gpp_header', 'hpm']' returned non-zero exit status 255.
这表明:
bmcgo build 支持自签名流程并能成功执行,说明后端签名机制是可用的。
bingo build 调用链在生成 GPP(Generic Package Packager)头部时失败,提示 gpp_header hpm 命令执行出错(退出码 255),通常代表工具调用异常或输入参数/文件缺失。
Bingo 是否支持自签名?
答案:支持。
支持依据来自上下文文档和知识图谱:
-
Bingo已集成签名模块
根据搜索结果中的《签名包制作指导》:“目前,该方案已与社区版
Bingo软件完成集成。Bingo 的签名模块收到签名后的文件后,继续执行后续构建流程。” -
签名配置需在
manifest.yml中明确定义
base.signature字段用于指定签名所需文件(如根证书rootca.der、私钥signer.pem等):base: signature: certificates: rootca_der: ${product}/ca/rootca.der signer_pem: ${product}/ca/signer.pem timestamp_signer_pem: ${product}/ca/ts_signer.pem timestamp_signer_cnf: ${product}/ca/tsa.cnf -
自签名模式需提供完整签名资源
构建系统会检查是否开启“自签名”模式,并验证相关文件是否存在:- 若未找到 U-Boot 文件或其他签名所需输入,则报错:
ERROR: 打开了自签名模式但未找到待签名的uboot文件
- 若未找到 U-Boot 文件或其他签名所需输入,则报错:
为什么 bingo build 会失败?
结合错误日志分析,可能原因如下:
1. 缺少 U-Boot 文件或路径错误
虽然您没有报“缺少 uboot”错误,但在自签名流程中,gpp_header 工具需要基于一个有效的 uboot.bin 文件生成头部信息。
错误日志中的
gpp_header hpm是用于打包 HPM 固件前插入 U-Boot Header 的关键步骤。
解决方法:
确保 SDK 中包含正确的 Hi1711_boot_*.bin 文件,并将其复制到构建路径或配置正确路径。
参考知识库中“构建时找不到 SDK 文件”的提示:
报错原因:传入的SDK路径不正确,或者使用了脚本无法识别的相对路径。
建议确认:
ls ${SDK_PATH}/Hi1711_boot_*.bin
并在 manifest.yml 中正确引用:
gpp:
files:
- file: ${sdk_path}/Hi1711_boot_4096.bin
dst: Hi1711_boot_4096.bin
2. 签名文件缺失或命名不匹配
来自 hkzy Hewei 用户的解决方案指出:
“已解决,签名文件有后缀有变动,同时修改 manifest.yml 的签名文件后缀后,执行通过。”
这意味着:
.pem或.der文件名称必须与manifest.yml正确对应;- 如存在
.enc(加密)、.bak等扩展名,可能导致解析失败; - 时间戳配置
tsa.cnf是否存在且格式正确?
3. Bingo 版本不兼容或配置不一致
不同版本的 bingo 对自签名流程的支持存在差异。例如:
bmcgo build成功说明底层bmcgo框架正常;bingo build失败可能是其对work.task_buildgppbin调用封装不当所致;- 部分版本
bingo(如 0.5.317)存在 Conan 依赖、签名服务调用等问题;
建议升级 bingo:
bingo upgrade
或手动检查版本兼容性:
bingo -v
确保使用的是 25.09 SDK 推荐版本。
4. 构建缓存或锁文件干扰
部分用户反馈中断构建后残留锁文件会影响后续构建:
使用命令清除锁文件:
conan remove --locks
或清理临时目录:
rm -rf /home/workspace/manifest/temp/*
解决方案总结
| 问题点 | 解决方案 |
|---|---|
bingo 支持自签名吗? |
signature 字段 |
gpp_header hpm 报错 255 |
检查 uboot.bin 是否存在、路径是否正确 |
检查 rootca.der, signer.pem, ts_signer.pem, tsa.cnf 是否齐全 |
|
如 .pem.enc 需解密或重命名 |
|
运行 conan remove --locks 清理 |
|
bingo 版本过旧 |
运行 bingo upgrade 升级至最新稳定版 |
推荐操作步骤
# Step 1: 升级 bingo
bingo upgrade
# Step 2: 清理构建缓存
conan remove --locks
rm -rf temp/ output/
# Step 3: 检查签名文件是否齐全
ls build/product/ca/
# 应包含:rootca.der, signer.pem, ts_signer.pem, tsa.cnf, rootca.crl
# Step 4: 确认 SDK 路径下有 uboot 文件
echo $SDK_PATH
ls $SDK_PATH/Hi1711_boot*.bin
# Step 5: 修改 manifest.yml,确保签名路径正确
# 注意不要有 .enc 后缀!若加密需先解密
# Step 6: 再次执行构建
bingo build -b openUBMC -r openubmc_dev
结论
bingo build是支持自签名出包的,但在 25.09 版本中,必须满足以下条件才能成功:
- 签名文件完整(
.der,.pem,.cnf);- U-Boot 文件存在且路径正确;
manifest.yml中签名配置准确;- 使用匹配的
bingo版本,建议升级至最新;- 清理缓存和锁文件。
若您仍无法解决,建议将 /home/workspace/manifest/temp/log/task.log 中的具体错误贴出,可进一步定位 gpp_header 调用失败的根本原因。
参考资料:
相关链接: