bakbad
(Bakbad)
1
问题描述
通过将iBMC直接升级到25.09版本openUBMC后,回退失败,CPU侧也无法对齐进行访问
环境信息
重现步骤
期望结果
能正常回退,CPU侧也能正常访问,ssh能正常登录
实际结果
升级到openUBMC后,串口被切到了CPU侧,BMC侧的串口仅能短暂的使用。ssh也无法登录。
尝试过的解决方案
在BMC模组串口能用的期间,敲下ipmset -d rollback,提示内部服务错误,回退失败。
bakbad
(Bakbad)
2
想请教下还有啥其它方法能回退BMC模组上的固件版本吗,我现在只是想要回退到之前的iBMC版本就可以了,其它提到的两个问题已经排查到原因了
答案内容由AI生成,仅供参考:
iBMC V2 升级至 OpenUBMC 25.09 后回退失败问题分析与解决方案
根据您提供的问题描述,该问题是关于从 iBMC V2 直接升级到 openUBMC 25.09 后出现的回退失败、串口切换至CPU侧、SSH无法登录等问题。结合知识库中的实体信息、关系网络及文档资料,现对该问题进行全面分析并提供解决建议。
问题概述
| 项目 |
内容 |
| 设备环境 |
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 |
根本原因分析
1. 升级方式未遵循官方指导流程
知识库中多个信息明确指出:
iBMC V2 升级至 openUBMC 必须使用特定的“过渡包”(transition package),并进行配置调整(如 manufacture: true)。
文档引用(DC-3):
“v2版本可直接升级openubmc,第一次升级需要在出包时和升级后做一些操作,此后可以根据自己的选择(社区版本或伙伴自签名版本)来升级后续的版本……”
而用户直接升级到 OpenUBMC25.09,未使用正确构建的“首升包”,极可能导致以下后果:
- 固件签名验证失败或信任链异常
- 系统分区不兼容,导致A/B分区状态混乱
rollback 功能所需元数据丢失或不完整
- BMC服务启动异常,进而影响 SSH、Web、串口等服务初始化
2. 回退失败的根本原因:固件版本回滚机制失效
KG 实体 BMC Upgrade 和 Upgrade Failure 明确说明:
- BMC升级过程中存在 自动回退机制,若新固件启动失败超过阈值(通常为3次),系统将自动切回原版本。
- 但该机制依赖于固件完整性、配置一致性以及
firmware_mgmt服务的正确运行。
故障点:
ipmcset -d rollback 报 “内部服务错误”,表明 firmware_mgmt 或 bmc kepler 相关服务未正常启动。
- 搜索结果[2]中提到:“升级成功后复位iBMC,iBMC系统启动失败,三次未启动成功之后触发分区切换” —— 说明回退机制是“被动触发”,不能依赖命令手动触发。
当前 rollback 命令失效,可能是因为 firmware_mgmt 服务未启动、flash分区损坏或密钥管理异常。
3. 串口被切至CPU侧、SSH无法登录的原因
- 串口控制权变更:BMC与CPU之间存在共享串口通道(如 UART)。正常情况下由 BMC 初始化并提供 shell 接口。但当 BMC 固件异常或未完全启动时,串口会被 CPU 接管用于其 OS 输出(如 openEuler 启动日志)。
- SSH 服务未启动:SSH 依赖于
dropbear 或 sshd 守护进程,这些服务通常由 /opt/bmc 环境加载。若 BMC 固件异常,/opt/bmc 文件系统挂载失败,或关键服务(如 bmc kepler、ipmi_core)崩溃,则 SSH 不会启动。
解决方案与建议
方案一:使用正确方式重做首升(推荐)
步骤 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 安全升级
步骤 3:升级后验证并清除临时配置
- 升级完成后,可将
manufacture 改为 false 以启用定制功能。
- 检查
/opt/bmc 是否正常挂载,服务是否启动。
方案二:若已变砖,尝试进入 U-Boot 强制恢复
参考文档(DC-1)技术支持回复:
“AC服务器后串口能进uboot命令行吗,进uboot可以倒换。”
操作步骤:
- 断电 + 串口连接
- 上电瞬间连续发送
Ctrl+C 或敲击回车,尝试中断 U-Boot 启动流程。
- 进入 U-Boot 命令行后执行:
printenv # 查看当前环境变量
setenv bootargs root=/dev/mtdblock4 ... # 确保启动参数正确
saveenv
run multi_updata # 若支持双分区切换
- 手动切换到备份分区(如
bootcmd_backup):setenv bootcmd '${bootcmd_backup}'
saveenv
reset
若您的硬件(920模块+自研底板)无物理串口进入 U-Boot,则此方法不可行,需考虑 JTAG 或烧录器抢救。
方案三:通过带内通道恢复 BMC(适用于能访问主机 OS 的场景)
由于您运行的是 openEuler 2203,可尝试通过 带内通道(in-band IPMI) 恢复。
步骤如下:
-
在 openEuler 主机上安装 ipmitool:
yum install ipmitool -y
-
加载 ipmi_devintf 和 ipmi_msghandler 驱动:
modprobe ipmi_devintf
modprobe ipmi_msghandler
-
测试本地 IPMI 通信:
ipmitool mc info
-
若能通信,尝试发送重启命令:
ipmitool bmc reset warm
-
若支持 veth 虚拟网络,可尝试建立带内 SSH 访问(需提前配置):
文档提及:“带内升级BMC的常见做法是先安装veth驱动,使用veth的ipv6地址可以连接BMC”
故障诊断建议
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 及以上版本可解决多种升级异常。
总结
| 问题 |
原因 |
解决方案 |
| 回退失败 |
未使用首升过渡包,导致分区/服务异常 |
重做出包,manufacture: true |
| 串口被切 |
BMC 未完全启动,控制权移交 CPU |
修复 BMC 固件,恢复服务 |
| SSH 无法登录 |
/opt/bmc 服务未启动 |
检查 bmc kepler、ipmi_core、dropbear |
| rollback 报错 |
firmware_mgmt 异常或 flash 损坏 |
尝试 U-Boot 切换或强制恢复 |
参考资料
建议下一步:
重新构建符合首升规范的 OpenUBMC 25.09 固件包,并严格按照“首升流程”操作,避免跳过关键配置步骤。
如仍无法解决,建议联系 pae 支持团队或参考 [《v2 Upgrade to openUBMC Guide》](https://discuss.openubmc.cn/t/topic/2060) 获取专用恢复工具包。
相关链接:
- 如何回退bmc版本?
- 【BMC Studio】BMC Studio新特性介绍:基于Qemu进行代码调试与资源协作接口调试
- iBMC网页上固件更新失败
- V2 iBMC升级到25.09社区版本后串口没法输入输出
- CSR配置字典之FirmwareComponentInfo类 | 文档中心 | openUBMC
AC服务器后串口能进uboot命令行吗,进uboot可以倒换。
bakbad
(Bakbad)
6
你好,请问下uboot里面具体怎么倒换呀? 有啥具体的操作步骤不
IMU命令属于产品信息,不建议在论坛讨论,建议私信我或者单独联系项目支持获取。