背景
看到有的测试同学对于通过IPMI、Redfish进行带内升级BMC等固件不是很了解,本帖结合IPMI和Redfish接口说明分享一下带内固件升级的方法。一般通过带外途径升级即可,产测等场景下可能有带内升级的述求。
整体说明
- 带内升级BMC操作流程较复杂,建议优先带外升级
- 本帖使用麒麟V10操作系统进行说明,其他操作系统可能略有差异
- BMC需要使用对应版本的装备包才能支持带内升级操作
- 内容如有错漏还请指正,有其他方案欢迎补充
方案一、uREST方案操作步骤(推荐)
通过uREST可以一步完成升级,相较IPMI等方式简单很多
命令格式
./urest [–error-code]-H HOST [-p PORT] -U USERNAME [–timeout=TIMEOUT]** [–cert CERT] upgradefw [-F FILE] [-i IMAGEURI** ] [-PRO {https,scp,sftp,cifs,nfs}] [-U ACCESSUSER]
./urest -H [fe80::9e7d:a3ff:fe28:6ffa%veth] -U Administrator upgradefw -i ~/image.hpm -PRO scp -U ACCESSUSER
uREST的安装和命令详解请参考:查询用户 - 鲲鹏服务器主板 uREST 用户指南 01 - 华为,这里不再赘述
方案二、IPMI方案操作步骤
1、环境准备
1.1、使能DFT命令
ipmitool raw 0x30 0x90 0x20 0xdb 0x07 0x00 0x01
1.2、使能BMC IPv6网络
- 加载驱动
modprobe host_veth_drv - 打开veth
ifconfig veth up
2、固件上传
scp -6r -l 4096 {file_name} {user_name}@[fe80::9e7d:a3ff:fe28:6ffa%veth]:{bmc_folder}
- file_name:即OS下准备好的BMC固件包
- user_name:BMC用户名,一般即Administrator
- bmc_folder:存放路径,例如/tmp/image.hpm,必须放在/tmp路径下
通过IPMI启动升级
- initiate upgrade
ipmitool raw 0x30 0x91 0xdb 0x07 0x00 0x06 0xAA 0x00 0x01 0x00 0x0E 0x2F 0x74 0x6D 0x70 0x2F 0x69 0x6D 0x61 0x67 0x65 0x2E 0x68 0x70 0x6D
命令很长,这里就不一一解释了,详情请自行查看IPMI接口说明的14.67 Upgrade Component章节,最后的0x2F 0x74 0x6D 0x70 0x2F 0x69 0x6D 0x61 0x67 0x65 0x2E 0x68 0x70 0x6D是/tmp/image.hpm对应的ASCII码 - finish upgrade
ipmitool raw 0x30 0x91 0xdb 0x07 0x00 0x06 0x55
查询升级进度
ipmitool raw 0x30 0x91 0xdb 0x07 0x00 0x06 0x00
看0xDB0700后面这个字节即可
升级完成后等待BMC自动重启即可,若是没有自动重启可以手动重启
ipmicmd -k "0f 00 06 02" smi 0


