跳至主要内容

從儲存庫更新

從遠端儲存庫更新伺服器韌體

CIFS/NFS/HTTPS/機載韌體歷程功能需要有 XCC Platinum 授權。

概觀

XCC 在使用更新套件組合 (Service Pack) 的伺服器上引入了更新韌體。此功能透過使用單一 API 或 Redfish 用戶端工具來更新系統中的所有韌體(包括 OOB 和 IB 韌體套件),以簡化程序。該程序包含識別適用的韌體套件、從遠端 HTTP/HTTPS 伺服器下載並解壓縮它們或透過 Web 瀏覽器將其上傳到 BMC 內部儲存體,或從 CIFS 或 NFS 共用目錄裝載它們。

如果使用 CIFS 或 NFS 裝載,則需要將元資料檔放在共用檔案系統的網路根目錄中,並在元資料中指定韌體有效負載。伺服器的 microSD 裝置可以儲存歷史儲存庫,允許使用者回復韌體版本。

如果韌體套件包含所有不支援頻外韌體更新的有效負載,BMC 將啟動伺服器並將其配置為從安裝在 BMC 中的內嵌 OS 映像檔來開機。

更新套件組合和元資料

更新套件組合 (Service Pack) 是韌體組合的壓縮檔。其中包含系統中元件的一個或多個韌體套件。XCC 的「從儲存庫更新」功能會使用更新組合檔案。解壓縮的組合檔案包含元資料和有效負載二進位檔。JSON 元資料檔為 XCC 提供組合檔案包含的韌體映像檔類型的相關資訊,有效負載二進位檔則提供韌體映像檔。

XCC 內的韌體儲存庫

更新套件組合可以包含多個韌體套件,而 XCC(電子裝置)會在其快閃記憶體中為新功能保留 2GB 的空間。當收到新的套件組合時,XCC 會清除舊資料。部分平台使用 MicroSD 卡提供額外的儲存空間,XCC 則將最近更新的套件組合移到 SD 卡的歷史儲存庫。韌體歷程儲存庫最多可以儲存三個套件組合,使用者可以使用「韌體回復」功能還原成先前的套件組合。

  • 如果更新套件組合僅包含系統可用的 OOB 韌體套件,XCC 不會變更系統電源狀態。若要更新 PCI 裝置韌體,需要開啟系統電源。

  • 如果更新套件組合包含系統可用的 IB 韌體套件,XCC 會在更新之前儲存系統電源狀態,並在更新套件組合更新之後還原電源狀態。在更新程序期間,XCC 會將主機重新開機進入內嵌 OS。

  • 如果更新套件組合包含 UEFI 韌體的必要條件版本,且目前安裝的 UEFI 版本不符或低於該版本,XCC 將關閉系統電源以便先執行 UEFI 韌體更新。

  • 如果更新套件組合包含 XCC 韌體的必要條件版本,且目前安裝的 XCC 版本不符或低於該版本,XCC 會在自我升級後先重新開機。

使用 WebGUI 更新

使用從儲存庫更新,使用者可以配置 XCC,使伺服器韌體與遠端 CIFS/NFS 韌體儲存庫達成同步。韌體儲存庫應該包含套件,其中包括二進位和元資料檔,或更新套件組合元資料 JSON 和對應的二進位檔案。XCC 會剖析元資料 JSON 檔案以選擇支援此特定系統硬體 OOB 更新的韌體套件,然後開始批次更新。

共有五種更新狀態:
  • 綠色勾號 :韌體的升級已順利完成。
  • 紅色 X 標記 韌體的升級失敗。
  • 更新中:韌體正在進行升級程序。
  • 取消:韌體的升級已取消。
  • 等待中:韌體的升級正在等待部署。
使用者按一下停止更新時,將在目前的安裝套件更新完成後,取消佇列中的升級。

如果要從儲存庫更新,請完成下列步驟:

  1. 輸入遠端儲存庫資訊後,按一下連接以連接到遠端儲存庫。
  2. 按一下更新,以開始批次更新。
  3. 按一下檢視詳細資料以查看更新狀態;如上所述,共有 5 種狀態。
  4. 如果按一下停止更新,將在目前的安裝套件更新完成後,取消佇列中的升級。
  5. 按一下中斷連接以中斷與遠端儲存庫的連線。
  6. 如果更新需要 XClarity Controller 重新啟動,才會生效,將會顯示警告訊息。如需有關如何重新啟動 XClarity Controller 的詳細資訊,請參閱電源動作
如果系統安裝了 MicroSD 卡,您可以看到更新套件組合的更新歷程,並選取更新套件組合的索引以執行韌體回復。此程序類似於從儲存庫更新,除了將歷史更新套件組合放在 MicroSD 內。

使用 Redfish 更新

Redfish 介面使用 JSON 格式有效負載,便於人類閱讀和處理指令碼。XCC Redfish 提供標準 API (SimpleUpdate) 以透過 HTTP/HTTPS/SFTP/TFTP 從 URI 擷取更新組合檔案,以及用於推送更新套件組合檔案 UpdateService 的 Multipart HTTP Push Update。您可以使用指令或單一 Redfish 用戶端工具來執行韌體更新和查詢更新狀態。

將組合檔案推送到 XCC 並產生檔案傳輸和驗證作業的範例指令:

curl -s -k -u USERID:PASSW0RD-F 'UpdateParameters={"Targets":[]};type=application/json' -F 'UpdateFile=@./NY7D72-IB-320.zip;type=application/octet-stream' https://10.240.218.157:443/mfwupdate
{
"ld": "f2fd6e9d-cOa6-4b11-b9f6-69a17a1 ,
"Name": "Task f2fd6e9d-cOa6-4b11-b9f6-69a17a1 e579c",
"@odata.type": "#Task.v1_5_1. Task",
"@odata.id': "[redfish/v 1 fTaskServicefTasks/f2fd6e9d-c0a6-4b11-b9f6-69a 17a1 e579c",
"Messages": [l
"Description": "This resource represents a task for a Redfish implementation."
"StartTime": "2022-03-21 TOT 16:41 +00:00",
"TaskMonitor": "/redfish/v1fTaskSen.'ice/c069ed4a-e754-4970-ab9a-922e8a3e076b",
"@odata.context": "'redfish/v1/$metadata#Task.Task",
"@odata.etag":
"PercentCompIete": O,
"HidePayload": true,
"TaskState": "New"
}

在完成傳輸和映像檔驗證之後,回應工作 ID 以進行韌體更新的作業 API 的範例指令:

<strong className="ph b">https://10.240.218.157/
redfish/v1/TaskService/Tasks/f2fd6e9d c0a6 4b11 b9f6 69a17a1e579c</strong>
{
"@odata.etag": ,
"Name-: "Task f2fd6e9d-cOa6-4b11-b9f6-69a17a1e579c",
Task",
"IredfishNI/TaskSemcenasksff2fd6e9d-cOa6-4bI I-b9f6-69aI 7a1e579c",
"Messages": [
{
"Resolution": "Follow the referenced job and monitor the job for further updates.",
"@odata.type":
'MessageSeverity": "0K",
"MessageArgs": [
"IredfishtvI/JobService/J0bs/J0bROOOOOI-lJPdate"
],
"Messageld": "Update. 1 .O.OperationTransitionedToJob",
"Message": "The update operation has transitioned to the job at URI 'Iredfsh/vl IJobService/Jobs/JobR000001-Update'."
}
],
"Description": "This resource represents a task for a Redfish implementation.",
"HidePayIoad": true,
"StartTime":
"TaskMonitor: "'redfish1v1/TaskseNice/c069ed4a-e754-4970-ab9a-922e8a3e076b",
"TaskStatus": "0K",
"@odata.context-: "'redfish/v1/$metadata#Task.Task",
"ld": "f2fd6e9d-cOa6-4b11-b9f6-6ga17a 1 e579c",
"Percentcomplete": 100,
"EndTime": 2022-03-21
"TaskState": "Completed"
}

透過查詢工作 ID,XCC 會在更新套件組合中傳回所有韌體套件的 Job Steps,如下所示:

https://10.240.218.157/redfish/v1/JobService/Jobs/JobR000001-Update
{
"@odata.etag": "\"1647847200776\"", "PercentComplete": 100, "@odata.type": "#Job.v1_0_7.Job",
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update", "Messages": [
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "OK",
"MessageArgs": [ "NY7D72-IB-320.zip",
"HardDiskDrive"
],
"MessageId": "Update.1.0.UpdateSuccessful ",
"Message": " Device 'HardDiskDrive' successfully updated with image 'NY7D72-IB-320.zip'."
},
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "OK",
"MessageArgs": [ "NY7D72-IB-320.zip",
"/redfish/v1/UpdateService/FirmwareInventory/UEFI"
],
"MessageId": "Update.1.0.UpdateSuccessful",
"Message": "Device '/redfish/v1/UpdateService/FirmwareInventory/UEFI' successfully updated with image 'NY7D72-IB-320.zip'. "
},
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "Critical",
"MessageArgs": [ "NY7D72-IB-320.zip",
"/redfish/v1/UpdateService/FirmwareInventory/BMC-Primary"
],
"MessageId": "Update.1.0.ApplyFailed",
"Message": "Installation of image 'NY7D72-IB-320.zip' to '/redfish/v1/UpdateService/FirmwareInventory/BMC-Primary' failed."
}
],
"Description": "This resource is used to represent a job for a Redfish implementation.",
"StartTime": "2022-03-21T07:16:58+00:00",
"Id": "JobR000001-Update",
"EndTime": "2022-03-21T07:20:00+00:00",
"@odata.context": "/redfish/v1/$metadata#Job.Job", "Steps": {
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update/Steps"
},
"Name": "JobR000001-Update", "StepOrder": [
"lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "lnvgy_fw_uefi_ese103a-1.00_anyos_comp.uxz", "lnvgy_fw_xcc_esx301p-0.01_anyos_comp.uxz"
],
"JobState": "Completed"

當查詢 Job Step 時,XCC 會將其他資訊傳回給個別韌體更新:

https://10.240.218.157/redfish/v1/JobService/Jobs/JobR000001- Update/Steps/lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt
{
"@odata.etag": "\"1647847202778\"", "PercentComplete": 1, "@odata.type": "#Job.v1_0_7.Job",
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update/Steps/lnvgy_fw_drives_all.samsung.pm1735.cq- cq37_anyos_comp.lvt",
"Messages": [],
"Description": "This resource is used to represent a job for a Redfish implementation.", "StartTime": "2022-03-21T07:16:58+00:00",
"@odata.context": "/redfish/v1/$metadata#Job.Job",
"Id": "lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "Name": "lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "EndTime": "2022-03-21T07:20:02+00:00",

"JobState": "Completed"

從遠端儲存庫執行下載並更新,如下所示:

system> syncrep
syncrep [options] Launch firmware sync from remote repository options:
-t protocol to connect repository. The local type will reboot host immediately. (eg: syncrep -t samba -l url -u user -p password; syncrep -t local -l /bulk/bundle.tgz;
syncrep -t http -l http://IP/bundle.tgz)
-l location of remote repository (URL format)
-u User
-p Password
-o option (extra option string for samba and nfs mounts)
-d domain (domain for samba mount)
-q query current update status
-c cancel the sync process
-r <> firmware rollback
-gl get repository list