BMC固件损坏时恢复环境指导

本帖收集各类BMC固件/分区损坏后的修复方法,持续更新,当前已收录以下常见场景

  1. SSH能连上,WEB连不上
  2. WEB能连接,SSH连不上
  3. OS正常,但是SSH、WEB不可用,使用带内通道给bmc传包升级
  4. 用户密码忘记了,OS使用ipmitool添加BMC账户test
  5. SSH、WEB、TELNET都连接不上,串口切换BMC分区
  6. 如果每个分区都损坏,返厂维修

一、SSH能连上,WEB连不上

  1. 使用xshell或者mobaxterm工具连接上BMC后,通过xftp将正常版本的BMC升级包(image.hpm)放置在tmp目录下
  2. 使用ipmcset -d upgrade -v /tmp/image.hpm升级后恢复

二、WEB能连接,SSH连不上

  1. 在BMC固件管理-BMC升级页面直接升级正常版本的BMC升级包。

三、OS正常,但是SSH、WEB不可用,使用veth给bmc传包升级

  1. 登录待修复BMC节点的OS
  2. 确保虚拟网口已加载,通过ifconfig veth查看
  3. 如果看不到虚拟网口,则需要使用insmod命令加载对应操作系统的驱动host_edma_drv.ko和host_veth_drv.ko
  4. 执行send_file脚本发送BMC包image.hpm到BMC的tmp目录下image.hpm,send_file脚本内容如下
send_file()
{
	ssh_ip=$1
	src_file=$2
	des_path=$3
	user="Administrator"
	pwd="xxx"

	if [ $# -lt 3 ] ; then
	   echo "Parameter error!"
	   return 1
	fi
	
	expect << EOF
	set timeout 300
	spawn scp -6r -l 4096 ${src_file} ${user}@${ssh_ip}:${des_path}
	expect {
	"*yes/no" { send "yes\r"; exp_continue }
	"*password:" { send "$pwd\r" }
	}

	expect eof
EOF
	return 0
}
# 如虚拟网口地址为`a:b:c:d:e`
send_file "\[a:b:c:d:e%veth\]" image.hpm /tmp/image.hpm
  1. 在带内执行BMC升级命令,以/tmp/image.hpm升级包为例:
    ipmitool -H {ip_address} -I lanplus -p 623 -U Administrator -P {password} raw 0x30 0x91 0xdb 0x07 0x00 0x06 0xAA 0x00 0x00 0x00 0x0e 0x2f 0x74 0x6d 0x70 0x2f 0x69 0x6d 0x61 0x67 0x65 0x2e 0x68 0x70 0x6d

四、用户密码忘记了,OS使用ipmitool添加BMC账户test

  1. 在OS放入ipmitool工具,增加用户 ipmitool user set name 5 test
  2. 设置新用户密码 ipmitool user set password 5 ‘Admin@90000’
  3. 给用户加管理员权限 ipmitool user priv 5 4
  4. 用户使能 ipmitool user enable 5
    PS:权限设置:2是user 3是operator 4是administrator

五、SSH、WEB、TELNET都连接不上,串口切换BMC分区

前期准备工作

  1. 环境上升级的是debug版本的hpm包
  2. 环境上有能正常使用的串口

执行步骤

1、近端AC掉电服务或其他可使BMC重启的方法让BMC复位;
2、复位后出现提示时按照提示进入uboot;
3、切换分区,并启动BMC,切换回可用的分区;
4、在可用的分区升级正常的BMC版本恢复环境。

注:由于不同机型具体命令可能有差异,请联系对应项目支持人员获取

六、如果每个分区都损坏

需要联系厂商将机器返厂维修

9 个赞