PXE booting uefi machines (x86)
Hi
A couple of months ago I helped Holger write a patch to the
installation manual explaining how to set up PXE machines
(see bugs.d.o/907837). However upon actually testing the
instructions, they appear to be incorrect. Thankfully they
have not been published yet.
I would be grateful if anyone here could share a uefi pxe config
that works with buster, so we can improve the docs.
This does seem to be a trouble spot for installing Debian,
see [1] and [2] below.
Cheers
Vince
The non-working setup is described below.
Everything works with pxeboot.
The client is an amd64 box (Dell Optiplex).
The dhcp server points it at /efi64/syslinux.efi on the tftp server.
The tftp server is Debian Stretch with tftpd-hpa.
The client requests the file (I can see this from tcpdump)
but nothing further happens; it just hangs after displaying
the gateway IP address. Strangely, stat()ing the syslinux.efi file
does not show any accesses so I'm not 100% the file is actually
downloaded by the client.
In the server logs I get only this:
in.tftpd[33366]: RRQ from 10.2.3.4 filename /efi64/syslinux.efi
in.tftpd[33366]: tftp: client does not accept options
in.tftpd[33368]: RRQ from 10.2.3.4 filename /efi64/syslinux.efi
The server directory tree layout is:
/srv/tftpboot/
debian/daily/amd64/debian-installer/amd64/
bootnetx64.efi
boot-screens/
grub/
grubx64.efi
initrd.gz
linux
pxelinux.0
pxelinux.cfg/
default # standard netboot.tar.gz version
efi64/
syslinux.efi
*.c32 #copied from /usr/lib/syslinux/modules/efi64/
ldlinux.e64 #ditto
pxelinux.cfg/
default
The second default file reads:
# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path debian/daily/amd64/debian-installer/amd64/boot-screens/
include debian/daily/amd64/debian-installer/amd64/boot-screens/menu.cfg
default debian/daily/amd64/debian-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 10
I've tried a couple of different variations for the paths as well,
eg ../../debian/daily/amd64/debian-installer/amd64/boot-screens/
I also tried forcing the client type to EFIx64 (dhcp option 93),
it doesn't change the behaviour.
After prowling the internet I got inspiration from [1] and [2].
I installed debian-installer-9-netboot-amd64 and copied the
bootnetx64.efi into the tftp tree, trying both /bootnetx64.efi
and /efi64/bootnetx64.efi as the target boot file.
Both behaved the same as syslinux.efi.
As an aside, I noticed that bootnetx64.efi in the buster image is
much larger than the one in debian-installer-9-netboot-amd64.
The buster one is 1169528 bytes, the other 446464.
This is significant because if I try booting the buster bootnetx64.efi,
I get a 'file too large' error from the pxe client (Intel Boot Agent
1.3.81, PXE Base code PXE-2.1 build 089).
[1] https://lists.debian.org/debian-user/2017/03/msg00578.html
[2] https://lists.debian.org/debian-user/2018/08/msg01443.html
Reply to: