Networking NVIDIA BlueField BMC Software

Boot Configuration


BMC supports boot option selection commands using the Redfish or IPMI interfaces. UEFI on NVIDIA® BlueField® can query for the boot options through an IPMI/Redfish command. The BMC IPMI command only supports the option to change the boot device selector flag with the following supported options: PXE boot or the default boot device as selected in the boot menu on BlueField. While the Redfish interface supports all available boot options.

Boot Config Using Redfish

Retrieving Active Boot Configuration Values

  • To retrieve the active boot configuration, run:

    curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield
    


    The relevant configurations would be under Boot.


  • To retrieve all boot options (active and pending):

    curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/BootOptions/
    


  • To retrieve detailed information on a specific boot option:

    curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/BootOptions/<boot-option>
    


Retrieving Information on Pending Boot Configurations

  • To retrieve the pending boot settings:

    curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings
    


  • The following command retrieves only BootOptions configurations with a pending value different than the active one.

    curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings/BootOptions
    


  • To retrieve the details of a specific pending boot option:

    curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings/BootOptions/<boot-id>
    


Applying Pending Boot Configurations

Power reset of the BlueField is necessary for these changes to take effect.

  • To alter the boot configuration, applying patches to the setting attribute is required

    curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings -d '{"Boot":{ ... }}'
    


    • To set the pending boot order. The list must contain all the Boot option, even if the boot option is disabled.

      curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings/ -d  '{"Boot":{ "BootOrder": ["Boot0002",...,"BootXXX"] }}'
      


  • To alter the bootOption value, currently supporting only BootOptionEnable


    curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings/BootOptions/<Boot id> -d '{"BootOptionEnabled": false}'
    


Example of Changing BootOrder Configuration

To get the supported boot options:

curl -k -u root:<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield/BootOptions 
{ 
  "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions", 
  "@odata.type": "#BootOptionCollection.BootOptionCollection", 
  "Members": [ 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0000" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot000A" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot000B" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot000C" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot000D" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot000E" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot000F" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0001" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0002" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0003" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0004" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0005" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0006" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0007" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0008" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0009" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0010" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0011" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0012" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0013" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0014" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0015" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0016" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0017" 
    }, 
    { 
      "@odata.id": "/redfish/v1/Systems/Bluefield/BootOptions/Boot0040" 
    } 
  ], 
  "Members@odata.count": 25, 
  "Name": "Boot Option Collection" 
} 

To set the pending boot order settings:

In this example, 25 boot options are present. Therefore, the command to establish the boot option order must encompass all 25 options in the active BootOrder list according to the desired sequence.


curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings -d '{"Boot":{ "BootOrder": ["Boot0040", "Boot0017", "Boot0000", "Boot0001", "Boot0002", "Boot0003", "Boot0004", "Boot0005", "Boot0006", "Boot0007", "Boot0008", "Boot0009", "Boot000A", "Boot000B", "Boot000C", "Boot000D", "Boot000E", "Boot000F", "Boot0010", "Boot0011", "Boot0012", "Boot0013", "Boot0014", "Boot0015", "Boot0016"] }}'

Example of Changing Boot Configuration

To set boot configuration, it is necessary to post to settings. For example:

curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings -d '{ 

"Boot":{ 
        "BootSourceOverrideEnabled": "Once", 
        "BootSourceOverrideMode": "UEFI", 
        "BootSourceOverrideTarget": "UefiHttp", 
        "UefiTargetBootSourceOverride": "None", 
        "BootNext": "", 
        "AutomaticRetryConfig": "Disabled"
    } 
}'
  • BootSourceOverrideEnabled – should be set according to the values under redfish/v1/Systems/Bluefield > Boot/BootSourceOverrideEnabled@Redfish.AllowableValues

  • BootSourceOverrideMode – should be set according to the values under redfish/v1/Systems/Bluefield > Boot/BootSourceOverrideMode@Redfish.AllowableValues

  • BootSourceOverrideTarget – should be set according to the values under redfish/v1/Systems/Bluefield > Boot/BootSourceOverrideTarget@Redfish.AllowableValues

  • UefiTargetBootSourceOverride – this option would be available in the RF JSON if BootSourceOverrideTarget is set to UefiTarget

  • BootNext – this option would be in the RF JSON if BootSourceOverrideTarget is set to UefiBootnext

  • AutomaticRetryConfig – only Disabled is supported

Boot Config Using IPMI

The ipmitool only provides the ability to manage the override boot option and configure the system to boot from a PXE server.

  • Get current setting:

    ipmitool chassis bootparam get 5
    


  • Force PXE boot:

    ipmitool chassis bootdev pxe options=efiboot
    


  • Default boot device:

    ipmitool chassis bootparam set bootflag none
    


The BlueField boot override setting from BMC is persistent until it is set to none or the BFB image is updated again.


Last updated: