Deploying BlueField Software Using BFB with PXE
It is recommended to upgrade your BlueField product to the latest software and firmware versions available to benefit from new features and latest bug fixes.
PXE installation is not supported for NIC mode on NVIDIA® BlueField®-3.
The following are the steps to prepare a PXE server to deploy a BFB bundle:
Convert the BFB image file to PXE bootable image(s). Run:
# mlx-mkbfb -x <BFB>
For example:
# mlx-mkbfb -x DOCA_2.7.0_BSP_4.7.0_Ubuntu_22.04-<version>.bfb
Notemlx-mkbfb
is a Python script that can be found in BlueField release tarball under the/bin
directory or in the BlueField Arm file system/usr/bin/mlx-mkbfb
.Copy the output of the 2 files,
dump-image-v0
anddump-initramfs-v0
, into the PXE servertftp
path.Create a boot entry in the PXE server. For example:
/var/lib/tftpboot/grub.cfg set default=0 set timeout=5 menuentry 'Bluefield_Ubuntu_22_04_From_BFB' --class red --class gnu-linux --class gnu --class os { linux (tftp)/ubuntu22.04/dump-image-v0 ro ip=dhcp console=hvc0 console=ttyAMA0 initrd (tftp)/ubuntu22.04/dump-initramfs-v0 }
If additional parameters must be set, use the
bf.cfg
configuration file, then add thebfks
parameter to the Linux command line in thegrub.cfg
above.menuentry 'Ubuntu22.04 From BFB with bf.cfg' --class red --class gnu-linux --class gnu --class os { linux (tftp)/ubuntu22.04/dump-image-v0 console=hvc0 console=ttyAMA0 bfnet=oob_net0:dhcp bfks=http://15.22.82.40/bfks initrd (tftp)/ubuntu22.04/dump-initramfs-v0 }
bfks
is a BASH script that runs alongside BFB'sinstall.sh
script at the beginning of the BFB installation process. Here is an example ofbfks
that creates a/etc/bf.cfg
file:cat > /etc/bf.cfg << 'EOF' DEBUG=yes ubuntu_PASSWORD='$1$3B0RIrfX$TlHry93NFUJzg3Nya00rE1' EOF
Define DHCP:
/etc/dhcp/dhcpd.conf allow booting; allow bootp; subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.10 192.168.100.20; option broadcast-address 192.168.100.255; option routers 192.168.100.1; option domain-name-servers <ip-address-list> option domain-search <domain-name-list>; next-server 192.168.100.1; filename "/BOOTAA64.EFI"; } # Specify the IP address for this client. host tmfifo_pxe_client { hardware ethernet 00:1a:ca:ff:ff:01; fixed-address 192.168.100.2; } subnet 20.7.0.0 netmask 255.255.0.0 { range 20.7.8.10 20.7.254.254; next-server 20.7.6.6; filename "/BOOTAA64.EFI"; }