iBMC升级到openUBMC 25.09后,CPU侧无法启动

// 此模板仅供参考,如果不适用可以修改

问题描述

iBMC直接升级到openUBMC25.09后,CPU侧无法启动

环境信息

  • 软件版本:OpenUBMC2509

  • 硬件配置:Hi1711模组+KP920模组

重现步骤

  1. 在iBMC的web界面选择升级openUBMC固件

期望结果

openUBMC正常升级,CPU侧系统能正常启动

实际结果

openUBMC侧接串口能观察到在启动,但CPU侧接了串口没任何输出打印

尝试过的解决方案

回退到iBMC版本,CPU侧能正常输出打印

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

iBMC 升级到 openUBMC 25.09 后 CPU 侧无法启动问题分析

问题描述

用户将 iBMC 固件直接升级至 openUBMC 25.09 版本后,发现 CPU 侧系统无法正常启动,表现为在连接串口时无任何输出打印。尽管 openUBMC 本身可以观察到启动过程,但 CPU 系统未被正常激活或初始化。


环境信息

  • 软件版本:OpenUBMC 25.09(即版本 25.09.00.01 或 v2509)
  • 硬件配置:Hi1711 BMC 模组 + 鲲鹏 920(KP920)CPU 模组
  • 升级方式:通过 iBMC Web 界面进行固件升级

实际现象

  • 升级完成后,BMC 侧(openUBMC)可通过串口观察到启动日志。
  • CPU 侧串口无任何输出,表明操作系统未启动或硬件未正确初始化。
  • 尝试 回退至原 iBMC 固件 后,CPU 侧可恢复输出,系统启动正常,说明问题由 openUBMC 25.09 引发。

根本原因分析

根据知识图谱和文档内容,该问题的根本原因可归纳为以下几点:

1. 固件不兼容导致启动链断裂

  • iBMC 是华为官方提供的成熟 BMC 固件,与 CPU、BIOS 及硬件平台深度耦合。
  • openUBMC 是社区开发的开源替代固件,虽然兼容部分华为平台(如 Hi3093、Hi1711),但在升级路径上存在风险。
  • 文档明确指出:从 iBMC 直接升级到 openUBMC 25.09 后可能引发回退失败和 CPU 通信异常(见参考 #1)。

2. 缺少 HPM 过渡版本升级步骤

  • 正确的升级路径应包含中间状态,即:
    iBMC → HPM Transition Version → openUBMC
    
  • 若跳过过渡版本直接刷入 openUBMC,可能导致:
    • BMC 与 CPU 之间的通信协议错乱
    • 上电策略(PowerOnStrategy)配置异常
    • 串口路由被错误地切换至 BMC 侧,导致 CPU 无法输出日志

3. CPLD 或 BIOS 固件未同步更新

  • 升级 BMC 固件后,CPLD 和 BIOS 固件需通过断电才能生效
  • 若未执行完整断电流程(AC Power Cycle),则:
    • CPLD 仍运行旧逻辑
    • BIOS 可能无法识别新的 BMC 状态
    • 导致 CPU 初始化失败

相关证据

  • CPLD firmware updates are applied only after the system is powered down following iBMC upgrade.
  • The BIOS firmware requires a system reboot or power cycle to activate after an update.

4. openUBMC 25.09 存在已知问题

  • openUBMC 25.09 版本存在串口被切换至 CPU 侧导致 BMC 控制失效的问题。
  • 用户 bakbad 曾报告:“升级到 openUBMC 后,串口被切到了 CPU 侧,BMC 侧仅能短暂使用”,与本问题高度一致(参考文档 #1)。
  • ipmset -d rollback 回退命令也提示“内部服务错误”,说明系统已处于不稳定状态。

解决方案建议

:white_check_mark: 方案一:使用过渡版本重新升级(推荐)

遵循标准升级路径,避免直接跳转:

  1. 先降级回原始 iBMC 版本
    • 使用烧录器或恢复工具将 BMC 固件恢复至出厂 iBMC 状态。
  2. 升级至 HPM 过渡版本
    • 执行一次官方 HPM 格式的过渡升级,确保底层兼容性。
    • 命令示例(CLI):
      ipmcset -d upgrade -v /tmp/Image.hpm
      
  3. 再升级至 openUBMC 25.09
    • 使用签名正确的 HPM 包进行升级。
    • 升级后执行完全下电(AC Power Off)至少 30 秒,确保 CPLD 和 BIOS 生效。

:white_check_mark: 方案二:检查并修复启动配置

若必须保留 openUBMC 环境,尝试以下诊断操作:

  1. 确认电源策略是否正常

    • 检查 PowerOnStrategyExceptions 是否被 disable。
    • 使用 Redfish 接口或 CLI 验证上电逻辑:
      ipmcget -t mc -d info
      
  2. 验证串口路由设置

    • 检查 openUBMC 是否将串口默认路由至 BMC 而非 CPU。
    • 可通过 busctl 查询当前串口映射状态:
      busctl call ...
      
  3. 强制触发一次完整上电循环

    • 断开电源线 > 等待 > 重新通电 > 手动触发上电命令:
      ipmcset -d power -v on
      

预防建议

建议项 说明
不要跳过过渡版本 HPM Transition 是确保 iBMC → openUBMC 平滑迁移的关键步骤
升级后务必断电重启 保证 CPLD、BIOS、VRD 等组件固件生效
提前备份原固件 避免回退失败时设备变砖
在测试环境验证 生产环境前应在相同硬件上充分测试 openUBMC 兼容性

参考资料

:warning: 注意:目前社区已有明确案例表明,非标准路径升级 openUBMC 会导致严重的系统不可用问题,建议严格遵循官方发布流程操作。

相关链接:

  1. V2版本iBMC直接升级到openUBMC 25.09后回退失败
  2. 【提问求助】25.06源码构建的qemu,启动后网页无法打开
  3. 基础通用问题FAQ
  4. 1711模组更新openUBMC固件
  5. 签名包制作指导 | 文档中心 | openUBMC

咨询了公司的硬件同事,说是存放BIOS的Flash那边有个选择信号(SEL_GPIO0),说是由BMC这边控制的,但是我是在iBMC的时候升级了BIOS 的固件版本,然后再升级的openUBMC固件,这样应该不会对BIOS的Flash产生影响呀? 难道openUBMC默认就控制这个了选择信号到BMC侧?导致CPU侧无法启动

CPU侧没有上电,所以没启动

我这边也遇到一样的问题,想问下是怎么解决的?

我们这边上电 是载板上的CPLD控制的,不清楚你们那边是啥情况

如果也是CPLD控制的,可以通过SMC命令字和CPLD通信,进行手动上电(需要CPLD那边实现相关命令字),和你们的硬件或者CPLD的同事沟通下

命令字中有和按键相关的btn lock命令字,BMC不解锁无法上电,改逻辑命令字默认值改成非lock状态,就可以按键上电,不受BMC影响