通过bmc网页升级uefi失败

问题描述

通过bmc网页更新uefi失败,会报如图中的错误

app.log中的错误信息如下:

1970-01-01 00:04:08.321116 firmware_mgmt NOTICE: active_fructl.lua(95): get host type is Singlehost
1970-01-01 00:04:08.321463 firmware_mgmt NOTICE: utils.lua(35): The file path is local.
1970-01-01 00:04:08.331007 firmware_mgmt NOTICE: init.lua(33): update status to FS_SIMPLE_UPGRADING.
1970-01-01 00:04:08.352768 firmware_mgmt NOTICE: task_service.lua(49): task create success, task id: 3690657805
1970-01-01 00:04:08.411216 firmware_mgmt NOTICE: file_transfer.lua(145): start to move file [new_BT05.hpm] from tmp to shm
1970-01-01 00:04:08.497350 firmware_mgmt NOTICE: file_transfer.lua(150): move_file_s ok:true, err:0
1970-01-01 00:04:08.617329 firmware_mgmt NOTICE: validate_sign.lua(174): verify signature successfully
1970-01-01 00:04:08.618085 firmware_mgmt NOTICE: action.lua(37): Validate signature successfully
1970-01-01 00:04:08.787000 firmware_mgmt NOTICE: hpm_package.lua(488): parse cfg file successfully, Version:1.0 FileNum:2
1970-01-01 00:04:08.787429 firmware_mgmt NOTICE: hpm_package.lua(444): get obj table: 0x34bcab305370 for Id=2
1970-01-01 00:04:08.788966 firmware_mgmt NOTICE: hpm_package.lua(413): System product info:ProductId(0), ProductVendorID(0x00000001), ProductUniqueID(0x030ABF00)
1970-01-01 00:04:08.789196 firmware_mgmt NOTICE: hpm_package.lua(327): check product id successfully
1970-01-01 00:04:08.789623 firmware_mgmt ERROR: hpm_package.lua(357): sys-uid(1030abf00) not in update.cfg’s ProductUIDList
1970-01-01 00:04:08.789853 firmware_mgmt ERROR: hpm_package.lua(511): Package file does not match the device
1970-01-01 00:04:08.794636 firmware_mgmt WARNING: init.lua(97): hpm_package.lua:669 > hpm_package.lua:569 > hpm_package.lua:512: The upgrade file does not match the device to be upgraded.
1970-01-01 00:04:08.795254 firmware_mgmt ERROR: control.lua(321): parse package(new_BT05.hpm) failed, ret:FirmwareFileMismatch: The upgrade file does not match the device to be upgraded..
1970-01-01 00:04:08.812587 fructrl ERROR: button_evt.lua(85): set prop PowerBtnShield to 0 failed, error_msg:BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:226: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/mc/signal.lua:257: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: …bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Smc_ExpBoardSMC_0101, bus: I2c_8, write failed: smc.lua:89: request error, opcode not supported, SMC completion code: 1

环境信息

openubmc25.06

尝试过的解决方案

签名已经根据教程改过了,应该跟签名无关

升级包与机型不匹配
两种处理方式
1.包不对,这个机型就是升不了这个包,则换成此机型的升级包
2.如果明确此机型就是要升这个包,则需要在升级包内的升级配置文件 update.cfgProductUIDList增加此uid

您好,感谢您的回复,我还有一些问题想要请教:
请问update.cfg是哪个组件中的文件,是开源的吗?我这边在workplace找到了几个update.cfg但是都是自动生成的文件或未参与编译的文件:
image
然后在manifest的update.cfg中是有报错的uid0x1030abf00的

update.cfg是个文件,是升级包里面的升级配置文件,不是哪个组件的

manifest的update.cfg是BMC升级包的配置,不是你固件包的配置

如果这个uefi包不是你们调试临时出的,那就是包和机型本身就不匹配无法升级。如果这个包是你们调试临时出的那就去改下配置文件

1 个赞

好的,我懂了,谢谢您,我们这个uefi升级包是由厂商提供的,所以我们找他们把机型号加在update.cfg的配置里就行了是吗

嗯嗯是的

再请教您一个问题,这个机型号是什么?该如何查询呢?它是跟cpu有关吗?还是跟920模块有关?

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

项目 内容
问题类型 固件文件与设备不匹配(FirmwareFileMismatch)
根本原因 设备 ProductUniqueID=0x030ABF00 不在 HPM 包的 ProductUIDList
签名问题? 否,日志已显示签名验证成功
解决方案 修改 update.cfg 添加设备ID → 重新打包并签名 → 重新上传
预防措施 构建固件时确保包含所有目标设备的 UID 列表
点击此处查看详细分析解答

通过BMC网页升级UEFI失败问题分析与解决方案

根据您提供的信息,您在使用 openUBMC 25.06 版本通过网页界面升级UEFI固件时失败,系统提示 “升级文件与待升级设备不匹配”。以下是基于系统日志、知识库和相关上下文的详细分析与解决建议。


:magnifying_glass_tilted_left: 问题定位

从您提供的 app.log 日志内容可以明确发现问题的根本原因:

firmware_mgmt ERROR: hpm_package.lua(357): sys-uid(1030abf00) not in update.cfg’s ProductUIDList
firmware_mgmt ERROR: hpm_package.lua(511): Package file does not match the device
firmware_mgmt WARNING: The upgrade file does not match the device to be upgraded.
firmware_mgmt ERROR: control.lua(321): parse package(new_BT05.hpm) failed, ret:FirmwareFileMismatch

:cross_mark: 核心错误:固件文件与设备不匹配(Firmware File Mismatch)

这表明您上传的UEFI升级包 new_BT05.hpm 中的 设备唯一标识符(ProductUniqueID)0x030ABF00(日志中显示为 sys-uid(1030abf00)),但该ID未包含在固件包的 update.cfg 文件的 ProductUIDList 列表中。

这是 firmware_mgmt 模块 在解析 HPM 固件包时执行设备兼容性校验失败的直接结果。

相关实体参考:

  • Firmware File Mismatch:固件文件与目标设备配置不匹配导致的错误。
  • firmware_mgmt:负责固件管理的系统模块,会进行签名验证、设备匹配等检查。
  • hpm_package.lua:负责解析 .hpm 固件包内容的关键脚本。

:pushpin: 原因分析

原因 说明
:white_check_mark: 签名已验证成功 日志显示 verify signature successfully,说明您对固件包的签名处理是正确的,签名不是问题根源
:cross_mark: 设备唯一ID不兼容 系统实际硬件的 ProductUniqueID = 0x030ABF00,但固件包未声明支持此设备ID。
:cross_mark: HPM包配置错误 update.cfg 文件中的 ProductUIDList 缺少 030ABF00,导致校验失败。
:warning: 时间戳异常 日志时间为 1970-01-01,提示系统时间未正确设置(可能影响某些服务),但不直接影响升级流程

:white_check_mark: 解决方案

:check_mark: 方案一:修改HPM固件包的 update.cfg

  1. 解压 HPM 文件
    HPM 文件是一种归档格式。使用支持 .hpm 的工具(如 hpmutils 或厂商提供的打包工具)解压 new_BT05.hpm

  2. 编辑 update.cfg 文件
    找到并打开 update.cfg,在 ProductUIDList 字段中添加您的设备ID:

    [Product]
    ProductID = ...
    ProductVendorID = 0x00000001
    ProductUIDList = 0x030ABF00, 0x...  # 确保包含 0x030ABF00
    
  3. 重新签名并打包 HPM

    • 使用正确的私钥对修改后的固件包重新签名。
    • 重新打包为 .hpm 格式。
    • 注意:确保构建环境与 openUBMC 签名机制兼容。
  4. 重新上传并升级


:check_mark: 方案二:确认固件包是否适用于当前硬件平台

  • 您使用的固件包 new_BT05.hpm 是否专为 S920X20 或类似平台设计?
  • 如果是从社区或第三方获取的UEFI/HBM包,请确认其目标平台(Target Board Name)是否包括您的设备。
  • 可检查 manifest.yml 或构建配置中是否设置了正确的 board_name=openUBMC 或具体型号。

参考知识:
在 openUBMC 构建过程中,board_name=openUBMC 是一个常见配置(来自 Board_Name_OpenUBMC 实体)。若未正确配置,可能导致生成的固件包不包含对应设备ID。


:check_mark: 方案三:关闭设备ID校验(仅开发/测试环境)

如果您是开发者且处于测试阶段,可尝试在 构建固件时关闭严格设备匹配检查

  • manifest.yml 或 Conan 配置中查找是否可设:
    -o firmware_mgmt/:community_enable=True
    
  • 社区版 openUBMC 有时允许通过 community_enable 选项放宽部分安全限制(如设备ID校验)。
  • 或修改 Lua 脚本逻辑(不推荐生产环境):
    • 修改 /opt/bmc/libmc/service/spdm/service/main.lua 等相关路径中的校验逻辑(需重新编译部署)。

:hammer_and_wrench: 推荐操作流程

graph TD
    A[升级失败: 文件不匹配] --> B{是否自定义构建HPM?}
    B -->|是| C[解压HPM包]
    B -->|否| D[确认是否为目标设备专用包]
    C --> E[修改update.cfg加入ProductUIDList]
    E --> F[重新签名并打包]
    F --> G[上传新HPM文件]
    G --> H[执行升级]
    D -->|是| G
    D -->|否| I[联系供应商或社区获取适配版本]

:puzzle_piece: 其他建议

  1. 同步系统时间
    设置正确的 NTP 时间,避免因时间戳异常影响日志追踪和证书验证。

  2. 参考官方指导文档

  3. 使用 CLI 进行调试(可选)
    若 Web 界面限制较多,可通过 SSH 登录 BMC,使用命令行工具调用 firmware_mgmt 接口进行更细粒度控制。


:white_check_mark: 总结

项目 内容
问题类型 固件文件与设备不匹配(FirmwareFileMismatch)
根本原因 设备 ProductUniqueID=0x030ABF00 不在 HPM 包的 ProductUIDList
签名问题? 否,日志已显示签名验证成功
解决方案 修改 update.cfg 添加设备ID → 重新打包并签名 → 重新上传
预防措施 构建固件时确保包含所有目标设备的 UID 列表

如仍无法解决,建议:

  1. 提供您的 update.cfg 内容(脱敏后)用于分析;
  2. 确认 new_BT05.hpm 的来源及适用平台;
  3. 访问 openUBMC 社区论坛 https://discuss.openubmc.cn 发帖求助,附上完整日志。