固件更新步骤#

开始之前#

  • 在开始固件更新之前,停止所有不必要的系统活动。

  • 停止所有 GPU 活动,包括运行 nvidia-smi 命令。GPU 活动和运行该命令可能会阻止 VBIOS 更新。

  • 在更新过程中,请勿在系统上增加额外的负载,例如用户作业、诊断或监控服务。高工作负载可能会中断固件更新过程,并导致组件无法使用。

  • 当您开始固件更新时,更新软件会协助确定 DGX 系统的活动状态,并在检测到活动级别高于预定阈值时发出警告。如果您遇到警告,请采取措施减少工作负载,然后再继续进行固件更新。

  • 在 BMC 固件更新期间,风扇速度可能会增加。速度增加是 BMC 固件更新过程的正常部分。

更新步骤#

  1. 查看已安装的版本与新提供的固件的比较

    nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> \
      show_version -p nvfw_DGX_250114.1.0.fwpkg \
      nvfw_DGX-HGX-B100-B200x8_250212.1.1.fwpkg
    
  2. 更新 BMC。

    1. 创建一个文件,例如 update_bmc.json,包含以下内容

      {
          "Targets" :["/redfish/v1/UpdateService/FirmwareInventory/HostBMC_0"]
      }
      
    2. 运行以下命令以更新 BMC

      nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> update_fw \
        -p nvfw_DGX_250212.1.1.fwpkg -y -s update_bmc.json
      
  3. 重启 BMC。

    • 使用系统上的 shell

      $ ipmitool mc reset cold
      
      # Wait a couple of minutes and confirm the BMC is back online.
      $ ipmitool mc info
      
    • 或者,您可以使用 Web UI 通过浏览器进行操作。

  4. 更新主板托架上的组件。

    对于一次性固件更新,BMC 将对提供的软件包中的所有组件执行固件更新,例如 nvfw_DGX_xxxxxx.x.x.fwpkg,其中包括主机 BMC(如果指定了 force_update 选项)、主机 BIOS、EROT、PCIe 中继器、PCIe 交换机、PSU、主板 CPLD 和中板 CPLD。

    1. 创建一个文件,例如 mb_tray.json,包含空括号

      {}
      
    2. 更新固件

      nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> update_fw \
        -p nvfw_DGX_250212.1.1.fwpkg -y -s mb_tray.json
      
  5. 使用过渡 GPU 软件包将 GPU 托架更新到中间固件版本。

    1. 创建一个 gpu_tray.json 文件,包含以下内容

      {
          "Targets" :["/redfish/v1/UpdateService/FirmwareInventory/HGX_0"]
      }
      
    2. 更新固件

      nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> update_fw \
        -p nvfw_DGX-HGX-B100-B200x8_250114.1.0.fwpkg -y -s gpu_tray.json
      

      此步骤对 GPU 托架中包含的所有组件(例如 VBIOS、NVSwitch、EROT 和 FPGA)执行并行更新。

    3. 通过在以下命令输出中查找 "BackgroundCopyStatus": "Completed" 来验证后台复制是否已成功完成

      curl -s -k -u <bmc-user>:<bmc-password> -H content-type:application/json \
           -X GET https://<bmc-ip-address>/redfish/v1/Chassis/HGX_ERoT_BMC_0 | jq
      
    4. 执行冷复位以重启系统

      ipmitool chassis power cycle
      
  6. 将 GPU 托架更新到最新固件版本。

    1. 使用最新的 GPU 软件包重复 GPU 托架的固件更新步骤

      nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> update_fw \
        -p nvfw_DGX-HGX-B100-B200x8_250124.1.3.fwpkg -y -s gpu_tray.json
      
    2. 对系统执行断电重启,并确认系统完全启动。

      在操作系统或 BMC 中通过命令行执行关机命令,然后从 BMC 上电。

  7. 再次查看已安装的版本,确认固件更新已完成。

    系统再次运行后,重复以下命令以确认所有固件均已更新

    nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> \
      show_version -p nvfw_DGX_250212.1.1.fwpkg \
      nvfw_DGX-HGX-B100-B200x8_250124.1.3.fwpkg
    
  8. 对 BMC 和系统 BIOS 执行后台复制命令。

    1. BMC

      后台复制 Redfish API 请求

      curl -k -u <bmc-user>:<password> --request POST --location 'https://<bmc-ip-address>/redfish/v1/UpdateService/Actions/Oem/NvidiaUpdateService.CommitImage' \
           --header 'Content-Type: application/json' \
           --data '{
                   "Targets": ["/redfish/v1/UpdateService/FirmwareInventory/HostBMC_0"]
                   }'
      

      示例响应

      {
         "@odata.type":"#UpdateService.v1_11_0.UpdateService",
         "Messages":[
            {
               "@odata.type":"#Message.v1_0_8.Message",
               "Message":"A new task /redfish/v1/TaskService/Tasks/1 was created.",
               "MessageArgs":[
                  "/redfish/v1/TaskService/Tasks/1"
               ],
               "MessageId":"Task.1.0.New",
               "Resolution":"None",
               "Severity":"OK"
            },
            {
               "@odata.type":"#Message.v1_0_8.Message",
               "Message":"ActivateFirmware Action is initiated.",
               "MessageId":"UpdateService.1.0.StartActivateFirmware",
               "Resolution":"None",
               "Severity":"OK"
            }
         ]
      }
      

      使用任务 ID(在输出响应中显示为 1)查询更新状态

      nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> show_update_progress -i 1
      

      当状态指示 100% 完成时,继续下一步。

    2. SBIOS

      后台复制 Redfish API 请求

      curl -k -u <bmc-user>:<password> --request POST --location 'https://<bmc-ip-address>/redfish/v1/UpdateService/Actions/Oem/NvidiaUpdateService.CommitImage' \
           --header 'Content-Type: application/json' \
           --data '{
                   "Targets": ["/redfish/v1/UpdateService/FirmwareInventory/HostBIOS_0"]
                   }'
      

      从响应中找到任务 ID(通常为 2)以查询更新状态

      nvfwupd -t ip=<bmc-ip-address> user=<bmc-username> password=<bmc-password> show_update_progress -i 2
      

      当状态指示 100% 完成时,继续下一步。

    3. 通过拔下所有电源,然后手动或通过外部 PDU 设备重新连接电源,对系统执行交流电重启。

  9. 更新网卡和 NVMe 驱动器上的固件。

    注意

    在更新期间,mlxfwmanager 命令将报告 ConnectX-7 设备(标识为 /dev/mst/mt4129_pciconf0)无法更新,如下面的错误消息所示

    -E- Failed to query /dev/mst/mt4129_pciconf0 device, error : MFE_ICMD_BAD_PARAM
    

    此行为是预期的,因为此设备不是用于集群系统的网卡之一,而是一个内部使用的桥接设备,并使用单独的流程进行更新。

    1. 要更新 ConnectX®-7 卡和 NVIDIA® BlueField®-3 卡,请导航到 network 目录并运行 mlxfwmanager 命令

      cd network
      sudo mlxfwmanager -u -D .
      

      当提示更新所有 10 个 ConnectX-7 卡和 BlueField-3 卡时,键入 Y 以确认。

    2. 有关 Intel E810-C 以太网网络适配器的固件更新,请参阅 更新 Intel NIC 固件

    3. 有关 NVMe 驱动器上的固件更新,请参阅 更新 NVMe 固件