NVIDIA BlueField BSP

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:

  1. 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
    


    mlx-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.


  2. Copy the output of the 2 files, dump-image-v0 and dump-initramfs-v0, into the PXE server tftp path.

    To use a kernel that is compressed with LZMA (as included in BFB as dump-image-v0) for PXE installation, it must be uncompressed before use:

    $ file dump-image-v0

    If the output says LZMA compressed data, proceed to uncompress. 

    To uncompress the kernel, run: 

    $ text xz -dc < dump-image-v0 > vmlinuz

    This will uncompress the LZMA kernel image to a usable format called vmlinuz.

  3. 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 the bfks parameter to the Linux command line in the grub.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's install.sh script at the beginning of the BFB installation process. Here is an example of bfks that creates a /etc/bf.cfg file: 

    cat > /etc/bf.cfg << 'EOF'
    DEBUG=yes
    ubuntu_PASSWORD='$1$3B0RIrfX$TlHry93NFUJzg3Nya00rE1'
    EOF
    


  4. 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";
    }
    


Last updated: