BMC在没有网络的时候如何升级固件问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

  • 单板类型:NA;
  • 软件版本:openUBMC 26.03;
  • 涉及功能:BMC无网络升级、串口调试、分区切换;
  • 触发条件:BMC升级后网络不通、Web/SSH不可用,仅串口可访问;
  • 业务表现:预期可以升级BMC固件,或者切换BMC的分区,从备用分区启动;实际BMC可以正常启动,可以进串口,但是网络ping不通。

问题链接

社区论坛

问题复现步骤

  1. BMC升级后网络不通,Web/Telnet无法使用;
  2. 仅串口可登录,且一段时间后自动被切走;
  3. 尝试OS带内IPMI方式升级;

关键日志信息

尝试过使用OS端通过IPMI命令升级固件报错如下,应该是BMC那端没有打开带内的升级通道。

带内升级报错:command disabled [未激活] 串口启动后自动切换至OS侧,无法持续操作

定位过程

  1. 查看串口信息,但是串口会被切走,导致定位出问题;
  2. 使能DFT,使能失败则无法尝试带内升级,命令如下:
bash
  ipmitool -H <ip_addr> -I lanplus -p 623 -U Administrator -P xxx(密码) -C 17 raw 0x30 0x90 0x20 0xdb 0x07 0x00 0x01
  1. 确认环境是否有镜像环境,存在的话考虑恢复环境: 接BMC的串口,进系统后快速输入用户名和密码,使用命令/opt/debug/busybox telnet localhost进入debug模式,使用命令ipmcset -d serialdir -v 1,将串口切换道BMC侧,使用命令ipmcset -d rollback将BMC切到备用分区启动。BMC的网络恢复正常。

问题原因

  • 升级后主分区异常,网络服务与配置未生效;
  • 系统默认将串口切换到OS,导致BMC侧操作中断;
  • BMC未开启带内升级通道,IPMI命令被限制;
  • 无网络环境无法使用Web/远程方式升级。

解决方案

  • 接BMC的串口,进系统后快速输入用户名和密码,使用命令/opt/debug/busybox telnet localhost进入debug模式;
  • 使用命令ipmcset -d serialdir -v 1,将串口切换道BMC侧;
  • 使用命令ipmcset -d rollback将BMC切到备用分区启动;
  • BMC的网络恢复正常;
  • 无网络本地升级:SFTP上传固件到/tmp,执行ipmcset -d upgrade本地升级。