如何使用 Redfish 命令远程升级 R2520G6 固件
本文提供使用 Redfish 命令远程升级 R2520G6 服务器固件的解决方案,解决手动或现场升级固件所面临的挑战。
概览
要在 R2520G6 上执行远程固件升级,请按照以下步骤使用 Redfish 命令操作:
- 定义更新目标 — 使用 Redfish 的 PATCH 命令来指定要更新的组件。
- 启动固件更新 — 使用 Redfish 的 POST 命令,针对先前定义的目标开始升级固件。
- 准备固件文件 — 将 BIOS、BMC 和 ROT 固件文件上传至 Linux 工作目录,以供更新流程使用。
- 关闭服务器电源 — 执行 Redfish 命令升级固件前,请确认 R2520G6 已关机。
注意: 此流程需要带外(Out-of-Band, OOB)升级镜像文件。
所需固件文件
在开始之前,请将以下固件文件放置于 Linux 工作目录中:
| 组件 | 文件名格式 |
|---|---|
| BIOS | B066xxxxxx_signed_cap_prd.bin |
| BMC | B066Axxx.Ixx_signed_cap_prd.bin |
| ROT | B8066ROTAxx.xx_signed_cap_prd.bin |
BIOS 升级
步骤 1 — 检查当前版本
curl -u username:password -k -s \
https://{BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/bios_active
步骤 2 — 定义更新目标 (PATCH)
curl -k -u username:password -X PATCH \
https://{BMC_IP}/redfish/v1/UpdateService \
-H "Content-Type: application/json" \
-d '{
"HttpPushUriOptions": {
"HttpPushUriApplyTime": { "ApplyTime": "Immediate" }
},
"HttpPushUriTargets": ["bios_active"],
"HttpPushUriTargetsBusy": true,
"Oem": { "ApplyOptions": { "ClearConfig": true } }
}' \
-w "\nHTTP_CODE=%{response_code}\n"
预期响应: HTTP_CODE=200
步骤 3 — 上传并应用固件 (POST)
curl -k -u username:password -X POST \
https://{BMC_IP}/redfish/v1/UpdateService/update \
-H "Content-Type: application/octet-stream" \
--data-binary "@{Image_path}" \
-w "\nHTTP_CODE=%{response_code}\n"
预期响应: HTTP_CODE=202
结果
BMC 任务菜单中会出现一个任务。请等待约 10 分钟 让 BIOS 升级完成,然后重新执行步骤 1 以确认新版本。
BMC 升级
步骤 1 — 检查当前版本
curl -u username:password -k -s \
https://{BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/bmc_active
步骤 2 — 定义更新目标 (PATCH)
curl -k -u username:password -X PATCH \
https://{BMC_IP}/redfish/v1/UpdateService \
-H "Content-Type: application/json" \
-d '{
"HttpPushUriOptions": {
"HttpPushUriApplyTime": { "ApplyTime": "Immediate" }
},
"HttpPushUriTargets": ["bmc_active"],
"HttpPushUriTargetsBusy": true,
"Oem": { "ApplyOptions": { "ClearConfig": false } }
}' \
-w "\nHTTP_CODE=%{response_code}\n"
预期响应: HTTP_CODE=200
步骤 3 — 上传并应用固件 (POST)
curl -k -u username:password -X POST \
https://{BMC_IP}/redfish/v1/UpdateService/update \
-H "Content-Type: application/octet-stream" \
--data-binary "@{Image_path}" \
-w "\nHTTP_CODE=%{response_code}\n"
预期响应: HTTP_CODE=202
结果
BMC 任务菜单中会出现一个任务。请等待约 20 分钟 让 BMC 升级完成,然后重新执行步骤 1 以确认新版本。
ROT 升级
步骤 1 — 检查当前版本
curl -u username:password -k -s \
https://{BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/rot_fw_active
步骤 2 — 定义更新目标 (PATCH)
curl -k -u username:password -X PATCH \
https://{BMC_IP}/redfish/v1/UpdateService \
-H "Content-Type: application/json" \
-d '{
"HttpPushUriOptions": {
"HttpPushUriApplyTime": { "ApplyTime": "Immediate" }
},
"HttpPushUriTargets": ["rot_fw_active"],
"HttpPushUriTargetsBusy": true,
"Oem": { "ApplyOptions": { "ClearConfig": false } }
}' \
-w "\nHTTP_CODE=%{response_code}\n"
预期响应: HTTP_CODE=200
步骤 3 — 上传并应用固件 (POST)
curl -k -u username:password -X POST \
https://{BMC_IP}/redfish/v1/UpdateService/update \
-H "Content-Type: application/octet-stream" \
--data-binary "@{Image_path}" \
-w "\nHTTP_CODE=%{response_code}\n"
预期响应: HTTP_CODE=202
结果
请等待约 30 秒 让 ROT 升级完成,然后重新执行步骤 1 以确认新版本。