Release Engineering

This project is intented for all release related issues (isos, installer, etc), under the umbrella of the ArchLinux Release Engineers

FS#50188 - [archiso] PXE booting from EFI fails

Attached to Project: Release Engineering
Opened by Peter Wu (Lekensteyn) - Thursday, 28 July 2016, 18:10 GMT
Last edited by Gerardo Exequiel Pozzi (djgera) - Thursday, 28 July 2016, 21:22 GMT
Task Type Feature Request
Category ArchISO
Status Assigned
Assigned To Gerardo Exequiel Pozzi (djgera)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 1
Private No


The current lpxelinux.0 and .c32 files from syslinux only work for BIOS systems[1] and fails to boot a UEFI system.
Booting efistub (arch/boot/x86_64/vmlinuz) directly fails because the initrd cannot be located.
Main problem is that the EFI version of syslinux and the related ldlinux and .c32 modules are missing.

Had to do some tricks to get a working boot:
cp -a /usr/lib/syslinux/efi64 boot/syslinux/efi64 && cd $_
# make sure that ldlinux.e64 is loaded at the first attempt from arch/ (see below)
mv ldlinux.e64 ../../../
# Clone cfg files to load .c32 files from efi64/ instead of loading 32-bit .c32 for BIOS
for i in ../*.cfg; do sed 's,/syslinux/,&efi64/,' "$i" > "${i#*/}"; done
sed '1i PATH boot/syslinux/efi64/' archiso.cfg -i
# ensure that splash file and other files are reachable
ln -s ../{hdt/,memdisk,splash.png} ./

For some reason, if ldlinux.e64 is not the first loaded file (e.g. you put it in arch/boot/syslinux/) no further files are being retrieved:
sent /tmp/archiso/arch/boot/syslinux/efi64/syslinux.efi to
file /tmp/archiso/arch/ldlinux.e64 not found
file /tmp/archiso/arch//ldlinux.e64 not found
file /tmp/archiso/arch//boot/isolinux/ldlinux.e64 not found
file /tmp/archiso/arch//isolinux/ldlinux.e64 not found
file /tmp/archiso/arch//boot/syslinuxldlinux.e64 not found
sent /tmp/archiso/arch//boot/syslinux/ldlinux.e64 to
error 0 No error, file close received from
failed sending /tmp/archiso/arch//boot/syslinux/ldlinux.e64 to
putting ldlinux.e64 in arch/ successfully continues to the bootloader.

Tested on an ASUSTeK COMPUTER INC. X550ZE/X550ZE, BIOS 206 09/02/2015
Same configuration (but additionally using pxelinux.0 instead of lpxelinux.0) also boots an older Clevo B7130 (not using EFI).



# For EFI (7 = ia64, 6 = ia32)

# HACK because lpxelinux.0 cannot seem to load ldlinux.c32


Package versions:
* syslinux 6.03-6
* remastered archlinux-2016.07.01-dual.iso

This task depends upon

Comment by Gerardo Exequiel Pozzi (djgera) - Thursday, 28 July 2016, 21:18 GMT
  • Field changed: Attached to Project (Arch Linux → Release Engineering)
Not a bug. Sure, PXE EFI is not currently supported. I am glad to merge a patch if you provide it. Thanks.