Issue with PXE booting a diskless bhyve guest

I've attempted to boot a diskless guest via PXE. Unfortunately, it's not working for me. Here's what I have done and tested successfully. All involved systems are FreeBSD 14.0-RELEASE:

  1. NFSv3 setup on guest 1 "NFS server"
    exports /nfs and all subdirectories with -maproot=0
    base.txz, kernel.txz both extracted into /nfs/vmname
    duplicated the guest's /boot dir onto /nfs/vmname/boot for testing
  2. TFTP set up via inetd on guest 1 "NFS server"
    /tftpboot contains copy of /boot/pxeboot
    alternatively, I also recompiled pxeboot without ZFS support
  3. DHCP set up on host, listening on the bridge that all guests are on
    announces the relevant BOOTP options
    option root-path "xxx.xxx.xxx.xxx:/nfs/vmname"
    filename "pxeboot"
  4. Booted a test guest 2 "NFS client"
    confirmed NFS mount is working, files can be written onto NFS mount
    confirmed TFTP download is working
  5. Booted a diskless guest 3 "Diskless client"
  6. PXE starts, gets DHCP announcement, downloads "pxeboot" and then fails

Here's what I see on guest 3 serial console:

Code:
>>Start PXE over IPv4.
  Station IP address is 10.193.167.3

  Server IP address is 10.193.167.2
  NBP filename is pxeboot
  NBP filesize is 415744 Bytes
 Downloading NBP file...

  NBP file downloaded successfully.
BdsDxe: failed to load Boot0001 "UEFI PXEv4 (MAC:000000FFFF03)" from

PciRoot(0x0)/Pci(0x4,0x0)/MAC(000000FFFF03,0x1)/IPv4(0.0.0.0,0x0,DHCP,0.0.0.0,0.0.0.0,0.0.0.0):
Not Found

>>Start PXE over IPv6

I ran a tcpdump on the bridge and investigated the dump with wireshark.
I can see that the DHCP packet looks good and contains all relevant options, including the root path to the NFS server.

Now, I've established that everything works up to the point when pxeboot should take over and load the kernel. However, there's never any NFS
access.

How do I troubleshoot this? I've got the feeling that the pxeboot is not really getting launched? The fact that I'm getting IPv4(0.0.0.0... looks like I'm also not getting the relevant network settings into the execution process?

Any suggestion is very much appreciated.
Let me know if you have any questions that may help shed more light into
this.

Thanks
 
Back
Top