ibmc 3.xx 版本更新 ubmc 25.12 版本界面显示成功,实际未成功

问题描述

在 ibmc 3.01.08.04 版本更新 openUBMC 25.12 LTS SP3 版本,按照 BMC 3.xx.xx.xx版本升级openubmc指导 - 交流互助区 - openUBMC 论坛 这个帖子指导进行了修改。镜像成功在 ibmc web 界面更新成功,但是等几分钟重新打开 web 界面还是原始的 ibmc 版本。

更新成功截图

等web恢复访问后的截图

附一键收集日志

NA_19700101-0008.tar.gz (4.1 MB)

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2512]

  • IBMC硬件:鲲鹏1711模组

重现步骤

  1. 构建 25.12 ubmc 镜像

  2. 在 ibmc web 选择带外更新

  3. 等web 恢复访问重新打开 web 界面

期望结果

web 界面是 25.12 版本

实际结果

web 界面还是旧的 ibmc 版本

尝试过的解决方案

再次执行镜像更新操作,没有用。

分析结论

有的说有可能是在备份区,用下面命令查了下备份的也是ibmc的版本

iBMC:/->ipmcget -d version
------------------- iBMC INFO -------------------
IPMC               CPU:           Hi1711
IPMI           Version:           2.0
Active iBMC    Version:           (U68)3.01.08.04
Active iBMC      Build:           002
Active iBMC      Built:           14:42:13 May 22 2025
Backup iBMC    Version:           3.01.08.04
Available iBMC Version:           null
Available iBMC   Build:           000
SDK            Version:           0.0.0.3
SDK              Built:           17:12:39 Nov  8 2023
Active Uboot   Version:           0.0.0.3 (17:27:32 Nov  8 2023)
Backup Uboot   Version:           0.0.0.3 (17:27:32 Nov  8 2023)
Active Secure Bootloader Version: 0.0.0.3 (17:28:29 Nov  8 2023)
Backup Secure Bootloader Version: 0.0.0.3 (17:28:29 Nov  8 2023)
Active Secure Firmware   Version: 0.0.0.3 (17:28:29 Nov  8 2023)
Backup Secure Firmware   Version: 0.0.0.3 (17:28:29 Nov  8 2023)

网上查有可能是镜像回滚了,用下面命令也没查到回滚相关的信息

iBMC:/->ipmcget -d rollbackstatus
Haven't performed rollback!
iBMC:/->ipmcget -d operatelog
No operation log.

上次是因为没有做 自签名 这一步,在做完自签名这一步之后,再去更新还是同样的情况,界面显示成功,等web能访问之后再去打开 web 还是旧的 ibmc。

由于不能上传新的压缩包,日志放到评论区。

manifest.yml 配置如下:

# yaml-language-server: $schema=/usr/share/bingo/schema/manifest.product.schema.json
schema: /usr/share/bingo/schema/manifest.schema.json
platform:
conan: “ibmc_sdk/5.12.00.35.b001@openubmc/stable”
options:
rtos_version: rtos_v2
enable_haf: false
base:
# openUBMC四段式版本号定义规则:4段固定2字节,范围为00-99
# 社区版本号变更时,需同步手动变更version.json的BMCSDKVersion和openUBMCVersion
# 例:社区版本号修改为25.06时,需将version.json中openUBMCVersion修改为25.06
# 且BMCSDKVersion也需变更为对应版本
version: “25.12.03.01”

# 单板定制化脚本,位于build/customization目录,需要实现一个Customization类
customization: “customization/prototype.py”
dependency_buildtools: dependency/dependency_buildtools.xml
# 签名文件,由构建系统复制到self.config.board_path目录,如需定制
signature:
files:
- file: ${product}/ca/rootca.crl
dst: cms.crl
certificates:
rootca_der: /home/cms_sign/rootca.der
rootca_crl: /home/cms_sign/rootca.crl
signer_pem: /home/cms_sign/signer.pem.enc
timestamp_signer_pem: /home/cms_sign/ts_signer.pem.enc
timestamp_signer_cnf: /home/cms_sign/tsa.cnf

dependencies:

  • conan: mdbctl
    action: delete
  • conan: dopra_ssp
    action: delete
  • conan: dopra_ddm
    action: delete
  • conan: iam
  • conan: firmware_mgmt
    options:
    community_enable: false
  • conan: vpd
    options:
    board_name: openUBMC
  • conan: mdb_interface
  • conan: fructrl
    options:
    manufacture: true
  • conan: sensor
  • conan: frudata
  • conan: rackmount
  • conan: hica
  • conan: rootfs_user
  • conan: lsw
  • conan: network_adapter
  • conan: chassis
    options:
    manufacture: true
  • conan: power_mgmt
  • conan: storage
  • conan: pcie_device
  • conan: thermal_mgmt
  • conan: manufacture
  • conan: bios
  • conan: general_hardware
  • conan: observability
  • conan: fluent-bit
  • conan: libyaml
  • conan: opentelemetry
  • conan: abseil
  • conan: grpc
  • conan: protobuf
  • conan: re2
  • conan: c_ares
  • conan: opentelemetry-proto
  • conan: webui
    options:
    energy_enabled: false
    webvnc_enabled: true
  • conan: account
    options:
    manufacture: true
  • conan: profile_schema
  • conan: help
    options:
    board_name: openUBMC
  • conan: openssl
  • conan: libspdm
  • conan: spdm
  • conan: dcmid
  • conan: vnc_proxy
  • conan: remote_console
    options:
    webvnc_supported: true
  • conan: nsm
    options:
    webvnc_supported: true
  • conan: libmcpp
  • conan: component_drivers
  • conan: devmon

debug_dependencies:

  • conan: busybox/1.34.1@openubmc/stable
    # action: delete

# 构建gpp包所需配置。
# manufecture中的gpp/files会覆盖当前的配置
gpp:
files:
# rootfs镜像文件固定为rootfs_iBMC.img
- file: ${work_out}/rootfs_iBMC.img
- file: ${work_out}/rootfs_iBMC.tar.gz
# rootfs_iBMC.img的cms签名文件
- file: ${work_out}/rootfs_iBMC.img.cms

\# 签名文件的证书吊销列表
- file: ${product}/ca/rootca.crl
  dst: cms.crl
\# 签名的根证书
- file: ${product}/ca/rootca.der
  dst: rootca.der

- file: ${sdk_path}/Hi1711_boot_4096_debug.bin
  dst: Hi1711_boot_4096.bin
  condition:
    build_type: debug
- file: ${sdk_path}/Hi1711_boot_pmode_debug.bin
  dst: Hi1711_boot_pmode.bin
  condition:
    build_type: debug
- file: ${sdk_path}/Hi1711_boot_4096.bin
  dst: Hi1711_boot_4096.bin
  condition:
    build_type: release
- file: ${sdk_path}/Hi1711_boot_pmode.bin
  dst: Hi1711_boot_pmode.bin
  condition:
    build_type: release

wbd_up_files:
files:
- file: ${board_path}/wbd_up_file/favicon.ico
dst: wbd_up_file/favicon.ico
- file: ${board_path}/wbd_up_file/filelist.conf
dst: wbd_up_file/filelist.conf
- file: ${board_path}/wbd_up_file/web_custom.xml
dst: wbd_up_file/web_custom.xml

tosupporte:
default:
package_name: “openUBMC/openUBMC-CMT_${version}.zip”
build_type: release
files:
# 打包许可证书,由维护者更新
- file: ${product}/License.md
- file: ${board_path}/version.xml
- file: “${output_path}/rootfs_${board_name}.hpm”
dst: openUBMC-CMT_${version}.hpm
qemu:
package_name: “openUBMC/openUBMC-CMT_${version}_qemu.zip”
build_type: debug
qemu_image: inner/${board_name}_${tosupporte_code}_default.cpio
files:
- file: ${board_path}/version.xml
dependencies:
- conan: qemu_drivers
- conan: fructrl
options:
qemu: true
- conan: general_hardware
options:
qemu: true
- conan: nsm
options:
qemu: true
- conan: bmc_network
options:
qemu: true
- conan: bmc_soc
action: delete
- conan: soctrl
action: delete
- conan: qemu_mockup

manufacture:
0502TEST:
package_name: “0502TEST.zip”
build_type: debug
default_options:
manufacture: true
files:
- file: ${output_path}/rootfs_${board_name}.hpm
dst: image.hpm
verify:
- pss

.bingo/config 增加
[hpm_encrypt]
enable = true

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

结论

你的问题大概率不是“升级操作没有执行”,而是首次 iBMC → openUBMC 升级包的制作、签名或 manifest 配置不符合要求,导致新系统未能真正启动,或虽然启动但版本标识仍显示为 iBMC。建议优先:

  1. 重新按 iBMC → openUBMC 专用流程出包;
  2. 确认 manufacture: true 和 partner.signature 等配置;
  3. 确认 V2/V3 机型路径,必要时使用过渡包;
  4. 查看 app.log 与串口日志确认是否发生分区回退;
  5. 首次升级失败或回退时联系 PAE。

参考帖子:

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

问题判断

根据你描述的现象以及论坛和故障模式库中的相关记录,“Web 界面提示 Upgrade successful,但重启后仍进入 iBMC 3.01.08.04” 属于 iBMC 3.xx.xx.xx 首次升级到 openUBMC 时的典型问题。其根源通常不是“升级按钮没有生效”,而是升级包制作/签名流程不合规、manifest 配置未按要求修改、机型升级路径不匹配(V2/V3),或新系统启动失败后回退到备份分区。

可能原因

1. 升级包制作方式不正确(最常见)

上下文中有明确案例:用户在 iBMC 上升级自编译 openUBMC 包时出现类似现象,最终定位为 “制作 hpm 包的方式不对”,并指出:

iBMC 升级到 uBMC 的升级包 和 uBMC 升级 uBMC 的升级包,它们的制作方法应该是不同的。

也就是说,不能直接拿“uBMC→uBMC”的包制作方式去做“iBMC→uBMC”的首次升级包。

同时,社区 manifest 默认不包含华为私钥,构建出的包无法通过真机验签;如果 manifest.yml 中未配置 partner.signature 字段,构建工具 bingo 不会自动注入有效签名,很可能得到的是“裸包”。这类包可能表现为升级流程未真正被允许,或启动阶段失败。

2. manifest.yml 中首次升级配置未改全

根据《BMC 3.xx.xx.xx 版本升级 openUBMC 指导》,第一次升级需要在出包时和升级后做额外操作,其中出包阶段必须:

  • 在 manifest.yml 中把 account 的 option 改为:
account:
  option:
    manufacture: true

如果该配置未修改,默认用户名密码机制不启用,可能导致升级失败或升级后回退。

3. 机型升级路径不匹配(V2 / V3)

论坛中多次提到:

  • 社区版本都是 V3 机型;
  • 若环境页面看起来是 V2 机型,则需要走:V2 → 过渡包 → openUBMC 签名包;
  • 过渡包通常需要在场内制作,可联系贵司市场找产品接口人。

你的硬件是鲲鹏 1711 模组,建议先确认当前环境属于 V2 还是 V3 升级路径,避免直接使用不匹配的社区包。

4. 新系统启动失败后回退到旧分区

上下文指出:

若新系统启动失败(如驱动、服务异常),BMC 将自动切换回备份分区。若该分区为旧 iBMC 版本,则表现为“回退”。

你执行 ipmcget -d rollbackstatus 显示 Haven't performed rollback!,但这只能说明没有触发显式回滚记录,不能完全排除分区引导失败、切换到备份分区启动的情况。

5. 也可能是“显示为 iBMC”的假象

还有一种已记录的兼容性问题:

OpenUBMC 固件包在构建时继承或保留了 iBMC 的系统标识和品牌信息,导致 ipmcget 命令无法正确识别为 OpenUBMC 系统,从而呈现“从 OpenUBMC 回退为 iBMC”的假象。

其根源包括:

  • 构建配置未完全剥离 iBMC 品牌;
  • 分区命名与激活策略未标准化;
  • Uboot / Secure Bootloader 引导流程未完全适配;
  • 回滚机制触发旧分区重启。

不过你当前 ipmcget -d version 显示 Active iBMC Version: (U68)3.01.08.04,仍建议结合下面排查步骤确认是真实回退还是标识未剥离导致的显示问题。

建议排查步骤

  1. 确认实际运行版本与构建时间

    • 使用 ipmcget -d version 查看 Active 分区的版本号和 Built 构建时间;
    • 对比该构建时间是否与你构建的 openUBMC 25.12 包时间一致;
    • 同时查看 Web 的“固件升级 → 版本信息”页面。
  2. 确认机型升级路径

    • 确认当前 1711 模组属于 V2 还是 V3 环境;
    • 如果是 V2,确认是否使用了官方过渡包,而不是直接刷社区包。
  3. 检查升级包配置

    • manifest.yml 中 account.option.manufacture 是否为 true;
    • 是否配置了 partner.signature;
    • 是否按《自签名 CA 创建以及 HPM 签名指导》配置了证书并完成 HPM 签名。
  4. 查看日志

    • 检查一键收集日志中的 /var/log/app.log;
    • 结合串口日志确认新分区是否加载失败、是否切换到旧分区启动。
  5. 联系 PAE

    • 指导帖明确说明:第一次升级失败报错,或者升级后回退,请联系 PAE。

推荐解决路径

路径一:重新按“iBMC → openUBMC”流程出包

参考上下文中的成功操作步骤:

  1. 参考《自签名 CA 创建以及 HPM 签名指导》,在 manifest 里配置自己生成的证书;
  2. 参考《BMC 3.xx.xx.xx 版本升级 openubmc 指导》,修改 manifest 里的配置,包括 account.option.manufacture: true;
  3. 完成修改后,编译用于 iBMC 升级 openUBMC 的 HPM 包;
  4. 在 iBMC Web 上升级该包;
  5. 升级后按指导完成后续操作,例如导入 SSL 密钥等。

路径二:确认是否需要“过渡包 + 伙伴签名”

如果当前是 V2 环境,建议按论坛建议执行:

  1. 先使用官方过渡包;
  2. 使用华为伙伴签名工具重新签名完整包;
  3. 分两步升级。

上下文明确指出:

华为设备有严格的签名锁机制,社区开源包必须经过“过渡 + 伙伴签名”双通道才能刷入真机。

路径三:参考官方整机升级文档

上下文中提到新增了《整机环境搭建》文档,介绍 iBMCv3 / iBMCv2 整机升级到 openUBMC 的完整流程,包括:

  • 出包;
  • 升级;
  • 升级后操作;
  • 升级后验证;
  • 常见问题。

建议按该文档逐项核对,而不是仅依据单一帖子操作。

路径四:针对“假象/回退”的清理措施(供参考)

上下文对类似“升级后显示 iBMC”的问题给出了以下建议:

  • 确认使用纯净 OpenUBMC 构建包;
  • 确保镜像命名为 rootfs_openubmc.img,而不是 rootfs_iBMC.img;
  • 执行完整 BMC 清根操作,清除 NVS、配置文件、日志、证书等;
  • 使用 ipmcset -t maintenance -d clearcfg 清除双分区配置;
  • 升级前临时关闭失败自动回退功能,升级后手动验证功能正常再开启;
  • 统一使用 OpenUBMC 标准版本命名,如 25.09.00.01,避免 iBMC 风格版本号。

结论

你的问题大概率不是“升级操作没有执行”,而是首次 iBMC → openUBMC 升级包的制作、签名或 manifest 配置不符合要求,导致新系统未能真正启动,或虽然启动但版本标识仍显示为 iBMC。建议优先:

  1. 重新按 iBMC → openUBMC 专用流程出包;
  2. 确认 manufacture: true 和 partner.signature 等配置;
  3. 确认 V2/V3 机型路径,必要时使用过渡包;
  4. 查看 app.log 与串口日志确认是否发生分区回退;
  5. 首次升级失败或回退时联系 PAE。

参考帖子:

先参考AI同学给的答案定位一下

BMC 3.xx.xx.xx版本升级openubmc指导 - 交流互助区 - openUBMC 论坛 这个帖子中的除了第 2 步没做,其余的都做了。还是更新失败。

做完自签名之后的日志:

NA_19700101-0003.tar.gz (4.0 MB)