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. 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. TIA, Ady.
Prof. Dipl.-Ing. Klaus Knopper
2014-Aug-01 17:52 UTC
[syslinux] syslinux efi configuration file name proposal
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 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 didn't know that Knoppix was already using such method. That's good news, because it means that it should be relatively simple to implement in official Syslinux (hopefully in the near future and before the next stable release), and it also means that it can be actually helpful for users and distros. I'd like to point out the particular naming format I am suggesting. The UEFI specification already uses "boot<arch>.efi". So using the same "<arch>" should provide certain degree of coherence. Taking 4 initial characters (same as "boot*.efi") from "syslinux.cfg" and adding the same <arch> should make the file name unique and its goal clear, keeping "8.3" format, easy to read/type (reducing typos!) and simple for tasks such as searching / copying / whatever. For example: sysl*.* sysl*.cfg *x64.* *ia32.* *.cfg> > I'd vote for acceptance of your proposal. > > Regards > -Klaus >Thank you. I hope Peter agrees. Regards, Ady.
Geert Stappers
2014-Aug-02 15:20 UTC
[syslinux] syslinux efi configuration file name proposal
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".> 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.> 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.> 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".> 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
> 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 >
> 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? TIA, Ady.