Aus Repository aktualisieren
Aktualisierung der Server-Firmware aus einem Remote-Repository
Übersicht
XCC hat die Aktualisierung von Firmware auf einem Server mithilfe des Aktualisierungspakets (Service Packs) eingeführt. Diese Funktion vereinfacht den Prozess, indem sie eine einzelne API oder ein Redfish-Client-Tool verwendet, um die gesamte Firmware im System zu aktualisieren, einschließlich OOB- und IB-Firmwarepaketen. Der Prozess umfasst das Identifizieren anwendbarer Firmwarepakete, das Herunterladen und Extrahieren dieser Firmwarepakete aus einem HTTP/HTTPS-Remoteserver bzw. das Hochladen in den internen BMC-Speicher über einen Webbrowser bzw. das Hochladen aus einem gemeinsam genutzten CIFS- oder NFS-Verzeichnis.
Die Metadatendateien müssen im Stammverzeichnis des gemeinsam genutzten Dateisystems im Netzwerk platziert werden, wenn ein CIFS- oder NFS-Anhänger verwendet wird, wobei die Firmware-Nutzdaten in den Metadaten spezifiziert werden. Die MicroSD-Gerät des Servers kann historische Repositorys speichern, sodass Benutzer die Firmwareversionen zurücksetzen können.
Wenn die Firmwarepakete Nutzdaten enthalten, die keine externe Firmwareaktualisierung unterstützen, startet der BMC den Server und konfiguriert ihn für das Booten vom integrierten Betriebssystem-Image, das im BMC vor der Aktualisierung installiert wurde.
Aktualisierungspaket und Metadaten
Das Aktualisierungspaket (Service Packs) ist eine komprimierte Datei eines Firmwarepakets. Es enthält ein oder mehrere Firmwarepakete für die Komponenten in einem System. Die Aktualisierungspaketdatei wird von der XCC-Funktion „Aus Repository aktualisieren“ verarbeitet. Die entpackte Paketdatei enthält Metadaten und Nutzdaten-Binärdateien. JSON-Metadatendateien bieten XCC Informationen über die Art der in der Paketdatei enthaltenen Firmware-Images, und die Nutzdaten-Binärdateien stellen die Firmware-Images bereit.
Firmware-Repository in XCC
Das Aktualisierungspaket kann mehrere Firmwarepakete enthalten, und XCC (ein elektronisches Gerät) reserviert 2 GB an Speicherplatz im Flashspeicher für neue Funktionen. Wenn ein neues Paket empfangen wird, bereinigt XCC alte Daten. Einige Plattformen verwenden eine MicroSD-Karte, um zusätzlichen Speicherplatz zur Verfügung zu stellen. XCC verschiebt dann das zuletzt aktualisierte Paket zum historischen Repository der SD-Karte. Im Firmware-Verlaufsspeicher können bis zu drei Pakete gespeichert werden. Mit der Funktion „Firmware-Rollback“ können Benutzer ein vorheriges Paket wiederherstellen.
Wenn das Aktualisierungspaket nur das für das System verfügbare OOB-Firmwarepaket enthält, ändert XCC den Stromversorgungsstatus des Systems nicht. Um die Firmware von PCI-Gerätes zu aktualisieren, muss die Stromversorgung des Systems eingeschaltet sein.
Wenn das Aktualisierungspaket das für das System verfügbare IB-Firmwarepaket enthält, speichert XCC den Stromversorgungsstatus des Systems, bevor der Stromversorgungsstatus aktualisiert und wiederhergestellt wird (nach der Aktualisierung des Aktualisierungspakets). Während des Aktualisierungsvorgangs startet XCC den Host mit dem integrierten Betriebssystem neu.
Wenn das Aktualisierungspaket eine Voraussetzungsstufe der UEFI-Firmware enthält und die aktuell installierte UEFI-Version dieser Stufe nicht entspricht oder darunter liegt, wird das System von XCC ausgeschaltet, um zuerst eine UEFI-Firmwareaktualisierung durchzuführen.
Wenn das Aktualisierungspaket eine Voraussetzungsstufe der XCC-Firmware enthält und die aktuell installierte XCC-Version dieser Stufe nicht entspricht oder darunter liegt, wird XCC nach der Aktualisierung zuerst neu gestartet.
Mit WebGUI aktualisieren
Mit der Option Aus Repository aktualisieren kann der Benutzer XCC für die Synchronisierung der Server-Firmware mit einem fernen CIFS/NFS-Firmware-Repository konfigurieren. Das Firmware-Repository sollte Pakete enthalten, darunter binäre und Metadatendateien oder Aktualisierungspaket-Metadaten-JSON und entsprechende Binärdateien. XCC analysiert die Metadaten-JSON-Dateien, um Firmwarepakete auszuwählen, die OOB-Aktualisierungen für diese bestimmte Systemhardware unterstützen. Anschließend wird eine Batchaktualisierung gestartet.
- Grünes Häkchen : Die Firmwareaktualisierung wurde erfolgreich abgeschlossen.
- Rotes Kreuz : Die Firmwareaktualisierung ist fehlgeschlagen.
- Wird aktualisiert: Die Firmware wird gerade aktualisiert.
- Abbrechen: Die Firmwareaktualisierung wird abgebrochen.
- Warten: Die Firmwareaktualisierung wartet auf die Implementierung.
Gehen Sie wie folgt vor, um eine Aktualisierung aus dem Repository durchzuführen:
- Klicken Sie nach dem Eingeben der Informationen über das ferne Repository auf Verbinden, um eine Verbindung herzustellen.
- Klicken Sie auf Aktualisieren, um die Batchaktualisierung zu starten.
- Klicken Sie auf Details anzeigen, um den Status der Aktualisierung anzuzeigen. Wie oben erwähnt gibt es 5 Statuskategorien.
- Bei einem Klick auf Aktualisierung stoppen werden die Aktualisierungen in der Warteschlange abgebrochen, nachdem die aktuell laufende Installationspaket-Aktualisierung abgeschlossen wurde.
- Klicken Sie auf Trennen, um die Verbindung zum fernen Repository zu trennen.
- Wenn die Aktualisierung einen Neustart von XClarity Controller erfordert, damit sie wirksam wird, wird eine Warnung angezeigt. Weitere Informationen zum Neustart vom XClarity Controller finden Sie unter Stromversorgungsaktionen.
Update mit Redfish
Die Redfish-Schnittstelle verwendet Nutzdaten im JSON-Format, um das Lesen und Scripting zu erleichtern. XCC-Redfish bietet eine Standard-API (SimpleUpdate), um die Aktualisierungspaketdatei aus einem URI über HTTP/HTTPS/SFTP/TFTP abzurufen, sowie ein Multipart-HTTP-Push-Update, um die Aktualisierungspaketdatei „UpdateService“ per Push zu veröffentlichen. Sie können einen Befehl oder ein einzelnes Redfish-Client-Tool verwenden, um Firmwareaktualisierungen durchzuführen und den Aktualisierungsstatus abzufragen.
Beispielbefehl, um die Paketdatei an XCC zu pushen und die Task für die Dateiübertragung und -überprüfung zu generieren:
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"
}
Der Beispielbefehl an die Task-API antwortet mit der Job-ID für die Firmwareaktualisierung, nachdem die Übertragung und die Image-Überprüfung abgeschlossen sind:
<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"
}
Durch die Abfrage der Job-ID gibt XCC Jobschritte für alle Firmwarepakete im Aktualisierungspaket zurück, wie unten dargestellt:
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"
Wenn der Jobschritt abgefragt wird, gibt XCC zusätzliche Informationen zu einzelnen Firmwareaktualisierungen zurück:
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"
Führen Sie einen Download vom Remote-Repository durch und aktualisieren Sie wie unten gezeigt:
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