メインコンテンツまでスキップ

リポジトリーからの更新

リモート・リポジトリーからのサーバー・ファームウェアの更新

CIFS/NFS/HTTPS/オンボード・ファームウェア履歴機能には、XCC プラチナ・ライセンスが必要です。

概要

XCC には、更新バンドル (サービス・パック) パッケージを使用したサーバーでのファームウェアの更新が導入されました。この機能は、単一の API または Redfish クライアント・ツールを使用してシステム内のすべてのファームウェア (OOB ファームウェア・パッケージと IB ファームウェア・パッケージの両方を含む) を更新することによってプロセスを簡略化します。このプロセスでは、適用可能なファームウェア・パッケージの特定、リモート HTTP/HTTPS サーバーからのダウンロードと解凍、Web ブラウザーを介した BMC 内部ストレージへのアップロード、あるいは CIFS または NFS 共有ディレクトリーからのマウントを行う必要があります。

メタデータでファームウェア・ペイロードを指定した状態で CIFS または NFS マウントを使用する場合、メタデータ・ファイルはネットワーク共有ファイル・システムのルート・ディレクトリーに配置する必要があります。サーバーの microSD デバイスには、ユーザーがファームウェア・レベルをロールバック可能にするため、履歴リポジトリーを保存できます。

アウト・オブ・バンドのファームウェア更新をサポートしないペイロードがファームウェア・パッケージに含まれている場合、BMC は、サーバーを起動し、更新を実行する前に BMC にインストールされた組み込み OS イメージからブートするよう構成します。

バンドルとメタデータの更新

更新バンドル (サービス・パック) は、ファームウェア・バンドルの圧縮ファイルです。このバンドルには、システム内のコンポーネント用の 1 つまたは複数のファームウェア・パッケージが含まれています。XCC の「リポジトリーからの更新」機能では、更新バンドル・ファイルが使用されます。解凍されたバンドル・ファイルには、メタデータとペイロード・バイナリーが含まれています。JSON メタデータ・ファイルは、バンドル・ファイルに含まれているファームウェア・イメージの種類に関する情報を XCC に提供し、ペイロード・バイナリーはファームウェア・イメージを提供します。

XCC 内のファームウェア・リポジトリー

更新バンドルには、複数のファームウェア・パッケージを含めることができ、XCC (電子デバイス) は新機能のために 2GB の容量をフラッシュ内に予約しています。XCC は、新しいバンドルを受信すると、古いデータをクリーンアップします。一部のプラットフォームでは、追加のストレージを提供するために MicroSD カードが使用されています。XCC により、最後の更新バンドルが SD カードの履歴リポジトリーに移動されます。ファームウェア履歴リポジトリーには、最大 3 つのバンドルを保存できます。ユーザーは、ファームウェア・ロールバック機能を使用して以前のバンドルに戻すことができます。

  • 更新バンドルに、システムが使用可能な OOB ファームウェア・パッケージのみ含まれている場合、XCC はシステムの電源状態を変更しません。PCI デバイス・ファームウェアを更新するには、システムの電源がオンになっている必要があります。

  • 更新バンドルに、システムが使用可能な IB ファームウェア・パッケージが含まれている場合、XCC は更新前にシステムの電源状態を保存し、更新バンドルが更新されたら電源状態を復元します。更新プロセス中、XCC は組み込み OS にホストをリブートします。

  • 更新バンドルに UEFI ファームウェアの前提条件レベルが含まれているが、現在インストールされている UEFI バージョンがそのレベル以下である場合、XCC はシステムの電源をオフにし、まず UEFI ファームウェア更新を実行します。

  • 更新バンドルに XCC ファームウェアの前提条件レベルが含まれているが、現在インストールされている XCC バージョンがそのレベル以下の場合、XCC 自体のアップグレード後 XCC が最初にリブートされます。

WebGUI を使用した更新

リポジトリーから更新すると、ユーザーは、リモート CIFS/NFS ファームウェア・リポジトリーを使用してサーバー・ファームウェアを同期するように XCC を構成できます。ファームウェア・リポジトリーには、バイナリーおよびメタデータ・ファイル、更新バンドル・メタデータ JSON および対応するバイナリー・ファイルなど、パッケージが含まれている必要があります。XCC はメタデータ JSON ファイルを解析し、この固有のシステム・ハードウェアの OOB 更新をサポートするファームウェア・パッケージを取得してから、バッチ更新を開始します。

更新ステータスには、次の5つがあります。
  • 緑色のチェック・マーク : ファームウェアのアップグレードが正常に完了しました。
  • 赤色 X マーク : ファームウェアのアップグレードに失敗しました。
  • 更新中: ファームウェアはアップグレードのプロセスを実行中です。
  • キャンセル: ファームウェアのアップグレードが取り消されました。
  • 待機中: ファームウェアのアップグレードがデプロイを待機中です。
ユーザーが「更新の停止」をクリックすると、現在のインストール・パッケージの更新が完了した後に、キューにあるアップグレードが取り消されます。

リポジトリーから更新するには、以下のステップを実行します。

  1. リモート・リポジトリー情報を入力した後、リモート・リポジトリーに「接続」をクリックします。
  2. 更新」をクリックして、バッチ更新を開始します。
  3. 詳細を表示」をクリックすると更新ステータスが表示され、上記のように 5 つのステータスのカテゴリーがあります。
  4. ユーザーが「更新の停止」をクリックすると、現在のインストール・パッケージの更新が完了した後にキューにあるアップグレードが取り消されます。
  5. リモート・リポジトリーから切断するには、「切断」をクリックします。
  6. 更新を有効にするために XClarity Controller の再起動が必要な場合は、警告メッセージが表示されます。XClarity Controller を再起動する方法の詳細については、電源操作を参照してください。
システムに MicroSD カードが取り付けられている場合、更新バンドルの更新履歴を確認し、更新バンドルのインデックスを選択してファームウェア・ロールバックを実行できます。このプロセスは、過去の更新バンドルが MicroSD 内に配置されることを除き、リポジトリーからの更新と似ています。

Redfish を使用した更新

Redfish インターフェースは、人間が読んだりスクリプトを作成したりしやすいように JSON 形式のペイロードを使用します。XCC Redfish には、HTTP/HTTPS/SFTP/TFTP 経由で URI から更新バンドル・ファイルを取得するため、標準 API (SimpleUpdate) が用意されています。また、更新バンドル・ファイル UpdateService をプッシュするため、マルチパート HTTP プッシュ更新が用意されています。コマンドまたは単一の 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 は、次に示すように更新バンドル内のすべてのファームウェア・パッケージに関するジョブ・ステップを返します。

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"

ジョブ・ステップが照会されると、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