BMC在没有网络的时候如何升级固件问题分析
更新时间: 2026/06/02
在Gitcode上查看源码问题背景
- 单板类型:NA;
- 软件版本:openUBMC 26.03;
- 涉及功能:BMC无网络升级、串口调试、分区切换;
- 触发条件:BMC升级后网络不通、Web/SSH不可用,仅串口可访问;
- 业务表现:预期可以升级BMC固件,或者切换BMC的分区,从备用分区启动;实际BMC可以正常启动,可以进串口,但是网络ping不通。
问题链接
问题复现步骤
- BMC升级后网络不通,Web/Telnet无法使用;
- 仅串口可登录,且一段时间后自动被切走;
- 尝试OS带内IPMI方式升级;
关键日志信息
尝试过使用OS端通过IPMI命令升级固件报错如下,应该是BMC那端没有打开带内的升级通道。
带内升级报错:command disabled [未激活] 串口启动后自动切换至OS侧,无法持续操作
定位过程
- 查看串口信息,但是串口会被切走,导致定位出问题;
- 使能DFT,使能失败则无法尝试带内升级,命令如下:
bash
ipmitool -H <ip_addr> -I lanplus -p 623 -U Administrator -P xxx(密码) -C 17 raw 0x30 0x90 0x20 0xdb 0x07 0x00 0x01- 确认环境是否有镜像环境,存在的话考虑恢复环境: 接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本地升级。