25.09签名出包bingo编译问题

答案内容由AI生成,仅供参考:

关于 bingo 构建自签名包的问题分析与解答

根据您提供的问题描述,使用 bingo build 是可以构建含有自签名内容的固件包的,但需要正确配置签名流程及相关依赖文件。您当前遇到的问题并非 bingo 完全不支持自签名出包,而是构建过程中因某些配置或环境缺失导致失败。


:magnifying_glass_tilted_left: 问题核心分析

您反馈以下关键信息:

  • 当前使用的是 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.
    

这表明:

:white_check_mark: bmcgo build 支持自签名流程并能成功执行,说明后端签名机制是可用的。
:cross_mark: bingo build 调用链在生成 GPP(Generic Package Packager)头部时失败,提示 gpp_header hpm 命令执行出错(退出码 255),通常代表工具调用异常或输入参数/文件缺失。


:white_check_mark: Bingo 是否支持自签名?

答案:支持。

:white_check_mark: 支持依据来自上下文文档和知识图谱:

  1. Bingo 已集成签名模块
    根据搜索结果中的《签名包制作指导》:

    “目前,该方案已与社区版 Bingo 软件完成集成。Bingo 的签名模块收到签名后的文件后,继续执行后续构建流程。”

  2. 签名配置需在 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
    
  3. 自签名模式需提供完整签名资源
    构建系统会检查是否开启“自签名”模式,并验证相关文件是否存在:

    • 若未找到 U-Boot 文件或其他签名所需输入,则报错:

      ERROR: 打开了自签名模式但未找到待签名的uboot文件


:cross_mark: 为什么 bingo build 会失败?

结合错误日志分析,可能原因如下:

1. 缺少 U-Boot 文件或路径错误

虽然您没有报“缺少 uboot”错误,但在自签名流程中,gpp_header 工具需要基于一个有效的 uboot.bin 文件生成头部信息。

:collision: 错误日志中的 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/*

:white_check_mark: 解决方案总结

问题点 解决方案
:white_check_mark: bingo 支持自签名吗? :check_mark: 支持,但需正确定义 signature 字段
:cross_mark: gpp_header hpm 报错 255 检查 uboot.bin 是否存在、路径是否正确
:cross_mark: 签名失败/跳过 检查 rootca.der, signer.pem, ts_signer.pem, tsa.cnf 是否齐全
:cross_mark: 文件后缀不一致 .pem.enc 需解密或重命名
:cross_mark: 构建中断残留问题 运行 conan remove --locks 清理
:cross_mark: bingo 版本过旧 运行 bingo upgrade 升级至最新稳定版

:hammer_and_wrench: 推荐操作步骤

# 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

:pushpin: 结论

bingo build 是支持自签名出包的,但在 25.09 版本中,必须满足以下条件才能成功:

  1. 签名文件完整(.der, .pem, .cnf);
  2. U-Boot 文件存在且路径正确;
  3. manifest.yml 中签名配置准确;
  4. 使用匹配的 bingo 版本,建议升级至最新;
  5. 清理缓存和锁文件。

若您仍无法解决,建议将 /home/workspace/manifest/temp/log/task.log 中的具体错误贴出,可进一步定位 gpp_header 调用失败的根本原因。


参考资料:

相关链接:

  1. bingo build -b openUBMC -r openubmc_dev报错签名失败
  2. 伙伴openubmc版本如何支持升级华为签名固件版本和伙伴自己签名的固件版本均能成功?
  3. 如何安装bmcgo工具并构建出签名hpm包
  4. 自签名构建报错问题
  5. openUBMC