固件升级指导
更新时间: 2026/11/11
在AtomGit上查看源码固件升级接口由多个,其中包括web页面升级,cli命令升级,Redfish接口升级,snmp接口升级及ipmi命令升级等,但是常用的有web页面升级及cli升级,下文将分别介绍。
web页面升级
操作位置:iBMC管理>>固件升级>>固件更新
HPM 包升级示例
本节适用于需要在真实设备上升级和验证 HPM 的场景。升级前应确认固件适配目标设备,并满足设备的签名校验要求,参见固件签名机制。仅生成 HPM 包的任务无需执行本节。
你可能需要联系贵司的环境管理员,使用IP连接真实环境,以IP为192.168.2.100为例,输入账号密码;
登录后首页点击openUBMC管理->固件升级;
点击固件更新->升级文件,上传升级包文件(生成目录为manifest/output/rootfs_openUBMC.hpm),点击开始升级;
已完成升级;
升级显示完成后,会进入重启流程,稍后 web 端会断开连接。重新连接后,可在 openUBMC管理->版本信息 中确认当前运行版本是否为本次升级的目标版本,再进行功能验证;
升级后功能验证
你可以在浏览器中学习和了解openUBMC的webui功能,也可以使用ssh登录环境操作cli接口,或者使用ipmitool工具连接环境调用ipmi命令。
cli命令升级
xshell登录后,下发如下命令即可升级:
命令格式:
shell
ipmcset -d upgrade -v <filepath> [activemode] [-s <systemid>]升级 BMC 本地 /tmp 目录下的升级包,完成后自动重启生效:
shell
ipmcset -d upgrade -v /tmp/image.hpm 1参数说明:
filepath:升级包路径,支持 BMC 本地/tmp目录或 https/sftp/nfs/cifs/scp 远程 URL,长度不超过 255 字符activemode:0升级后需手动重启;1升级后自动重启(默认)systemid:Multi-Host 场景指定待升级的 host(须在位),不指定默认升级所有 host
Redfish命令升级
- URL POST
https://<device_ip>/redfish/v1/UpdateService/Actions/Oem/{{OemIdentifier}}/UpdateService.ParallelUpdate - 请求头:
http
X-Auth-Token : auth_value
Content-Type : header_type- 请求消息体:
json
{
"Packages": packages_value,
"Stage": true
}| 参数 | 参数说明 | 取值 |
|---|---|---|
| device_ip | 登录设备的IP地址 | IPv4或IPv6地址 |
| auth_value | 请求消息的鉴权参数 | 可通过/redfish/v1/SessionService/Sessions创建会话时获得 |
| header_type | 请求消息的格式 | 支持的消息格式包括:application/json或者application/json;charset=utf-8 |
| packages_value | 升级参数 | 对象数组,内容如下: SystemId TransferProtocol ImageURI ForceUpdate Stage |
| SystemId | Multi-Host场景(一个BMC管理多个host主机)下指定升级某host的固件 | 字符串[1~N]:表示升级第[1~N]个host上的固件,要求对应的host在位 |
| TransferProtocol | BMC从远程服务器下载升级包时使用的协议 | 取值:HTTPS、SCP、SFTP、CIFS、NFS。本地升级不需要该字段 |
| ImageURI | 升级包所在路径 | 升级包的URL(支持本地tmp目录升级),本地tmp目录支持的最大长度为255个字符,远程目录支持的最大长度为1004个字符(传输协议长度不计算在内,如"sftp://") |
| ForceUpdate | 固件是否强制升级 | true:版本号一致的固件升级 false:版本号一致的固件不升级 可选参数,如果不加该参数,默认为版本号一致的固件升级 |
| Stage | 固件是否暂存 | true:暂存 false:不暂存 可选参数,不加该参数默认为不暂存 |
SNMP接口升级
启动升级
shell
snmpset -t 10 -v3 -l priv -a <SNMPv3鉴权算法> -X <SNMPv3加密算法> -u <username> -A <password> -X <SNMPv3加密密码> <bmc_ip:端口> 1.3.6.1.4.1.{SnmpOemIdentifier}.30.1.0 s <filepath>查看升级状态
shell
snmpget -t 10 -v3 -l priv -a <SNMPv3鉴权算法> -X <SNMPv3加密算法> -u <username> -A <password> -X <SNMPv3加密密码> <bmc_ip:端口> 1.3.6.1.4.1.{SnmpOemIdentifier}.30.2.0IPMI命令升级
启动升级
shell
ipmitool -H <bmc_ip> -I lanplus -p 623 -U <username> -P <password> -C 17 raw 0x30 0x91 <manufacture_id(三个字节)> 0x06 0xaa 0x00 0x00 <flag> <length> <filepath>flag:[0-6]:offset [7]级联标志,0=最后一帧数据 1=后面还有数据length:本帧数据的长度filepath:路径名,单帧请求不超过16个字节
例:
shell
ipmitool -H <bmc_ip> -I lanplus -p 623 -U <username> -P <password> -C 17 raw 0x30 0x91 <manufacture_id(三个字节)> 0x06 0xaa 0x00 0x00 0x00(flag) 0x0c(length,此处为/tmp/BMC.hpm的长度,即12个字节) 0x2f 0x74 0x6d 0x70 0x2f 0x42 0x4d 0x43 0x2e 0x68 0x70 0x6d(filepath,此处为/tmp/BMC.hpm)