[syslinux] syslinux efi configuration file name proposal

Ady ady-sf at hotmail.com
Fri Aug 1 10:35:27 PDT 2014

Goal: To have one USB drive capable of booting UEFI IA32 and UEFI X64 
(with an optional Syslinux menu containing multiple entries).

Problem (solved) #1: The default directory location for both 
syslinux.efi is the same.

Solution #1: Rename each syslinux.efi to bootx64.efi and to 

Problem (solved) #2: Each syslinux.efi needs at least its respective 
ldlinux module.

Solution #2: Each ldlinux module is renamed with its corresponding 
file name extension according to firmware/architecture. Each 
syslinux.efi searches for its respective ldlinux.{e32,e64} module.

Problem (solved) #3: Similarly to the ldlinux module, the other 
modules also use the same file names for every firmware/architecture.

Solution #3: Use the PATH directive and a combination of relative and 
absolute path notation. This solution allows maintaining current 
configurations, tutorials, easy copying, in-common cfg files... as 
the same "c32" file name extension is kept for all alternatives.

Problem #4: The initial configuration file, "syslinux.cfg", is also 
using the same default file name and the same default location. The 
content of "syslinux.cfg" might not be in-common to both UEFI 
architectures (e.g. different values for the PATH directive).


Proposing a solution for Problem #4: syslinux.efi should look first 
for a corresponding "sysl<arch>.cfg", and then fallback to 
syslinux.cfg in the same searched-for location.

This proposal #4 is based on what ISOLINUX already uses for its 
configuration file name: in the first searched-for directory, it 
first looks for "isolinux.cfg" and then for "syslinux.cfg", and then 
moves on to the next searched-for directory to repeat the procedure.

In the same way that syslinux.efi under X64 looks for ldlinux.e64, it 
should also look for "syslx64.cfg" in the same location, and only if 
"syslx64.cfg" is not found, then it should look for "syslinux.cfg" in 
the same location.

Similarly, syslinux.efi under IA32 looks for ldlinux.e32, so it 
should look for "syslia32.cfg" as configuration file in the same 
location, and only if "syslia32.cfg" is not found, then it should 
look for "syslinux.cfg" in the same location.

As usual, the searched name should be case-INsensitive.

The same searched-name order is valid, independently of the name of 
syslinux.efi. In other words, whether the name of the boot loader is 
"syslinux.efi", or "bootx64.efi" or any other, the relevant 
configuration file is searched ("sysl<arch>.cfg"), before falling 
back to search for the generic term, "syslinux.cfg", in the same 
searched-for location.

The suggested name, "sysl<arch>.cfg", uses the same naming format as 
the UEFI specification already uses for "boot<arch>.efi". This naming 
format also respects the "8.3" format of FAT/ISO9660.

At this point, this proposal is relevant for syslinux.efi (UEFI 
systems), but not for ldlinux.sys (BIOS systems), as it seems 
unnecessary for the latter.


Please consider this proposal.


More information about the Syslinux mailing list