[syslinux] syslinux efi configuration file name proposal

Ady ady-sf at hotmail.com
Sat Aug 2 09:02:44 PDT 2014


> Op 2014-08-01 om 20:35 schreef Ady:
> > Goal: To have one USB drive capable of booting UEFI IA32 and UEFI X64 
> > (with an optional Syslinux menu containing multiple entries).
> 
> What I would like to have is the same thing for network boot.
> So having one topdirectory on the TFTP server that can serve
> several "architectures".
 
I think that, for PXELINUX (or netbooting in general), there are 
other methods to select the default path (directory) and then the 
default configuration file, according to architecture.
 
> 
> > 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 
> > bootia32.efi.
> 
> | stappers at nero:~/dl/syslinux-6.03-pre19
> | $ find . -name "*.efi"
> | ./efi64/efi/syslinux.efi
> | ./efi32/efi/syslinux.efi
> | ./gpxe/src/arch/x86_64/Makefile.efi
> | ./gpxe/src/arch/x86/Makefile.efi
> | ./gpxe/src/arch/i386/Makefile.efi
> 
> That rename is _not_ in the 6.03 pre-release 19.
> 
 
Correct, and adequate too. The default names for the default UEFI 
boot loader is established in the UEFI specification. Syslinux shall 
keep "efi{32,64}/efi/syslinux.efi". The renaming of any UEFI boot 
loader is a task left for the user, and rightly so. Among other 
reasons, this reduces the possibility of inadvertently overwriting 
the original default boot loader.
 
> 
> > 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.
> 
> | stappers at nero:~/dl/syslinux-6.03-pre19
> | $ find . -name "ldlinux.e*"
> | ./efi64/com32/elflink/ldlinux/ldlinux.e64
> | ./efi64/com32/elflink/ldlinux/ldlinux.elf
> | ./efi32/com32/elflink/ldlinux/ldlinux.e32
> | ./efi32/com32/elflink/ldlinux/ldlinux.elf
> | ./bios/com32/elflink/ldlinux/ldlinux.elf
> 
> That rename _is_ in the 6.03 pre-release 19.
> 
 
Yes, because this is Syslinux-specific and was implemented a long 
time ago (hence, #2 is "solved").
 
> 
> > 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.
> 
> For netboot this would be  "pxel<arch>.cfg" and fallback
> to "pxelinux.cfg".
> 
 
Selecting a different directory according to the architecture seems 
to me not exactly the same as searching for a different file name 
(but I could be wrong). Since "pxelinux.cfg" is the "classic" 
_directory_ used for BIOS systems, and "pxelinux.cfg/default" is the 
"classic" configuration file name in BIOS systems, perhaps you meant 
"pxelinux.cfg/sysl<arch>.cfg" or something similar?

Do you really need a completely different _default_ root directory 
for each architecture for netbooting?

Since there are other methods to select the default configuration 
file for netbooting, I am leaving the netbooting matter for the 
Syslinux Team.
 
> 
> > 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.
> > 
> > 
> > @Peter,
> > 
> > Please consider this proposal.
> 
> And after consideration, please provide feedback.
> 
> 
> Groeten
> Geert Stappers
> -- 
> Leven en laten leven
> _______________________________________________
> Syslinux mailing list
> Submissions to Syslinux at zytor.com
> Unsubscribe or set options at:
> http://www.zytor.com/mailman/listinfo/syslinux
> 




More information about the Syslinux mailing list