[syslinux] Question about syslinux EFI alpha version

Klaus Knopper knoppix at knopper.net
Tue May 7 04:05:22 PDT 2013


Dear list,

I would like to add and test EFI boot support for a live system. Since I
use isolinux and syslinux for everything, I would be glad to have
syslinux.efi as boot loader for EFI-only machines, so I can just keep
all syslinux.cfg files, help files and boot screen as they are.

I checked out version 6.00-pre git of syslinux (the "firmware" branch)
and was able to compile efi32 and efi64 versions (w/ gnu-efi 3.0t from
Debian/experimental) of syslinux.efi on my 32bit netbook, however, I
think that the generated file format for both .efi files is just wrong.
Neither the OMVF EFI firmware, nor grub-efi or elilo can load the
generated syslinux.efi binaries, and the reason seems to be this:

$ file elilo.efi syslinux.efi syslinux.so
elilo.efi:    PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows
syslinux.efi: MS-DOS executable
syslinux.so:  ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

The output for syslinux.efi just looks wrong.

When checked with hexedit, the header of elilo.efi until .text also
looks larger, but this may be related to some small boot code section
which generates a verbose error message in case something goes wrong in
elilo.

The part of the syslinux code which turns syslinux.so ito syslinux.efi
is efi/wrapper.c. I'm not quite sure whether or not this wrapper MUST be
compiled and run under a pure 64bit environment. The source suggests
that it would detect ELF64 and ELF32 automatically, and actually, this
is true, but maybe the header is created wrongly for the 64bit version
when running under 32bit. I wasn't able to start with the 32bit version
of syslinux.efi either, though.

So it looks like I cannot even test syslinux.efi right now because there
is no EFI-suitable binary generated at all.

Are there maybe precompiled .efi binaries available that I could try?
Is wrapper.c doing something wrong, or is it just me?

Since I don't need any of the syslinux module functions like menu.c32 or
vesa.c32, just the plain commandline bootloader, syslinux.efi in 32 and
64bit would be perfect, if I get it running.

Any hints about creating the right EFI file format for syslinux.efi?

With kind regards
-Klaus


More information about the Syslinux mailing list