Saltar al contenido principal

Actualizar desde el repositorio

Actualización del firmware del servidor desde un repositorio remoto

Nota
Para la funcionalidad de historial de firmware CIFS/NFS/HTTPS/Incorporado se necesita la licencia Platinum de XCC.

Visión general

XCC ha introducido la actualización de firmware en un servidor mediante el paquete de actualizaciones (Service Packs). Esta función simplifica el proceso utilizando una única API o herramienta cliente Redfish para actualizar todo el firmware del sistema, incluidos los paquetes de firmware OOB e IB. El proceso consiste en identificar los paquetes de firmware aplicables, descargarlos y extraerlos de un servidor HTTP/HTTPS remoto o cargarlos en el almacenamiento interno de BMC a través de un navegador web, o montarlos desde un directorio compartido CIFS o NFS.

Los archivos de metadatos deben colocarse en el directorio raíz del sistema de archivos compartidos en red si se utiliza el montaje CIFS o NFS, con las cargas útiles de firmware especificadas en los metadatos. El dispositivo microSD del servidor puede almacenar repositorios históricos, lo que permite a los usuarios retroceder niveles de firmware.

Si los paquetes de firmware contienen alguna carga útil que no admita la actualización de firmware fuera de banda, el BMC iniciará el servidor y lo configurará para que arranque desde la imagen del SO integrada instalada en el BMC antes de realizar la actualización.

Paquete de actualización y metadatos

El paquete de actualizaciones (Service Packs) es un archivo comprimido de un paquete de firmware. Contiene uno o varios paquetes de firmware para los componentes de un sistema. La función Actualizar desde repositorio de XCC consume el archivo del paquete de actualizaciones. El archivo de paquete descomprimido contiene metadatos y binarios de carga útil. Los archivos de metadatos JSON proporcionan información a XCC sobre el tipo de imágenes de firmware que contiene el archivo de paquete, y los binarios de carga útil proporcionan las imágenes de firmware.

Repositorio de firmware dentro de XCC

El paquete de actualizaciones puede contener varios paquetes de firmware y XCC (un dispositivo electrónico) reserva 2 GB de espacio en su flash para las nuevas funciones. Cuando se recibe un nuevo paquete, XCC limpia los datos antiguos. Algunas plataformas utilizan una tarjeta MicroSD para proporcionar almacenamiento adicional y XCC mueve el último paquete actualizado al repositorio histórico de la tarjeta SD. El repositorio del historial de firmware puede almacenar hasta tres paquetes y los usuarios pueden utilizar la función de reversión de firmware para volver a un paquete anterior.

Nota
  • Si el paquete de actualizaciones solo incluye el paquete de firmware OOB disponible para el sistema, XCC no cambia el estado de alimentación del sistema. Para actualizar el firmware del dispositivo PCI, es necesario que el sistema esté encendido.

  • Si el paquete de actualizaciones incluye el paquete de firmware IB disponible para el sistema, XCC almacena el estado de alimentación del sistema antes de la actualización y restaura el estado de alimentación una vez actualizado el paquete de actualizaciones. Durante el proceso de actualización, XCC reinicia el host en el SO integrado.

  • Si el paquete de actualizaciones incluye un nivel de requisito de firmware de UEFI y la versión de UEFI instalada actualmente no cumple o está por detrás de ese nivel, XCC apaga el sistema para realizar primero una actualización del firmware de UEFI.

  • Si el paquete de actualizaciones incluye un nivel de requisito de firmware de XCC y la versión actual de XCC instalada no cumple o está por detrás de ese nivel, XCC se reinicia primero después de actualizarse.

Actualización con WebGUI

Con Actualizar desde el repositorio, el usuario puede configurar XCC para sincronizar el firmware del servidor con un repositorio de firmware remoto CIFS/NFS. El repositorio de firmware debe contener paquetes que incluyan archivos binarios y de metadatos, o un JSON de metadatos de paquete de actualizaciones y los archivos binarios correspondientes. XCC analiza los archivos JSON de metadatos para seleccionar los paquetes de firmware que admiten la actualización OOB para este hardware de sistema específico y luego inicia una actualización por lotes.

Hay cinco estados de actualización:
  • Marca de verificación verde : la actualización del firmware ha finalizado correctamente.
  • Marca de X roja : se ha producido un error en la actualización del firmware.
  • Actualización: el firmware está llevando a cabo el proceso de actualización.
  • Cancelar: la actualización del firmware se ha cancelado.
  • En espera: la actualización del firmware está en espera de desplegarse.
Cuando el usuario hace clic en Detener actualización, cancela las actualizaciones en la cola una vez completada la actualización del paquete de instalación actual.

Para actualizar desde el repositorio, realice los pasos siguientes:

  1. Haga clic en Conectar al repositorio remoto después de ingresar la información del repositorio remoto.
  2. Pulse Actualizar para comenzar la actualización de lote.
  3. Haga clic en Ver detalles para ver el estado de actualización, hay 5 categorías de estado, como se mencionó anteriormente.
  4. Haga clic en Detener actualización, cancela las actualizaciones en la cola una vez completada la actualización del paquete de instalación actual.
  5. Haga clic en Desconectar para desconectarse del repositorio remoto.
  6. Si la actualización necesita reiniciar el XClarity Controller para surtir efecto, se mostrará un mensaje de aviso. Para conocer más detalles sobre cómo reiniciar el XClarity Controller, consulte Acciones de alimentación.
Nota
Si el sistema tiene instalada una tarjeta MicroSD, puede ver el historial de actualizaciones del paquete de actualizaciones y seleccionar el índice del paquete de actualizaciones para realizar la reversión del firmware. El proceso es similar a la actualización desde el repositorio, excepto que el paquete de actualizaciones histórico se coloca dentro de la MicroSD.

Actualización con Redfish

La interfaz Redfish utiliza una carga útil en formato JSON para facilitar la lectura y la creación de scripts a los usuarios. XCC Redfish ofrece una API estándar (SimpleUpdate) para recuperar el archivo del paquete de actualizaciones desde un URI a través de HTTP/HTTPS/SFTP/TFTP, así como una actualización automática HTTP multiparte para enviar el UpdateService del archivo del paquete de actualizaciones. Puede utilizar un comando o una única herramienta cliente Redfish para realizar actualizaciones de firmware y consultar el estado de las actualizaciones.

Comando de ejemplo para enviar el archivo de paquete a XCC y generar la tarea de transferencia y verificación de archivos:

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"
}

Comando de ejemplo para la tarea de la API responde con el ID de trabajo para la actualización del firmware una vez completada la transferencia y la validación de la imagen:

<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"
}

Al consultar el ID del trabajo, XCC devuelve los pasos de trabajo de todos los paquetes de firmware del paquete de actualizaciones, como se muestra a continuación:

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"

Cuando se consulta el paso del trabajo, XCC devuelve información adicional para la actualización individual del firmware:

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"

Realice una descarga desde el repositorio remoto y actualice como se muestra a continuación:

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