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 supports changing the boot device selector flag only through the following options: PXE boot, or the default boot device as selected in the boot menu on BlueField. In contrast, 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}'

Changing BootOrder Configuration

To set boot order using boot order schema, follow this procedure:

  1. Check the current boot order by doing GET on the ComputerSystem schema over 1GbE OOB to the BlueField BMC. Look for the BootOrder attribute under the Boot

    curl -k -X GET -u root:<password> https://<BF-BMC-IP>/redfish/v1/Systems/<SystemID>/ | python3 -m json.tool
    {
     ....
     "Boot": {
    	....
    "BootOrder": [
                	"Boot0017",
                	"Boot0001",
                	"Boot0002",
                	"Boot0003",
               		"Boot0004",
                	"Boot0005",
                	"Boot0006",
                	"Boot0007",
     	],
    	....
         }
    ....
    }
    
  2. To get the details of a particular entity in the BootOrder array, perform a GET to the respective BootOption URL over 1GbE OOB to the BlueField BMC. For example, to get details of Boot0006, run: 

    curl -k -X GET -u root:<password> https://<BF-BMC-IP>/redfish/v1/Systems/<SystemID>/BootOptions/Boot0006 | python3 -m json.tool
    
    {
        "@odata.type": "#BootOption.v1_0_3.BootOption",
        "@odata.id": "/redfish/v1/Systems/SystemId/BootOptions/Boot0006",
        "Id": "Boot0006",
        "BootOptionEnabled": true,
        "BootOptionReference": "Boot0006",
        "DisplayName": "UEFI HTTPv6 (MAC:B8CEF6B8A006)",
        "UefiDevicePath":   "PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/MAC(B8CEF6B8A006,0x1)/IPv6(0000:0000:0000:0000:0000:0000:0000:0000,0x0,Static,0000:0000:0000:0000:0000:0000:0000:0000,0x40,0000:0000:0000:0000:0000:0000:0000:0000)/Uri()"
    }
    
  3. To change the boot order, the entire BootOrder array must be PATCHed to the pending settings URI. For this example of the BootOrder array, if you intend to have Boot0006 at the beginning of the array, then the PATCH operation is as follows: 

    Updating the BootOrder array results in a permanent boot order change (persistent across reboots).

    curl -k -u root:<password> -X PATCH -d '{ "Boot": { "BootOrder": [ "Boot0006", "Boot0017", "Boot0001", "Boot0002", "Boot0003", "Boot0004", "Boot0005", "Boot0007", ] }}' https://<BF-BMC-IP>/redfish/v1/Systems/<SystemID>/Settings | python3 -m json.tool
    
  4. After a successful PATCH, reboot the BlueField and check if the settings have been applied by doing a GET on the ComputerSystem schema.

  5. If the BootOrder array is updated as intended then the settings have been applied and the BlueField should boot as per the order in preceding cycles.

  6. If BootSourceOverrideEnabled is set to Once, boot override is disabled and any related properties are reset to their former values to avoid repetition. If it is set to Continuous, then on every reboot, BlueField would keep performing boot override (HTTPBoot).

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

Boot Source Override

Boot Source Override allows administrators to remotely control the system’s boot sequence without requiring physical access to configure boot order settings. This capability supports one-time or persistent boot source overrides, making it useful for automated OS deployment, system recovery, remote diagnostics, and enforcing specific security boot policies.

By dynamically setting the boot target (e.g., PXE, UEFI HTTP), administrators gain flexibility for provisioning, firmware updates, and disaster recovery workflows.

Boot Source Override Config Using Redfish

Get Boot Source Override Configuration

To retrieve the current boot source override configuration:

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

Example output:

  "Boot": {
    ...
    "BootSourceOverrideEnabled": "Disabled",
    "BootSourceOverrideMode": "UEFI",
    "BootSourceOverrideTarget": "None",
    "HttpBootUri": "path",
    "StopBootOnFault": "Never",
    "UefiTargetBootSourceOverride": "None"
    ...
   }

Set Boot Source Override Configuration

To set the boot source override, use:

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

The boot override setting take effect on the next boot and are reflected in the redfish/v1/Systems/Bluefield boot schema.

The following parameters can be set when configuring the boot source via the Redfish command:

  • BootSourceOverrideEnabled – 

    • Disabled – Disable override

    • Once – Apply override for next boot only

    • Continuous – Always use the boot override setting

  • BootSourceOverrideMode – Must be set to UEFI 

  • BootSourceOverrideTarget – Must be one of the values allowed under Boot/BootSourceOverrideTarget@Redfish.AllowableValues  

  • UefiTargetBootSourceOverride – equired if BootSourceOverrideTarget is set to UefiTarget. Set to the UefiDevicePath attribute of the desired boot option.

  • BootNext – Used if BootSourceOverrideTarget is set to UefiBootnext 

  • AutomaticRetryConfig – Only Disabled is supported

Examples

Set Next Boot to a Specific UEFI HTTP Target
  1. Query the BootOptions attributes:

    curl -k -u root:'<password>' -X GET \
    https://<bmc_ip>/redfish/v1/Systems/Bluefield/BootOptions/Boot0002
    Example output: 
    {
      "BootOptionReference": "Boot0002",
      "DisplayName": "NET-OOB-IPV4-HTTP",
      "UefiDevicePath": "MAC(B83FD2CA4B27,0x1)/IPv4(0.0.0.0,0x0,DHCP,...)/Uri()"
    }

  2. Use the UefiDevicePath value as the UefiTargetBootSourceOverride:

    curl -k -u root:'<password>' -X PATCH \
    https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings \
    -d '{ 
      "Boot":{ 
        "BootSourceOverrideEnabled": "Once", 
        "BootSourceOverrideMode": "UEFI", 
        "BootSourceOverrideTarget": "UefiTarget", 
        "UefiTargetBootSourceOverride": "MAC(B83FD2CA4B27,0x1)/IPv4(0.0.0.0,...)/Uri()", 
        "AutomaticRetryConfig": "Disabled"
      } 
    }'

Set Next Boot to PXE (Non-persistent)


curl -k -u root:'<password>' -X PATCH \
https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings \
-d '{ 
  "Boot":{ 
    "BootSourceOverrideEnabled": "Once", 
    "BootSourceOverrideMode": "UEFI", 
    "BootSourceOverrideTarget": "Pxe"
  } 
}'

Boot Source Override Config Using IPMI

The ipmitool utility allows configuring the Boot Source Override option, enabling the system to boot from a PXE server or another specified device.

Retrieving the Current Boot Override Settings

To view the current boot override configuration, run:

ipmitool chassis bootparam get 5

This command returns information about:

  • Whether the boot override option is valid.

  • Whether it is persistent or applies to the next boot only.

  • The configured boot device type.

Configuring One-Time PXE Boot with Timeout

To configure a one-time PXE boot with a 60-second timeout, use the following command:

 ipmitool chassis bootparam set bootflag force_pxe options=timeout

If the DPU is not reset within 60 seconds, the boot parameters will be invalidated.

Configuring One-Time PXE Boot without Timeout

To configure a one-time PXE boot without the 60-second timeout, run:

 ipmitool chassis bootparam set bootflag force_pxe options=no-timeout

The boot override timer is only applicable for BlueField-3.

It is not recommended to use ipmitool chassis bootparam without explicitly specifying the options parameter, as this may result in unpredictable timer behavior.

Resetting Boot Override to Default

To clear the boot override and return to the default boot device, use:

ipmitool chassis bootparam set bootflag none

Setting Persistent PXE Boot

To configure the system to always boot from PXE (persistent override), execute:

ipmitool chassis bootdev pxe options=persistent

The persistent option prevents the 60-second timeout from being triggered.

If you modify bootdev or bootparam settings without explicitly specifying options=persistent, the persistent configuration will be disabled.

Behavior of Boot Source Override on BlueField

The Boot Source Override configuration set through the BMC remains persistent until one of the following occurs:

  • It is explicitly reset to none.

  • The BFB image is updated, which will clear the override settings.

Last updated: