V2版本iBMC直接升级到openUBMC 25.09后回退失败

问题描述

通过将iBMC直接升级到25.09版本openUBMC后,回退失败,CPU侧也无法对齐进行访问

环境信息

  • 操作系统:openEuler 2203

  • 软件版本:OpenUBMC2509

  • 硬件配置:Hi1711 BMC模组 + 鲲鹏920模组

重现步骤

期望结果

能正常回退,CPU侧也能正常访问,ssh能正常登录

实际结果

升级到openUBMC后,串口被切到了CPU侧,BMC侧的串口仅能短暂的使用。ssh也无法登录。

尝试过的解决方案

在BMC模组串口能用的期间,敲下ipmset -d rollback,提示内部服务错误,回退失败。

想请教下还有啥其它方法能回退BMC模组上的固件版本吗,我现在只是想要回退到之前的iBMC版本就可以了,其它提到的两个问题已经排查到原因了

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

iBMC V2 升级至 OpenUBMC 25.09 后回退失败问题分析与解决方案

根据您提供的问题描述,该问题是关于从 iBMC V2 直接升级到 openUBMC 25.09 后出现的回退失败、串口切换至CPU侧、SSH无法登录等问题。结合知识库中的实体信息、关系网络及文档资料,现对该问题进行全面分析并提供解决建议。


:magnifying_glass_tilted_left: 问题概述

项目 内容
设备环境 Hi1711 BMC模块 + 鲲鹏920处理器模块
操作系统 openEuler 2203
目标固件 OpenUBMC 25.09(即 openUBMC25.09
升级路径 iBMC V2 → OpenUBMC 25.09
期望结果 升级/回退正常,CPU与BMC通信正常,SSH可访问
实际现象
  • 回退失败(ipmcset -d rollback 报“内部服务错误”)
  • 串口仅短暂可用,随后被切换至CPU侧
  • SSH无法登录
  • CPU侧无法正常访问BMC |

:puzzle_piece: 根本原因分析

1. 升级方式未遵循官方指导流程

知识库中多个信息明确指出:

:white_check_mark: iBMC V2 升级至 openUBMC 必须使用特定的“过渡包”(transition package),并进行配置调整(如 manufacture: true)。

文档引用(DC-3):

“v2版本可直接升级openubmc,第一次升级需要在出包时和升级后做一些操作,此后可以根据自己的选择(社区版本或伙伴自签名版本)来升级后续的版本……”

而用户直接升级到 OpenUBMC25.09未使用正确构建的“首升包”,极可能导致以下后果:

  • 固件签名验证失败或信任链异常
  • 系统分区不兼容,导致A/B分区状态混乱
  • rollback 功能所需元数据丢失或不完整
  • BMC服务启动异常,进而影响 SSH、Web、串口等服务初始化

2. 回退失败的根本原因:固件版本回滚机制失效

KG 实体 BMC UpgradeUpgrade Failure 明确说明:

  • BMC升级过程中存在 自动回退机制,若新固件启动失败超过阈值(通常为3次),系统将自动切回原版本
  • 但该机制依赖于固件完整性、配置一致性以及firmware_mgmt服务的正确运行。

故障点:

  • ipmcset -d rollback 报 “内部服务错误”,表明 firmware_mgmtbmc kepler 相关服务未正常启动。
  • 搜索结果[2]中提到:“升级成功后复位iBMC,iBMC系统启动失败,三次未启动成功之后触发分区切换” —— 说明回退机制是“被动触发”,不能依赖命令手动触发。

:warning: 当前 rollback 命令失效,可能是因为 firmware_mgmt 服务未启动、flash分区损坏或密钥管理异常。

3. 串口被切至CPU侧、SSH无法登录的原因

  • 串口控制权变更:BMC与CPU之间存在共享串口通道(如 UART)。正常情况下由 BMC 初始化并提供 shell 接口。但当 BMC 固件异常或未完全启动时,串口会被 CPU 接管用于其 OS 输出(如 openEuler 启动日志)。
  • SSH 服务未启动:SSH 依赖于 dropbearsshd 守护进程,这些服务通常由 /opt/bmc 环境加载。若 BMC 固件异常,/opt/bmc 文件系统挂载失败,或关键服务(如 bmc kepleripmi_core)崩溃,则 SSH 不会启动。

:white_check_mark: 解决方案与建议

:white_check_mark: 方案一:使用正确方式重做首升(推荐)

步骤 1:构建符合要求的“首升包”

参考知识库 URL:https://discuss.openubmc.cn/t/topic/2060

必须在 manifest.yml 中设置 manufacture: true

- conan: account
  options:
    manufacture: true   # 关键配置!用于首次从 iBMC V2 升级
  • 构建时启用 busybox 工具集,便于后续调试。
  • 使用 transition package 升级,确保兼容性。

步骤 2:使用 Web 或 CLI 安全升级

  • 通过 HTTPS 登录 iBMC 界面执行固件更新(推荐带外更新)。
  • 或使用命令行:
    ipmcset -t firmwareupdate -d start -v <image_path>
    

步骤 3:升级后验证并清除临时配置

  • 升级完成后,可将 manufacture 改为 false 以启用定制功能。
  • 检查 /opt/bmc 是否正常挂载,服务是否启动。

:white_check_mark: 方案二:若已变砖,尝试进入 U-Boot 强制恢复

参考文档(DC-1)技术支持回复:

“AC服务器后串口能进uboot命令行吗,进uboot可以倒换。”

操作步骤:

  1. 断电 + 串口连接
  2. 上电瞬间连续发送 Ctrl+C 或敲击回车,尝试中断 U-Boot 启动流程。
  3. 进入 U-Boot 命令行后执行:
    printenv              # 查看当前环境变量
    setenv bootargs root=/dev/mtdblock4 ...  # 确保启动参数正确
    saveenv
    run multi_updata      # 若支持双分区切换
    
  4. 手动切换到备份分区(如 bootcmd_backup):
    setenv bootcmd '${bootcmd_backup}'
    saveenv
    reset
    

:warning: 若您的硬件(920模块+自研底板)无物理串口进入 U-Boot,则此方法不可行,需考虑 JTAG 或烧录器抢救。


:white_check_mark: 方案三:通过带内通道恢复 BMC(适用于能访问主机 OS 的场景)

由于您运行的是 openEuler 2203,可尝试通过 带内通道(in-band IPMI) 恢复。

步骤如下:

  1. 在 openEuler 主机上安装 ipmitool

    yum install ipmitool -y
    
  2. 加载 ipmi_devintfipmi_msghandler 驱动:

    modprobe ipmi_devintf
    modprobe ipmi_msghandler
    
  3. 测试本地 IPMI 通信:

    ipmitool mc info
    
  4. 若能通信,尝试发送重启命令:

    ipmitool bmc reset warm
    
  5. 若支持 veth 虚拟网络,可尝试建立带内 SSH 访问(需提前配置):

    文档提及:“带内升级BMC的常见做法是先安装veth驱动,使用veth的ipv6地址可以连接BMC”


:hammer_and_wrench: 故障诊断建议

1. 检查日志关键组件状态

在 BMC 可短暂登录时执行以下命令(若 ipmcget 可用):

# 检查 firmware_mgmt 是否运行
ps | grep firmware_mgmt

# 查看日志
journalctl -u firmware_mgmt.service
logread | grep -i "upgrade\|rollback\|fail"

# 检查内核与服务启动情况
dmesg | grep -i "bmc\|firmware"

2. 检查 firmware_mgmt 版本(关键)

KG 显示 firmware_mgmt≥1.0.2 是稳定版本:

解决方法firmware_mgmt 升级到 1.10.44 及以上版本可解决多种升级异常。


:pushpin: 总结

问题 原因 解决方案
回退失败 未使用首升过渡包,导致分区/服务异常 重做出包,manufacture: true
串口被切 BMC 未完全启动,控制权移交 CPU 修复 BMC 固件,恢复服务
SSH 无法登录 /opt/bmc 服务未启动 检查 bmc kepleripmi_coredropbear
rollback 报错 firmware_mgmt 异常或 flash 损坏 尝试 U-Boot 切换或强制恢复

:link: 参考资料


:pushpin: 建议下一步
:backhand_index_pointing_right: 重新构建符合首升规范的 OpenUBMC 25.09 固件包,并严格按照“首升流程”操作,避免跳过关键配置步骤。

如仍无法解决,建议联系 pae 支持团队或参考 [《v2 Upgrade to openUBMC Guide》](https://discuss.openubmc.cn/t/topic/2060) 获取专用恢复工具包。

相关链接:

  1. 如何回退bmc版本?
  2. 【BMC Studio】BMC Studio新特性介绍:基于Qemu进行代码调试与资源协作接口调试
  3. iBMC网页上固件更新失败
  4. V2 iBMC升级到25.09社区版本后串口没法输入输出
  5. CSR配置字典之FirmwareComponentInfo类 | 文档中心 | openUBMC

AC服务器后串口能进uboot命令行吗,进uboot可以倒换。

你好,请问下uboot里面具体怎么倒换呀? 有啥具体的操作步骤不

IMU命令属于产品信息,不建议在论坛讨论,建议私信我或者单独联系项目支持获取。