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.
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
InfoThe 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:
Check the current boot order by doing GET on the
ComputerSystem
schema over 1GbE OOB to the BlueField BMC. Look for theBootOrder
attribute under theBoot
.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", ], .... } .... }
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 ofBoot0006
, 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()" }
To change the boot order, the entire
BootOrder
array must be PATCHed to the pending settings URI. For this example of theBootOrder
array, if you intend to haveBoot0006
at the beginning of the array, then the PATCH operation is as follows:NoteUpdating 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
After a successful PATCH, reboot the BlueField and check if the settings have been applied by doing a GET on the
ComputerSystem
schema.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.If
BootSourceOverrideEnabled
is set toOnce
, boot override is disabled and any related properties are reset to their former values to avoid repetition. If it is set toContinuous
, 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
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 underredfish/v1/Systems/Bluefield
>Boot/BootSourceOverrideEnabled@Redfish.AllowableValues
BootSourceOverrideMode
– should be set according to the values underredfish/v1/Systems/Bluefield
>Boot/BootSourceOverrideMode@Redfish.AllowableValues
BootSourceOverrideTarget
– should be set according to the values underredfish/v1/Systems/Bluefield
>Boot/BootSourceOverrideTarget@Redfish.AllowableValues
NoteWhen
UefiTarget
is selected, make sure that:BootSourceOverrideMode
is set toUEFI
UefiTargetBootSourceOverride
is set to one of the UEFI supported BootOptions (e.g., Boot0007)
UefiTargetBootSourceOverride
– this option would be available in the RF JSON ifBootSourceOverrideTarget
is set toUefiTarget
BootNext
– this option would be in the RF JSON ifBootSourceOverrideTarget
is set toUefiBootnext
AutomaticRetryConfig
– onlyDisabled
is supported
The Boot Source Override feature provides administrators with remote control over a system's boot sequence, eliminating the need for physical access to configure boot order settings. This capability allows for one-time or persistent boot source overrides, enabling seamless OS deployment, system recovery, and remote diagnostics. Administrators can dynamically set the boot target (for example, PXE) , ensuring flexibility for various operational needs. Boot Source Override is particularly useful for automated provisioning, disaster recovery, firmware updates, and security hardening by enforcing specific boot policies.
Boot Source Override Config Using RedFish
Get Boot Source Override Configuration
To retrieve boot source override configuration, run:
curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/Systems/Bluefield
Example for Redfish Boot Source Override Get result:
"Boot": {
...
"BootSourceOverrideEnabled": "Disabled",
"BootSourceOverrideMode": "UEFI",
"BootSourceOverrideTarget": "None",
...
}
The following parameters can be set when configuring the boot source via the Redfish command:
BootSourceOverrideEnabled
– should be set according to the following values:Disabled –
Boot Source Override will be disabledOnce
– host will use the Boot Source Override settings only during the next host bootContinuous
– host will always use the Boot Source Override settings
BootSourceOverrideMode
– should be set according to the values underredfish/v1/Systems/Bluefield
>Boot/BootSourceOverrideMode@Redfish.AllowableValues
BootSourceOverrideTarget
– should be set according to the values underredfish/v1/Systems/Bluefield
>Boot/BootSourceOverrideTarget@Redfish.AllowableValues
When UefiTarget
is selected, make sure that:
BootSourceOverrideMode
is set toUEFI
, andUefiTargetBootSourceOverride
is set to one of the UEFI supported BootOptions (e.g., Boot0007).
UefiTargetBootSourceOverride
– this option will be available in the RF JSON ifBootSourceOverrideTarget
is set toUefiTarget
AutomaticRetryConfig
– onlyDisabled
is supportedBootNext
– this option will be in the RF JSON ifBootSourceOverrideTarget
is set toUefiBootnext
Set Boot Source Override Configuration
To set the Boot Source Override command, use the following redfish command:
curl -k -u root:'<password>' -X PATCH https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings -d '{
"Boot":{
"BootSourceOverrideEnabled": "<OverrideEnabled>",
"BootSourceOverrideMode": "<Mode>",
"BootSourceOverrideTarget": "<Target>"
}
}'
Boot Override Setting will be utilized by the BIOS/UEFI on the next boot and will be reflected in the redfish/v1/Systems/Bluefield boot schema.
Example for Redfish Boot Source Override command, setting next boot non-persistent to PXE boot:
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
ipmitool
provides the ability to manage the Boot Source Override option and to configure the system to boot from a PXE server.
Get current setting:
ipmitool chassis bootparam get 5
Change the boot override settings to enforce PXE boot:
ipmitool chassis bootdev pxe options=efiboot
Change the boot override settings to Default boot device:
ipmitool chassis bootparam set bootflag none
Set the host to always use the boot override settings:
-
ipmitool chassis bootdev pxe options=persistent
-
Info
Whenever the user modifies the bootdev or bootparm settings, the persistent option will be disabled unless the persistent option is specifically enabled.
The BlueField Boot Source Override setting from BMC is persistent until it is set to none
or until the BFB image is updated again.