UEFI issues booting into FAI sysinfo on Dell PowerEdge

Steffen Grunewald steffen.grunewald at aei.mpg.de
Mon Sep 3 15:31:44 CEST 2018


On Mon, 2018-09-03 at 14:44:54 +0200, Thomas Lange wrote:
> >>>>> On Mon, 3 Sep 2018 14:26:49 +0200, Steffen Grunewald <steffen.grunewald at aei.mpg.de> said:
> 
>     > After finding how to distinguish between BIOS and UEFI PXE requests, and
>     > setting up the DHCP/TFTP server accordingly, it was only "yet another step"
>     > to find and add ldlinux.e64 to get the machine booting.
> I use syslinux.efi in the dhcpd.conf for UEFI machines. I have

I'm following the instructions from SYSLINUX for automatic handling, with minor
modifications I stole from somewhere else:

    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";                                                                                                                                                                                                       
    }                                                                                                                                                                                                                                      

Seems to work for 64-bit UEFI. (It's somewhat confusing that an x86_64 EFI file
would also work on an aarch64 machine, btw., but I have only one of those.)

> syslinux.efi and ldlinux.e64 in my tftp directory. Then I can use the

Indeed I had been missing ldlinux.e64 initially, but quickly learned about my
mistake from /var/log/daemon.log. syslinux64.efi has been copied from the syslinux
64-bit modules tree, and renamed accordingly.

> same syntax in the pxelinux.cfg files as before.

Thank you for confirming that no modification is necessary!

>     > /var/log/daemon shows both requests and nothing more after them.
> I had problems with a broken UEFI Bios on a Thinkpad. Upgrading the
> BIOS fixed the issue for me.
> I would try another machine using UEFI.

It turned out that I was a little bit too impatient. Apparently, there's a
long period of "virtually nothing happening", but when I came back from typing
the email, the sysinfo run had finished (there had been a problem with the log
upload, but that'd been caused by my stupidity only - pity I don't have any
results).
I remember that the "legacy" sysinfo run also took a long while to get started,
so it might be hardware-specific.
I'll try another UEFI machine soon, and have added support for 32-bit UEFI for
that reason.

Thanks for the heads-up.

- Steffen


More information about the linux-fai mailing list