> 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.
Prof. Dipl.-Ing. Klaus Knopper
2014-Aug-27 06:08 UTC
[syslinux] syslinux efi configuration file name proposal
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, 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 - 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. Regards -Klaus -------------- next part -------------- A non-text attachment was scrubbed... Name: syslinux-efi-by-bitness.patch Type: text/x-diff Size: 635 bytes Desc: not available URL: <http://www.zytor.com/pipermail/syslinux/attachments/20140827/e2339968/attachment.bin>
> 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 variantFor 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.
On Wed, Aug 27, 2014 at 2:08 AM, Prof. Dipl.-Ing. Klaus Knopper <syslinux at knopper.net> wrote:> Apparently, the rename of ldlinux.e32 to ldlinux.e64 for the 64bit > variant is already in the mainline git, 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 > - 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. > > Regards > -KlausA simpler patch for just the config filenames (whitespace changed for email): diff --git a/core/fs/lib/loadconfig.c b/core/fs/lib/loadconfig.c index 95e6f3f..47101f9 100644 --- a/core/fs/lib/loadconfig.c +++ b/core/fs/lib/loadconfig.c @@ -22,6 +22,11 @@ int generic_open_config(struct com32_filedata *filedata) }; static const char *filenames[] = { "extlinux.conf", +#if defined(__FIRMWARE_EFI64__) + "syslnx64.cfg", +#elif defined(__FIRMWARE_EFI32__) + "syslnx32.cfg", +#endif "syslinux.cfg", NULL }; -- -Gene