PXE boot with UEFI

Steffen Grunewald steffen.grunewald at aei.mpg.de
Fri Nov 29 15:50:51 CET 2019

On Fri, 2019-11-29 at 14:44:30 +0000, Frank Morawietz wrote:
> In a recent discussion I found...
> > You have to start the PC using UEFI boot via PXE (instead of legacy) -
> > than grub-install installs the efi-based grub when called by FAI.
> ...and that's exactly what I'm fighting with currently.
> Has anybody done this already? Booting PXE in UEFI mode in order to run the FAI installation for UEFI?
> I configured the BIOS settings of the client accordingly: Secure Boot off; Enable UEFI network stack; included NIC into boot list; etc.
> On the FAI server side I can see the DHCPDISCOVER, DHCPOFFER, DHCPREQUEST and DHCPACK sequence with correct MAC and IP addresses in the daemon.log . This is followed by the usual "tftp: client does not accept options", so I assume that control gets handed over to tftpd. Looks like a successful PXE boot to me.
> On the client side the PXE is requesting the address, waiting for some time, then the screen displays a generic error message and recommends to run diags, go to BIOS or try again.
> An update of the client's BIOS to the most recent version did not help.
> In my despair I even called the vendor support. They told me that I needed a different pxelinux image for UEFI... Can this be true?
> BTW: The very same configuration booted with PXE in legacy mode works perfectly. It starts fine and the whole installation runs through until the system is installed completely. Of course, it installed a legacy system, not UEFI, then.
> Thanks for any experience/advice/help,

Hi Frank,

from my dhcpd.conf:

## PXE boot handling: support UEFI
## https://www.syslinux.org/wiki/index.php?title=PXELINUX#UEFI
## merged with something else that doesn't require "architecture type code 93"
    if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000" {
          filename "pxelinux.0";
# needs ldlinux.c32
    if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006" {
          filename "syslinux32.efi";
# needs ldlinux.e32
    if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007" {
          filename "syslinux64.efi";
# needs ldlinux.e64
    if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009" {
          filename "syslinux64.efi";

Does this help you?


Steffen Grunewald, Cluster Administrator
Max Planck Institute for Gravitational Physics (Albert Einstein Institute)
Am Mühlenberg 1 * D-14476 Potsdam-Golm * Germany
Fon: +49-331-567 7274
Mail: steffen.grunewald(at)aei.mpg.de

More information about the linux-fai mailing list