升级NPU卡的MCU,签名后升级报错

// 此模板仅供参考,如果不适用可以修改

问题描述

在300I A2卡官网下载MCU包,做重签名后升级失败

环境信息

  • 软件版本:25.12

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

解决方案

推荐方案一:使用标准工具链重新制作签名包

# 确保使用openUBMC提供的标准工具
# 1. 准备必要的签名文件
privatebinary.zip 和 dev_tools.zip

# 2. 使用bingo工具的hpm_signer命令进行重签名
bingo hpm_signer --input Ascend-hdk-910b-mcu_25.53.33.hpm \
                --output kunta-signed.hpm \
                --private-key your_private.key \
                --certificate your_cert.pem

参考:bingo 工具新增 hpm_signer 命令实现 hpm 包重签名

推荐方案二:确保环境一致性

  1. 确认签名环境一致性

    • 签名使用的root CA证书必须与BMC系统受信任的证书一致
    • 社区版openUBMC需要确保community_enable=true配置正确
  2. 验证签名流程

    # 使用hpm_verify验证签名结果
    hpm_verify -f kunta-signed.hpm
    
  3. 检查包内容完整性
    确保重签名过程没有改变包内的配置文件(如conf.tar.gz)或其他关键元数据。

替代方案:直接使用过渡包机制

如果重签名持续存在问题,可考虑使用过渡包机制

  1. 配置manifest.yml设置伙伴模式
  2. 将华为rootca.der放置到/opt/bmc/trust/partner/目录
  3. 构建既能运行又能升级华为官方签名包的过渡版本

注意:有报告指出通过hpm_resign重签名的包与manifest配置生成的自签名包行为不一致。

点击此处查看详细分析解答

升级NPU卡MCU签名后失败问题分析与解决方案

问题描述

在使用华为300I A2 NPU卡时,从官网下载MCU固件包进行重签名后升级失败。日志显示关键错误信息:

  • FirmwareType is nil, invalid package.hpm
  • parse package(kuntai-test.hpm) failed, ret:InvalidFirmwarePackage

这表明固件包解析失败,系统无法识别固件类型。

根本原因分析

根据日志和相关技术资料,该问题的根本原因是重签名过程破坏了HPM包的内部结构或元数据信息,导致FirmwareType字段丢失或无法被正确解析。

具体分析如下:

  1. 日志关键线索

    • hpm_package.lua模块连续报错get obj nil,说明固件包中的对象无法被正常获取
    • action_lua(44): FirmwareType is nil明确指出固件类型为空
    • 最终判定为InvalidFirmwarePackage(无效固件包)
  2. 签名差异问题
    重签名工具(如hpm_resign)与原始构建系统通过manifest.yml配置生成的自签名包存在本质差异。重签名可能未能完整保留原始包的元数据结构。

  3. 上下文支持证据

    • 文档中提到从华为官网下载的HPM包用于OS带内升级是正常的,说明原始包本身无问题
    • 问题出现在"重签名后",指向签名流程为关键变量
    • 类似案例中指出"包有问题,出包的时候没配置相应的cfg",暗示配置一致性的重要性

解决方案

推荐方案一:使用标准工具链重新制作签名包

# 确保使用openUBMC提供的标准工具
# 1. 准备必要的签名文件
privatebinary.zip 和 dev_tools.zip

# 2. 使用bingo工具的hpm_signer命令进行重签名
bingo hpm_signer --input Ascend-hdk-910b-mcu_25.53.33.hpm \
                --output kunta-signed.hpm \
                --private-key your_private.key \
                --certificate your_cert.pem

参考:bingo 工具新增 hpm_signer 命令实现 hpm 包重签名

推荐方案二:确保环境一致性

  1. 确认签名环境一致性

    • 签名使用的root CA证书必须与BMC系统受信任的证书一致
    • 社区版openUBMC需要确保community_enable=true配置正确
  2. 验证签名流程

    # 使用hpm_verify验证签名结果
    hpm_verify -f kunta-signed.hpm
    
  3. 检查包内容完整性
    确保重签名过程没有改变包内的配置文件(如conf.tar.gz)或其他关键元数据。

替代方案:直接使用过渡包机制

如果重签名持续存在问题,可考虑使用过渡包机制

  1. 配置manifest.yml设置伙伴模式
  2. 将华为rootca.der放置到/opt/bmc/trust/partner/目录
  3. 构建既能运行又能升级华为官方签名包的过渡版本

注意:有报告指出通过hpm_resign重签名的包与manifest配置生成的自签名包行为不一致。

预防措施

  1. 建立标准化升级流程

    • 所有重签名操作应使用统一工具链
    • 保存完整的签名配置文档
  2. 实施升级前验证

    • 使用hpm_verify工具预先验证包的完整性和签名有效性
    • 在测试环境中先行验证再部署到生产环境
  3. 日志监控重点

    • 监控firmware_mgmt组件的日志输出
    • 关注validate_sign.luahpm_package.lua模块的异常信息

相关参考资料

可能是update.cfg中ComponentID和ComponentIDEx有问题,需要和platform.sr中保持一致,可以发一份一键收集和NPU卡的hpm包看一下吗

我看和华为版本的BMC的platform.sr的ComponentID和ComponentIDEx配置是一样的

什么情况下mcu的updete.cfg会有问题

是在这里下载的mcu包社区版-固件与驱动-昇腾社区

应该是打包的时候有问题,可以参考昇腾社区hpm解析出来的update.cfg

参考这个配置进行
[Firmware14]
ProductID=65535
ComponentID=29
FRUID=6
DllLen=0
Updatefile=libupgrade_29.so
BoardID=65535
BoardIDList=65535
ComponentIDEx=173058
DeviceID=65535
DeviceIDList=164