[syslinux] syslinux efi configuration file name proposal

Ady ady-sf at hotmail.com
Wed Aug 27 00:52:25 PDT 2014


> Hello Ady & list,
> 
> On Wed, Aug 27, 2014 at 08:17:51AM +0300, Ady wrote:
> > > Hello Ady,
> > > 
> > > On Fri, Aug 01, 2014 at 08:35:27PM +0300, Ady wrote:
> > > > 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 
> > > > bootia32.efi.
> > > > 
> > > > 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.
> > > 
> > > [...]
> > > 
> > > Your suggested proposal is, entirely by chance, almost exactly the same
> > > solution that I'm currently using in Knoppix since version 7.2, i.e.
> > > bitness-dependent ldlinux.e32/ldlinux.e64 and also a
> > > syslnx32.cfg/syslnx64.cfg with a fallback to syslinux.cfg. It's merely
> > > renaming and adding file names to the syslinux configuration file array,
> > > just a few lines of code. So far, the patch is only included on Knoppix,
> > > but feel free to use it on your distro as well.
> > > 
> > > I'd vote for acceptance of your proposal.
> > > 
> > > Regards
> > > -Klaus
> > > 
> > 
> > Hello Klaus,
> > 
> > Is there any chance to see your customized Syslinux 6.xx source code 
> > / patch(es) / commits or alike? Is there any public URL?
> 
> Apparently, the rename of ldlinux.e32 to ldlinux.e64 for the 64bit
> variant is already in the mainline git,
 
 
 
Correct. That's why in my proposal, I wrote "Problem (solved) #2", 
emphasize in "solved" (see "Solution #2").
 
 
 
> so the only change left for
> automatically chosing a different config file is the tiny patch attached
> here, which will
> 
> - prepend syslnx64.cfg to the config file search path for the 64bit variant
> - prepend syslnx32.cfg to the config file search path for the 32bit variant
 
 
 
For the BIOS cpu architectures, there is already ifcpu[64].c32.

In my proposal, I am focusing on EFIIA32 and EFIX64 only.

If I understand correctly, your patch seems to be based on 
"core/fs/lib/loadconfig.c":

 +#if defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64) 

which means (again, if I understand correctly) that it affects 
BIOS-based systems too.

As potential reference, in 
"gpxe/src/include/gpxe/efi/Uefi/UefiSpec.h" we have:

"// EFI File location to boot from on removable media devices"

So, my goal is to get the *EFI* architecture (only), IA32 or X64, 
i.e. excluding systems booting with BIOS firmware or in CSM, and then 
use a similar patch as yours in "loadconfig.c".

Unfortunately, I am not a developer, so I don't know how to code a 
selection of:
 "booted in EFI<Arch> mode, not BIOS nor CSM"
 
 
 
> - add /boot/isolinux and /isolinux plus isolinux.cfg to the search path for
>   all variants, just for the case that the "rename" was forgotten when copying
>   over the files from an iso9660 CD/DVD to FAT32 flash disk.
 
 
This part of the patch is unnecessary (and partially 
counterproductive). The current already-implemented solution is to 
use the "/[boot/]syslinux/" path for both, isolinux.cfg and 
syslinux.cfg. For your next release of KNOPPIX, I would suggest 
getting rid of the "/[boot/]isolinux/" directory. Thus, ISOLINUX will 
boot with isolinux.cfg, and SYSLINUX will boot with syslinux.cfg, 
both files located in the same "/[boot/]syslinux/" location. 
Moreover, if both .cfg files have the same content, you can leave 
syslinux.cfg alone and get rid of isolinux.cfg too; ISOLINUX will 
boot using syslinux.cfg. IIRC, this is valid since 4.06. See:
 www.syslinux.org/wiki/index.php/Configuration_location_and_name 
 
 
> 
> Regards
> -Klaus
> 
Thank you for your prompt reply.


So, going back to:
 "booted in EFI<Arch> mode, not BIOS nor CSM"

Any tips / clues / code / patch?

(Perhaps Matt might have some pointers?)

TIA,
Ady.



More information about the Syslinux mailing list