[Dnsmasq-discuss] PXE Boot Issues with initrd timeout (BIOS) and grubx64.efi error "E18" (UEFI)

Jean-François JUBLIN jublinjf at saintjo.org
Tue Jul 1 19:08:58 UTC 2025


Hi,

I'm a French teacher and I run a dnsmasq server as PXE (Debian preseeded
installer) / DHCP / DNS server.
I'm running into PXE boot issues this year, using dnsmasq's built-in TFTP
server.

Setup:
- Debian 12 server
- PXE configuration in dnsmasq
- TFTP root is /srv/tftp serving debian installer
- BIOS clients use pxelinux.0
- UEFI clients use grubx64.efi or bootnetx64.efi

Issue 1: BIOS PXE clients
- The pxelinux.0 is loaded successfully, and I get the menu from grub.cfg.

*- However, during the initrd transfer, I get a timeout everytime, same
with clonezilla's squashfs.*- This issue was resolved by disabling the
built-in TFTP in dnsmasq and using an external TFTP server (tftpd-hpa).
With tftpd-hpa, initrd loads fully and the installation proceeds.
Last year built in TFTP server was working fine for legacy BIOS, but I must
say it was way slower than tftp-hpa.

Issue 2: UEFI PXE clients
- The UEFI firmware requests grubx64.efi (I see the TFTP request in the
logs).
- The file exists and is accessible (confirmed with manual TFTP download
from another host).
*-* I can see the choice of PXE server
*, still, when I press enter the UEFI clients fail with a "PXE-E18: Server
response timeout" error before anything is shown on screen.*- I’ve tried
several UEFI `.efi` loaders (grubx64.efi, bootnetx64.efi), all give the
same result.
- I've tried symlink and raw file for the .efi file.
- I've tried different host (old and pretty new motherboard), all give the
same result.

Here how I build my TFTP content :

cd /srv/tftp

wget
> http://ftp.debian.org/debian/dists/bookworm/main/installer-amd64/current/images/netboot/netboot.tar.gz
> tar -xzvf netboot.tar.gz
> rm netboot.tar.gz
> ln -s debian-installer/amd64/grubx64.efi .
> ln -s debian-installer/amd64/grub .


I also compressed initrd files and included firmware, but it makes no
difference — it’s not relevant to the problem.

cd /srv/tftp/debian-installer/amd64
> [ -f initrd.gz.orig ] || cp -p initrd.gz initrd.gz.orig
> [ -f firmware.cpio.gz ] || wget
> https://cdimage.debian.org/cdimage/firmware/bookworm/current/firmware.cpio.gz
> cat initrd.gz.orig firmware.cpio.gz > initrd.gz
> gzip -cd initrd.gz | xz -9 --check=crc32 > initrd.xz



My specific dnsmasq conf :

nano /etc/dnsmasq.d/99-pxe.conf



#disabled since using tftp-hpa

#enable-tftp

tftp-root=/srv/tftp
>


pxe-service=X86-64_EFI,"PXE (UEFI)","grubx64.efi"
> pxe-service=x86PC, "PXELINUX (BIOS)", "pxelinux.0"
>


pxe-service=0, "PXELINUX (0000-BIOS)", "pxelinux.0"
> pxe-service=1, "PXELINUX (0001-EFI)", "grubx64.efi"
> pxe-service=2, "PXELINUX (0002-EFI)", "grubx64.efi"
> pxe-service=3, "PXELINUX (0003-EFI)", "grubx64.efi"
> pxe-service=4, "PXELINUX (0004-EFI)", "grubx64.efi"
> pxe-service=5, "PXELINUX (0005-EFI)", "grubx64.efi"
> pxe-service=6, "PXELINUX (0006-EFI)", "grubx64.efi"
> pxe-service=7, "PXELINUX (0007-EFI)", "grubx64.efi"
> pxe-service=8, "PXELINUX (0008-EFI)", "grubx64.efi"
> pxe-service=9, "PXELINUX (0009-EFI)", "grubx64.efi"


I'm pretty sure last year I did not had thoses issues for EFI either.

Thanks in advance for any help or insight — I’m hoping to get the computer
ready soon for the kids.

Have a nice day,

Best regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/attachments/20250701/314ae744/attachment.htm>


More information about the Dnsmasq-discuss mailing list