date: 2026-06-01
tags: [R2520G6, Redfish, Firmware, BIOS, BMC, CPLD, ROT]
last_updated: 2026-06-09
---
## 問題描述
[cite_start]在進行伺服器維護時,手動或親臨現場進行韌體更新往往伴隨許多不便與挑戰 [cite: 2][cite_start]。為了提升效率並落實遠端管理,需要一種能夠簡化 R2520G6 伺服器韌體更新的自動化解決方案 [cite: 2]。
## 解決方案
[cite_start]本方案詳細說明如何利用 **Redfish API 運算指令**,對 R2520G6 伺服器進行遠端的 **BIOS、BMC、CPLD、與 ROT** 韌體升級 [cite: 2, 10]。
### 事前準備
在執行 Redfish 更新指令之前,請務必完成以下準備工作:
1. [cite_start]**關閉伺服器電源**:執行升級指令前,請確保 R2520G6 處於關機狀態 [cite: 11, 12]。
2. [cite_start]**準備韌體檔案**:將所需的帶外(OOB)升級映像檔上傳至您的 Linux 工作目錄中 [cite: 10, 13]。
---
## 韌體升級詳細步驟
###
1. BIOS 韌體更新流程
* [cite_start]
**步驟1:檢查目前版本** 使用以下 Redfish 指令確認當前 BIOS 的作用中版本 [cite: 20, 21]:
```bash
curl -u username:password -k -s https://{BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/bios_active
```
* [cite_start]
**步驟 2:定義更新目標** 使用 `PATCH` 指令將更新對象指定為 `bios_active` [cite: 23, 24]:
```bash
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 狀態碼:`200` [cite: 24, 25])*
*
**步驟3:執行韌體升級** 使用 `POST` 指令上傳對應的升級映像檔 [cite: 26, 27]:
```bash
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 狀態碼:`202` [cite: 27, 28])*
*
**步驟4:等待與驗證** 此時 BMC 的 Task 選單中會出現對應任務,**請耐性等待約 10 分鐘** 讓 BIOS 更新程序完成 [cite: 29]。完成後再次檢查版本以確認更新成功 [cite: 30]。
---
###
2. BMC 韌體更新流程
* [cite_start]
**步驟 1:檢查目前版本** 確認當前 BMC 的作用中版本 [cite: 32, 33]:
```bash
curl -u username:password -k -s https://{BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/bmc_active
```
* [cite_start]
**步驟 2:定義更新目標** 使用 `PATCH` 指令將更新對象指定為 `bmc_active` [cite: 35, 36]:
```bash
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 狀態碼:`200` [cite: 36, 37])*
*
**步驟 3:執行韌體升級** 使用 `POST` 指令上傳對應的升級映像檔 [cite: 38, 39]:
```bash
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 狀態碼:`202` [cite: 39, 40])*
*
**步驟 4:等待與驗證** 任務啟動後,**請等待約 20 分鐘** 讓 BMC 更新程序完成 [cite: 41]。完成後再次檢查版本確認結果 [cite: 42]。
---
###
3. CPLD 韌體更新流程
* [cite_start]
**步驟 1:檢查目前版本** 確認當前 CPLD 的作用中版本 [cite: 44, 45]:
```bash
curl -u username:password -k -s https://{BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/cpld_active
```
* [cite_start]
**步驟 2:定義更新目標** 使用 `PATCH` 指令將更新對象指定為 `cpld_active` [cite: 47, 48]:
```bash
curl -k -u username:password -X PATCH https://{BMC_IP}/redfish/v1/UpdateService -H "Content-Type: application/json" -d '{"HttpPushUriOptions": {"HttpPushUriApplyTime": {"ApplyTime": "Immediate"}},"HttpPushUriTargets": ["cpld_active"],"HttpPushUriTargetsBusy": true,"Oem": {"ApplyOptions": {"ClearConfig": false}}}' -w "\nHTTP_CODE=%{response_code}\n"
```
*(預期回應 HTTP 狀態碼:`200` [cite: 48, 49])*
*
**步驟 3:執行韌體升級** 使用 `POST` 指令上傳對應的升級映像檔 [cite: 50, 51]:
```bash
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 狀態碼:`202` [cite: 51, 52])*
*
**步驟 4:等待與驗證** CPLD 更新速度較快,**僅需等待約 30 秒** 即可完成更新 [cite: 53]。完成後請重新檢查版本 [cite: 54]。
---
###
4. ROT 韌體更新流程
* [cite_start]
**步驟 1:檢查目前版本** 確認當前 ROT 的作用中版本 [cite: 56, 57]:
```bash
curl -u username:password -k -s https://{BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/rot_fw_active
```
*
**步驟 2:定義更新目標** 使用 `PATCH` 指令將更新對象指定為 `rot_fw_active` [cite: 59, 60]:
```bash
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 狀態碼:`200` [cite: 60, 61])*
*
**步驟 3:執行韌體升級** 使用 `POST` 指令上傳對應的升級映像檔 [cite: 62, 63]:
```bash
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 狀態碼:`202` [cite: 63, 64])*
*
**步驟 4:等待與驗證** ROT 更新程序**需要等待約 30 秒** [cite: 65]。完成後重新檢查版本確認是否升級完成 [cite: 66]。
---
## 相關表格
### 韌體元件與對應的檔案名稱對照表
[cite_start]此更新程序必須使用專屬的**帶外(OOB)更新映像檔案** [cite: 13]:
|
韌體元件 (Target) | 映像檔命名規範範例 (Image File Name Pattern) |
預估更新所需時間 |
| :--- | :--- | :--- |
| [cite_start]**BIOS** (`bios_active`) [cite: 14, 24] | [cite_start]`B066xxxxxx_signed_cap_prd.bin` [cite: 14] | [cite_start]約 10 分鐘 [cite: 29] |
| [cite_start]**BMC** (`bmc_active`) [cite: 15, 36] | [cite_start]`B066Axxx.Ixx_signed_cap_prd.bin` [cite: 15] | [cite_start]約 20 分鐘 [cite: 41] |
| [cite_start]**CPLD** (`cpld_active`) [cite: 16, 48] | [cite_start]`E7142_HPM_SCM_Rxx_Vxxx_prd_sign.bin` [cite: 16] | [cite_start]約 30 秒 [cite: 53] |
| [cite_start]**ROT** (`rot_fw_active`) [cite: 17, 60] | [cite_start]`B8066ROTAxx.xx_signed_cap_prd.bi` [cite: 17] | [cite_start]約 30 秒 [cite: 65] |
---
## 參考
- [舊文章連結](舊網址)
No comments:
Post a Comment