Under EFI/BOOT are the following files: BOOTIA32.EFI (from efi32/efi/syslinux.efi) BOOTX64.EFI (from efi64/efi/syslinux.efi) ldlinux.sys (copied from root of partition) lua.c32 mboot.c32 menu.c32 syslinux.cfg vesamenu.c32 KS.CFG (vmware specific) BOOT.CFG (vmware specific) autoselect.lua These files are also all under the root of the partition (except BOOTIA32.EFI and BOOTX64.EFI) and work fine there if I use a normal bios boot. When using UEFI boot, things don't work. If the .c32 files here are incorrect for UEFI boot, where do I get the correct files? I haven't been able to find a description/recipe on how to set up UEFI boot with Syslinux. Why is there none, or where is it? That would probably be easier. Den 20. april 2016 kl. 12.08.26 +02.00 skrev Gene Cumm <gene.cumm at gmail.com>:> On Wed, Apr 20, 2016 at 5:03 AM, Atle Holm <<atle at team-holm.net>> wrote: > > > I recognize hardware with Lua and execute the ESXi installer with > > configuration files for that hardware. > > This works fine with normal Syslinux boot, but I want to get it working for > > UEFI boot as well. > > > > I found efi64/efi/syslinux.efi and efi32/efi/syslinux.efi in the installer > > source, copied them and named them respectively BOOTX64.EFI and BOOTIA32.EFI > > in USBDISK:\EFI\BOOT. > > These were also the original names that the ESXi installer uses for it's > > UEFI boot files. > > > These are generic names in the UEFI standard. > > > > However when using the efi files that the ESXi installers ships with, it > > skips syslinux.cfg and runs directly to boot.cfg (vmware specific file). > > > Correct. For your case, you have to ignore the VMware provided EFI boot loader. > > > > In my setup of the regular bios boot usb installer that I want working with > > UEFI, syslinux reads syslinux.cfg, that presents a menu where I can select > > what boot.cfg I want to use with the ESXi installer. If I select nothing, a > > lua script starts that discovers the hardware and executes the correct the > > esxi installer with the correct boot.cfg. > > > > So that is what I want syslinux uefi to do, and just copying in the files > > like described above with syslinux.cfg and the rest didn't do the trick. > > > > So the question really is, how do I get syslinux UEFI to read syslinux.cfg > > and continue from there? > > > So you either skipped copying the EFI boot loaders or deleted them > then copied the initial Syslinux boot loader and a config. If instead > you happened to rename them and then it seems to boot them still, move > them to a new directory or delete them as they still exist as the old > name (FAT has two ways to store the name). > > Did you also copy ldlinux.c32 and all other necessary files? Where > did you put syslinux.cfg? Searching the root directory of the USB > disk is the last attempt to find a config then it warns that no config > was found. Bear in mind that BIOS COM32 files are not compatible with > EFI ia32 or ia32-64 environments. > > -- > -Gene > > > > > Den 19. april 2016 kl. 12.37.05 +02.00 skrev Gene Cumm > > <<gene.cumm at gmail.com>>: > > > > On Mon, Apr 18, 2016 at 5:40 AM, Atle Holm via Syslinux > > <<syslinux at zytor.com>> wrote: > > > > I am looking for guides on how to create syslinux uefi bootable usb. > > A syslinux bootable usb is created already with vesamenu and luascripting. > > Want to set up the same thing to be UEFI compatible. > > > > > > What are you doing with Lua? Offering multiple boot selections > > including ESXI's installer? Or customizing the boot parameters for > > ESXi's installer? > > > > In this case I am booting an vmware esxi installer. /EFI/boot on the vmware > > ISO has the files BOOTX64.EFI and BOOTIA32.EFI that can be used on the usb. > > But these always go directly to boot.cfg, syslinux.cfg is never read and > > thus my boot menu is never shown, an I never get to use the lua scripting. > > > > > > These binaries are not Syslinux. They identify themselves as > > "mboot_em64t.efi". Syslinux EFI binaries will have "Syslinux" in > > plain text in the binary. > > > > Also, mboot.c32 contains closed source enhancements not available in > > Syslinux to read the very same file. If VMware is willing, I'd love > > to review and merge these enhancements. > > > > I guess syslinux has these efi files somewhere, but on Centos7 I have not > > found them even when I did install the syslinux package. > > > > > > The EFI binaries were introduced with 6.00. > > <http://mirror.centos.org/centos/7/os/x86_64/Packages/> seems to > > indicate version 4.05. I don't know where CentOS or RHEL may place > > them, if at all, but in the binary/source archive, they're at > > efi64/efi/syslinux.efi and efi32/efi/syslinux.efi. > > > > The general recipe that I have found is the following: > > - A "EFI/boot" folder for EFI boot, installed manually: > > - Copy all *.c32 objects from "/usr/lib/syslinux/efi64/" > > - Copy "syslinux.efi" to "bootx64.efi" in same folder as above > > - Edit "syslinux.cfg" in "EFI/boot" > > > > > > But as stated, can't find syslinux.efi > > Best regards > > > > > > I'm pretty sure your packages are of a version that's too old. > > > > The steps necessary for a USB boot that can chainload VMware ESXi's > > mboot loader may be possible but only with the latest git commits > > however I don't know if they'll be of any use. > > > > -- > > -Gene > >
On Thu, Apr 21, 2016 at 3:29 AM, Atle Holm <atle at team-holm.net> wrote:> Under EFI/BOOT are the following files: > BOOTIA32.EFI (from efi32/efi/syslinux.efi) > BOOTX64.EFI (from efi64/efi/syslinux.efi) > ldlinux.sys (copied from root of partition) > lua.c32 > mboot.c32 > menu.c32 > syslinux.cfg > vesamenu.c32 > KS.CFG (vmware specific) > BOOT.CFG (vmware specific) > autoselect.lua > > These files are also all under the root of the partition (except > BOOTIA32.EFI and BOOTX64.EFI) and work fine there if I use a normal bios > boot. When using UEFI boot, things don't work.I'd fully expect this. Syslinux for EFI is incomplete.> If the .c32 files here are incorrect for UEFI boot, where do I get the > correct files?The same place as the other files. You'll need at least efi64/com32/elflink/ldlinux/ldlinux.e64> I haven't been able to find a description/recipe on how to set up UEFI boot > with Syslinux. Why is there none, or where is it? That would probably be > easier.I had the impression from the first or second message you send that you already had a recipe. http://www.syslinux.org/wiki/index.php?title=Install#UEFI is a start. An additional config will be warranted. In the root of the file system, a file named syslx64.cfg with #BEGIN syslx64.cfg PATH boot/syslinux/x64 INCLUDE common.cfg #END syslx64.cfg For COM32 modules, you'll need at least (vesa)menu.c32, lua.c32, mboot.c32, and all of the libraries they depend on (though everything is easier) from within efi64/com32/ for the 64-bit placed in the boot/syslinux/x64 directory. Then rename your existing syslinux.cfg as common.cfg and create a new syslinux.cfg with #BEGIN syslinux.cfg PATH boot/syslinux/bios INCLUDE common.cfg #END syslinux.cfg and move the BIOS COM32 modules to that directory. I'm reasonably certain that the shuffling of your current syslinux.cfg and the current BIOS COM32 modules will be necessary as the EFI variants will likely try to load the BIOS COM32 module from the root instead of the directory in PATH and fail.> Den 20. april 2016 kl. 12.08.26 +02.00 skrev Gene Cumm > <gene.cumm at gmail.com>: > > On Wed, Apr 20, 2016 at 5:03 AM, Atle Holm <atle at team-holm.net> wrote: > > I recognize hardware with Lua and execute the ESXi installer with > configuration files for that hardware. > This works fine with normal Syslinux boot, but I want to get it working for > UEFI boot as well. > > I found efi64/efi/syslinux.efi and efi32/efi/syslinux.efi in the installer > source, copied them and named them respectively BOOTX64.EFI and BOOTIA32.EFI > in USBDISK:\EFI\BOOT. > These were also the original names that the ESXi installer uses for it's > UEFI boot files. > > > These are generic names in the UEFI standard. > > However when using the efi files that the ESXi installers ships with, it > skips syslinux.cfg and runs directly to boot.cfg (vmware specific file). > > > Correct. For your case, you have to ignore the VMware provided EFI boot > loader. > > In my setup of the regular bios boot usb installer that I want working with > UEFI, syslinux reads syslinux.cfg, that presents a menu where I can select > what boot.cfg I want to use with the ESXi installer. If I select nothing, a > lua script starts that discovers the hardware and executes the correct the > esxi installer with the correct boot.cfg. > > So that is what I want syslinux uefi to do, and just copying in the files > like described above with syslinux.cfg and the rest didn't do the trick. > > So the question really is, how do I get syslinux UEFI to read syslinux.cfg > and continue from there? > > > So you either skipped copying the EFI boot loaders or deleted them > then copied the initial Syslinux boot loader and a config. If instead > you happened to rename them and then it seems to boot them still, move > them to a new directory or delete them as they still exist as the old > name (FAT has two ways to store the name). > > Did you also copy ldlinux.c32 and all other necessary files? Where > did you put syslinux.cfg? Searching the root directory of the USB > disk is the last attempt to find a config then it warns that no config > was found. Bear in mind that BIOS COM32 files are not compatible with > EFI ia32 or ia32-64 environments. > > -- > -Gene > > > Den 19. april 2016 kl. 12.37.05 +02.00 skrev Gene Cumm > <gene.cumm at gmail.com>: > > On Mon, Apr 18, 2016 at 5:40 AM, Atle Holm via Syslinux > <syslinux at zytor.com> wrote: > > I am looking for guides on how to create syslinux uefi bootable usb. > A syslinux bootable usb is created already with vesamenu and luascripting. > Want to set up the same thing to be UEFI compatible. > > > What are you doing with Lua? Offering multiple boot selections > including ESXI's installer? Or customizing the boot parameters for > ESXi's installer? > > In this case I am booting an vmware esxi installer. /EFI/boot on the vmware > ISO has the files BOOTX64.EFI and BOOTIA32.EFI that can be used on the usb. > But these always go directly to boot.cfg, syslinux.cfg is never read and > thus my boot menu is never shown, an I never get to use the lua scripting. > > > These binaries are not Syslinux. They identify themselves as > "mboot_em64t.efi". Syslinux EFI binaries will have "Syslinux" in > plain text in the binary. > > Also, mboot.c32 contains closed source enhancements not available in > Syslinux to read the very same file. If VMware is willing, I'd love > to review and merge these enhancements. > > I guess syslinux has these efi files somewhere, but on Centos7 I have not > found them even when I did install the syslinux package. > > > The EFI binaries were introduced with 6.00. > http://mirror.centos.org/centos/7/os/x86_64/Packages/ seems to > indicate version 4.05. I don't know where CentOS or RHEL may place > them, if at all, but in the binary/source archive, they're at > efi64/efi/syslinux.efi and efi32/efi/syslinux.efi. > > The general recipe that I have found is the following: > - A "EFI/boot" folder for EFI boot, installed manually: > - Copy all *.c32 objects from "/usr/lib/syslinux/efi64/" > - Copy "syslinux.efi" to "bootx64.efi" in same folder as above > - Edit "syslinux.cfg" in "EFI/boot" > > > But as stated, can't find syslinux.efi > Best regards > > > I'm pretty sure your packages are of a version that's too old. > > The steps necessary for a USB boot that can chainload VMware ESXi's > mboot loader may be possible but only with the latest git commits > however I don't know if they'll be of any use. > > -- > -Gene > >-- -Gene
> > I haven't been able to find a description/recipe on how to set up UEFI boot > > with Syslinux. Why is there none, or where is it? That would probably be > > easier. > > I had the impression from the first or second message you send that > you already had a recipe. > > http://www.syslinux.org/wiki/index.php?title=Install#UEFI is a start. >Unfortunately, tolerance and good will are frequently replied with abuse. Mr. Holm has made no effort to search for answers, among other abuses. He had the same kind of abusive approach about 6 months ago in this same Syslinux Mailing List. Incidentally, the same wiki page was pointed to him back then.
On Thu, Apr 21, 2016 at 6:39 AM, Gene Cumm <gene.cumm at gmail.com> wrote:> On Thu, Apr 21, 2016 at 3:29 AM, Atle Holm <atle at team-holm.net> wrote: >> Under EFI/BOOT are the following files: >> BOOTIA32.EFI (from efi32/efi/syslinux.efi) >> BOOTX64.EFI (from efi64/efi/syslinux.efi) >> ldlinux.sys (copied from root of partition) >> lua.c32 >> mboot.c32 >> menu.c32 >> syslinux.cfg >> vesamenu.c32 >> KS.CFG (vmware specific) >> BOOT.CFG (vmware specific) >> autoselect.lua >> >> These files are also all under the root of the partition (except >> BOOTIA32.EFI and BOOTX64.EFI) and work fine there if I use a normal bios >> boot. When using UEFI boot, things don't work. > > I'd fully expect this. Syslinux for EFI is incomplete. > >> If the .c32 files here are incorrect for UEFI boot, where do I get the >> correct files? > > The same place as the other files. You'll need at least > efi64/com32/elflink/ldlinux/ldlinux.e64 > >> I haven't been able to find a description/recipe on how to set up UEFI boot >> with Syslinux. Why is there none, or where is it? That would probably be >> easier. > > I had the impression from the first or second message you send that > you already had a recipe. > > http://www.syslinux.org/wiki/index.php?title=Install#UEFI is a start. > > An additional config will be warranted. In the root of the file > system, a file named syslx64.cfg with > > #BEGIN syslx64.cfg > PATH boot/syslinux/x64 > INCLUDE common.cfg > #END syslx64.cfg > > > For COM32 modules, you'll need at least (vesa)menu.c32, lua.c32, > mboot.c32, and all of the libraries they depend on (though everything > is easier) from within efi64/com32/ for the 64-bit placed in the > boot/syslinux/x64 directory. > > Then rename your existing syslinux.cfg as common.cfg and create a new > syslinux.cfg with > > > #BEGIN syslinux.cfg > PATH boot/syslinux/bios > INCLUDE common.cfg > #END syslinux.cfg > > > and move the BIOS COM32 modules to that directory. > > I'm reasonably certain that the shuffling of your current syslinux.cfg > and the current BIOS COM32 modules will be necessary as the EFI > variants will likely try to load the BIOS COM32 module from the root > instead of the directory in PATH and fail.On Thu, Apr 21, 2016 at 10:46 AM, Atle Holm <atle at team-holm.net> wrote:> OK, it now looks like this. > /common.cfg (has contents of previously syslinux.cfg for menu and all) > /syslinux.cfg > PATH BOOT/SYSLINUX/BIOS > INCLUDE common.cfg > /syslx64.cfg > PATH BOOT/SYSLINUX/x64 > INCLUDE common.cfg > /BOOT.CFG (vmware specific) > /KS.CFG (vmware specific) > /EFI/BOOT/BOOTIA32.EFI > /EFI/BOOT/BOOTX64.EFI > /EFI/BOOT/ldlinux.e64 > /EFI/BOOT/ldlinux.elf > /BOOT/SYSLINUX/BIOS/lua.c32 (241 KB) > /BOOT/SYSLINUX/BIOS/mboot.c32 (79 KB) > /BOOT/SYSLINUX/BIOS/menu.c32 (54 KB) > /BOOT/SYSLINUX/BIOS/vesamenu.c32 (150 KB) > /BOOT/SYSLINUX/x64/cmenu.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/cpu.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/dhcp.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/dmi.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/lfs.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/liblua.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/lua.c32 (9KB) - from > syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/mboot.c32 (13KB) - from > syslinux-6.03.zip\efi64\com32\mboot > /BOOT/SYSLINUX/x64/menu.c32 (32KB) - from syslinux-6.03.zip\efi64\com32\menu > /BOOT/SYSLINUX/x64/pci.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/syslinux.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/vesa.c32 - from syslinux-6.03.zip\efi64\com32\lua\src > /BOOT/SYSLINUX/x64/vesamenu.c32 (11 KB) - from > syslinux-6.03.zip\efi64\com32\menuWhere are the library modules? You can't load any of the x64 modules without the libraries. Search under efi64/com32/ for any lib*.c32 files.> So when I do a BIOS boot, I now get: > Could not find kernel image: vesamenu.c32 > This used to work earlier.Thinking about this now, you're probably going to have to skip the BIOS/UEFI-ia32/UEFI-ia32-x64 hybrid in favor of a BIOS-only drive and a UEFI-ia32/UEFI-ia32-x64 hybrid or skip using VMware's mboot.c32 and boot.cfg (and instead stuff its data into your Syslinux config). PATH is a relatively newer directive not found in v3.86 or v4.05.> When I do a UEFI boot, I now get: > Failed to load COM32 file: vesamenu.c32 > So that is progress. > > I tried placing the contents of /BOOT/SYSLINUX/x64 on the root of the disk > and also inside /EFI/BOOT/ but that made no difference. I noticed that the > c32 files that I found from syslinux-6.03.zip were alot smaller then the > BIOS C32 files I have been using from syslinux 4.05 that came shipped with > Ubuntu (see my notations above). > I am guessing that the files in syslinux-6.03.zip need compiling of some > sort to include all it should in the file? > If so, how to do? > Do I have to compile and install the whole syslinux-6.03 package to get the > com32 modules?static versus ELF linked binaries. You don't need to compile anything. -- -Gene