openUBMC版本号自定义不生效问题分析
更新时间: 2026/06/02
在Gitcode上查看源码问题背景
- 单板类型:NA
- 软件版本:openUBMC 26.04。
- 涉及功能:定制版本号。
- 触发条件:manifest.yml中添加show_version字段。
- 业务表现:预期版本号变更;实际版本号未生效。
问题复现步骤
按新增产品文档在manifest.yml中添加show_version字段:
base字段:
json
base:
version: “26.04.24.14”
show_version: “1.002.0000001.0.260428”tosupporte字段:
json
tosupporte:
default:
package_name: “openUBMC/openUBMC-DH_${version}.zip”
build_type: release
show_version: “1.002.0000001.0.260428”编译命令:
text
bmcgo publish -bt=release --stage stable -b openUBMC编译成功,升级该固件后BMC主页显示BMC版本还是26.04.24.14.
关键日志信息
BMC升级操作日志
text
2025-04-09 13:54:12 WEB,user@x.x.x.x,web_backend,Upload file(rootfs_openUBMC.hpm) successfully
2025-04-09 13:54:12 WEB,user@x.x.x.x,firmware_mgmt,Upgrade rootfs_openUBMC.hpm started
2025-04-09 13:55:39 WEB,user@x.x.x.x,bmc_upgrade,Register BMC active action successfully
2025-04-09 13:55:39 WEB,user@x.x.x.x,firmware_mgmt,Upgrade (BMC) with (rootfs_openUBMC.hpm) from version(26.04.24.14) successfully
2025-04-09 13:55:44 WEB,user@x.x.x.x,maca,Reset BMC start
2025-04-09 13:55:46 WEB,user@x.x.x.x,firmware_mgmt,Reset BMC caused by upgrade successfully
2025-04-09 13:55:54 WEB,user@x.x.x.x,maca,Reset BMC successfully升级后的BMC,使用命令cat /etc/version.json 查询版本号:
json
{"Version": "14.24.04.26", "BuildNum": "26", "ReleaseDate": "15:58:52 Feb 5 2025", "BMCSDKVersion": "5.10.0.1", "openUBMCVersion": "26.04"}定位过程
在 openUBMC 构建系统中,manifest.yml 中的 show_version 通常用于:
- 定义输出包的命名格式(如 HPM、ZIP 文件名)
- 作为构建过程中的元数据标识
但 show_version 并不会自动注入到 BMC 运行时的版本信息中。BMC 主页上显示的“BMC版本”来源于运行时组件读取的版本字符串,通常来自以下位置之一:
- /etc/version.json
- version.xml
- 固件内部硬编码字段
- bmc.kepler.Systems.Sms.Sms.Version 等 D-Bus 接口暴露的属性
因此,仅修改 manifest.yml 的 show_version 不会影响最终界面显示的版本号。
version.json 是 openUBMC 构建系统中用于存储和同步版本信息的关键配置文件,路径通常为:
build/rootfs/etc/version.json
问题原因
修改 manifest.yml 的 show_version 仅影响包命名,不能改变运行时的版本。BMC Web界面显示的版本号实际上是从 version.json 中读取的 openUBMCVersion 字段决定的,而非 manifest.yml 的 show_version。
解决方案
要使自定义版本号(如 1.002.0000001.0.260428)在 BMC 界面正确显示,需完成以下步骤:
在构建流程中(如 build.sh 或定制化脚本),添加逻辑以覆盖默认的 version.json:
jsoncat > ${BUILD_ROOT}/rootfs/etc/version.json << EOF { "openUBMCVersion": "1.002.0000001.0.260428", "BMCSDKVersion": "5.10.0.0" } EOF验证最终镜像中是否包含正确版本
- 解压生成的 .hpm 或挂载 rootfs.img,检查文件:/etc/version.json
通过接口或命令验证运行时版本
- 通过 D-Bus 查看版本接口:
bashbusctl get-property bmc.kepler.Systems.Sms.Sms Version- 查看版本文件:
bashcat /etc/version.json