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

Simon Kelley simon at thekelleys.org.uk
Thu Jul 10 16:24:18 UTC 2025


If 2.92test13 times out during TFTP but 2.91 and earlier don't, I'm 
interested. 2.92 has have some work on the TFTP server (specificailly, 
implementing windowed transfers. This should make it faster, but there's 
a possibility that it's broken something.

Jean-Francois, would it be possible to get a packet dump of the failed 
TFTP transfer? I can give you detailed instructions on how to do that, 
if needed.


Cheers,

Simon.

On 10/07/2025 15:52, Jean-François JUBLIN wrote:
> Hi,
> 
> Any ideas ? I use v2.92test13 since its embeded with piHole, any version 
> I should try as a standalone ?
> 
> Thanks.
> 
> Le mar. 1 juil. 2025 à 21:08, Jean-François JUBLIN <jublinjf at saintjo.org 
> <mailto:jublinjf at saintjo.org>> a écrit :
> 
>     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 <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 <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,
> 
> 
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss




More information about the Dnsmasq-discuss mailing list