Deploying BlueField Software Using PXE
The BlueField boot flow is similar to a standard server, allowing to boot via an external PXE/HTTP server.
Providing a BFB or ISO image via PXE server enables updating the BlueField software.
The update flow for the two software update image types, BFB and ISO, is slightly different as elaborated on in the following subpages.
PXE booting the BlueField device with a BFB file updates all components included in the BFB image at the end of the automated update process
NoteThe BFB image is available in two formats:
BF-Bundle – includes BlueField firmware, BlueField Arm OS, and DOCA
BF-FW-Bundle – includes BlueField firmware only
PXE booting the BlueField device with the ISO image provides the same result as BF-Bundle installation using standard installation method for Ubuntu OS
Make sure that the BlueField's firmware version and the DOCA version running on BlueField Arm cores belong to the same release.
Users may set the BlueField UEFI for PXE boot using any of the following methods:
Direct access to BlueField UEFI menu (see section "Setting Next-boot Device in BlueField UEFI Menu")
Out-of-band, using the Redfish interface over the BlueField BMC management LAN
Using
efibootmgr
in the BlueField Linux OS
Regardless of the method, the following is a list of PXE devices in the BlueField UEFI which are compatible with the software upgrade procedure described in this chapter:
NET-NIC_P0-IPV4
NET-NIC_P0-IPV6
NET-NIC_P1-IPV4
NET-NIC_P1-IPV6
NET-OOB-IPV4
NET-OOB-IPV6
Setting Next-boot Device in BlueField UEFI Menu
The following steps detail the PXE deployment sequence:
Enter into the BlueField UEFI Setup menu.
InfoRefer to section "Accessing the UEFI Menu" for instructions.
Navigate to the Boot Manager menu.
Select the relevant PXE devices to boot with, depending on how BlueField is connected to the PXE network.

Setting BlueField to PXE Boot Using Redfish
To set boot option ID using Redfish:
curl -k -u '<username>:<password>'
-X PATCH
https://<bmc_ip>/redfish/v1/Systems/Bluefield/Settings
-d '{
"Boot"
:{
"BootSourceOverrideEnabled"
: "Once"
,
"BootSourceOverrideMode"
: "UEFI"
,
"BootSourceOverrideTarget"
: "Pxe"
,
"UefiTargetBootSourceOverride"
: "Boot000"
,
"BootNext"
: ""
,
"AutomaticRetryConfig"
: "Disabled"
}
}' | jq
Notice the UefiTargetBootSourceOverride
and BootSourceOverrideTarget
fields.
Refer to the BlueField BMC User Manual for more information.
To set up a PXE server, please refer to the documentation provided by the distribution vendor. For example, to install Ubuntu 20.04 or later, see official Ubuntu 20.04 documentation.
Setting BlueField to PXE Boot Using efibootmgr
To set boot option ID using efibootmgr:
efibootmgr -n 0000
This sets a one-time next-boot to device 0000 (NET-NIC_P0-IPV4
).
BlueField includes information in the DHCP vendor class identifier and vendor specific information options to help the DHCP server identify BlueField and select which boot image to serve (e.g., shim, grub). This can be especially useful for the PXE server to serve a specific shim based on the currently running BlueField OS and shim version to work around the installed UEFI secure boot SBAT entries and to reduce issues with BlueField upgrades and downgrades.
The DHCP vendor class ID will start with NVIDIA/BF
.
The DHCP vendor specific information will contain:
BF type (i.e. BF1, BF2, BF3)
UEFI firmware version
BF-bundle version
The following is an example of the DHCP vendor information supplied by a BlueField running an older OS version using the Linux dhcpdump
tool:
bf:~# dhcpdump -i tmfifo_net0
...
OPTION: 53
( 1
) DHCP message type 1
(DHCPDISCOVER)
...
OPTION: 97
( 17
) UUID/GUID 009c2debc0368611 ..-..6
..
ee8000a088c20ee8 ........
18
.
OPTION: 94
( 3
) Client NDI 010300
...
OPTION: 93
( 2
) Client System 000b ..
OPTION: 60
( 13
) Vendor class
identifier NVIDIA/BF/PXE
OPTION: 43
(131
) Vendor specific info 8005424633000081
..BF3...
30426c7565466965 0BlueFie
6c643a342e382e30 ld:4.8
.0
2d322d6765373965 -2
-ge79e
3037662d64697274 07f-dirt
7900000000000000
y.......
0000000000000000
........
008248444f43415f ..HDOCA_
322e352e305f4253 2.5
.0_BS
505f342e352e305f P_4.5
.0_
5562756e74755f32 Ubuntu_2
322e30342d312e32 2.04
-1.2
3032333131303800
0231108
.
0000000000000000
........
0000000000000000
........
0000000000000000
........
000000
...
...
A DHCP server may include some of the following example information in its dhcpd.conf
to match against the Bluefield above. Note that matching against the vendor specific information using a regex requires setting the substring start offset so that the search occurs after previous strings have ended:
...
# Match against vendor class
ID
class
"PXEClient"
{
match if
substring (option vendor-class
-identifier, 0
, 13
) = "NVIDIA/BF/PXE"
;
filename "/shimaa64.efi"
;
}
# Match against BF Type
class
"BfType"
{
match if
substring (option vendor-encapsulated-options, 0
, 200
) ~= "BF3"
;
filename "/shimaa64.efi"
;
}
# Match against UEFI FW version
class
"BfFwVer"
{
match if
substring (option vendor-encapsulated-options, 6
, 200
) ~= "4.8.0-2-ge79e07f"
;
filename "/shimaa64.efi"
;
}
# Match against BF Bundle version
class
"BfBundleVer"
{
match if
substring (option vendor-encapsulated-options, 55
, 200
) ~= "2.5.0-BSP_4.5.0_Ubuntu_22.04"
;
filename "/shimaa64.efi"
;
}
...
More information about how to troubleshoot PXE boot issues can be found in NVIDIA BlueField Troubleshooting Guide.