Error with UEFI PXE boot

PauloBarreiros

New Member
Mar 6, 2025
3
0
1
Hi everyone

I'm having a problem with UEFI PXE boot in VM environment.
I'm trying to create a PXE Server, so i've created a VM with Ubuntu 24, installed isc-dhcp-server and tftp-hpa. Compiled iPXE for both legacy and UEFI, and placed the files (undionly.kpxe and ipxe.efi) on the root folder of tftp (/tftproot/).
Then i've created another vm without any OS installed, to see if it would boot from pxe.
I've tried to boot using "SeaBios" and "OVMF".
If i boot with "SeaBios", it works.... but if i try to boot using "OVMF" i get the following message :
Code:
>>Start PXE over IPV4
Station IP Address is 10.0.0.12

Server IP Address is 10.0.0.3
NBP filename is ipxe.efi
NBP filesize is 0 Bytes
PXE-E99: Unexpected network error

BdsDxe: failed to load Boot0003 "UEFI PXEv4 (MAC:BC24112AD38C)" From PciRoot (0x0)/Pci(0x12,0x0)/MAC(BC24112AD38C.0x1)/IPv4(0.0.0.0,0x0,DHCP,0.0.0.0,0.0.0.0,0.0.0.0) : Not Found

Already tried attaching an "EFI disk" and a "VirtIO RNG", but the result is always the same.

Can someone please help ??

I'm posting here the config files of the Ubuntu VM

/etc/netplan/50-cloud.init.yaml
Code:
network:
  version: 2
  ethernets:
    enp6s18:
      dhcp4: no
      dhcp6: no
      addresses: [10.0.0.3/24]
      nameservers:
        addresses: [1.1.1.1,8.8.8.8,8.8.4.4]
      optional : true
    enp6s19:
      dhcp4: yes
      routes:
        - to: default
          via: 192.168.1.254
/etc/default/isc-dhcp-server
Code:
INTERFACESv4="enp6s18"
INTERFACESv6=""

The second interface (enp6s19) is there only to have internet so i can install packages
/etc/dhcp/dhcpd.conf
Code:
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;

option architecture-type code 93 = unsigned integer 16;

class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";

        if option architecture-type = 00:00 {
                filename "undionly.kpxe"; # BIOS
        } elsif option architecture-type = 00:07 {
                filename "ipxe.efi"; # EFI
                option bootfile-name "ipxe.efi";
        } elsif option architecture-type = 00:09 {
                filename "EFIia64/syslinux.efi"; # ia64_EFI
                option bootfile-name "syslinux.ia64";
        } elsif option architecture-type = 00:06 {
                filename "EFIia32/syslinux.efi"; # ia32_EFI
        }
}

subnet 10.0.0.0 netmask 255.255.255.0 {
        range 10.0.0.10 10.0.0.200;
        option subnet-mask 255.255.255.0;
        option routers 192.168.1.254;
        next-server 10.0.0.3;
}

/etc/default/tftpd-hpa
Code:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftproot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"

I'm running both VM's on an isollated network.

The config files of the VM itself are :

PXEServer :
/etc/pve/nodes/proxmox/qemu-server/190.conf
Code:
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 4
cpu: x86-64-v2-AES
cpulimit: 8
efidisk0: local:190/vm-190-disk-0.qcow2,efitype=4m,ms-cert=2023,pre-enrolled-keys=1,size=528K
ide2: local:iso/ubuntu-24.04.3-live-server-amd64.iso,media=cdrom,size=3226020K
machine: q35
memory: 32000
meta: creation-qemu=10.1.2,ctime=1764112097
name: pxeserver
net0: virtio=BC:24:11:0E:D5:99,bridge=isolLan,firewall=1
net1: virtio=BC:24:11:B2:7A:03,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: local:190/vm-190-disk-1.qcow2,iothread=1,size=150G
scsihw: virtio-scsi-single
smbios1: uuid=e7e4507a-6a7c-4ffb-8e16-62863067f226
sockets: 2
vmgenid: e41a5244-f2c1-4c17-8e1a-b37d396dacad

and the vm for testing the pxeboot:

/etc/pve/nodes/proxmox/qemu-server/999.conf
Code:
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 3
cpu: x86-64-v2-AES
cpulimit: 3
efidisk0: local:999/vm-999-disk-2.qcow2,efitype=4m,size=528K
ide2: none,media=cdrom
memory: 2048
meta: creation-qemu=10.1.2,ctime=1764197982
name: testepxe
net0: rtl8139=BC:24:11:2A:D3:8C,bridge=isolLan,firewall=1
numa: 0
ostype: l26
rng0: source=/dev/urandom
scsi0: local:999/vm-999-disk-0.qcow2,iothread=1,size=8G
scsihw: virtio-scsi-single
smbios1: uuid=a457da31-6384-4512-9ab0-9f387e8d7407
sockets: 1
unused0: local:999/vm-999-disk-1.qcow2
vmgenid: b4f2b76e-7a00-4ee2-8931-0f68cb8d15a3

Sorry for the big post, but i wanted to be as accurate as possible.

Thanks

Edit : forgot to attach a capture done with "tcpdump -w output.pcap port 67 or port 68 or port 69 or port 4011"
 

Attachments

Last edited: