[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: