[syslinux] Syslinux EFI + TFTPBOOT Support

Gene Cumm gene.cumm at gmail.com
Fri Mar 7 13:56:31 PST 2014

On Fri, Mar 7, 2014 at 10:50 AM, Steven Shiau <steven at nchc.org.tw> wrote:
> On 2014年03月07日 23:05, Ady wrote:
>> I understand that these remarks might seem not the main issue, but I
>> tend to think that once you are successful while using only "default"
>> values and in a minimalistic case, you could add complexity
>> (different paths, multiple firmwares, additional kernels, multiple
>> cfg files...).
> Ady,
> Thanks. I will follow your advice to test more.
> Gene,
> You mentioned you have booted several EFI64 systems with x86-64 kernels
> successfully.
> Could you please share your config files of dhcp, tftpd, pxelinux, and
> the tree of your tftpboot dir?
> Thanks in advance.

In /etc/vmware/vmnet8/dhcpd/dhcpd.conf I added the following:

host 7x {
        hardware ethernet 00:0C:29:38:6B:6E;
        filename "e6/bootx64.efi";
#       option vendor-encapsulated-options

Currently atftpd (better logging and not interested in 92+MiB files
via TFTP when I have HTTP).

>From /tftpboot, I have a directory e6/ containing all EFI64 files and
a bunch of symlinks within the directory and to the parent (where I
keep BIOS stuff, including some kernel/initrds that can do BIOS and
EFI64).  bootx64.efi is a symlink to syslinux.efi.  syslinux.efi is a
symlink to slcur/syslinux.efi.  slcur is a symlink to a directory
containing whatever version I'm testing (say sl603p7/ for 6.03-pre7)
since I have about 20 versions prepped for use at the moment, half of
which I built for testing various patches.

e6/b/ is a symlink to ../b/ and contains tck3810i64.bz (TinyCore 5.0
x86-64 kernel), tc502rt32.gz (TinyCore 5.0.2 root-only 32bit),
tc502rt32m64.gz (TinyCore 5.0.2 modules for the x86-64 kernel) and
tckscsi64.cgz (A CPIO.GZ containing the SCSI modules for the x86-64
kernel and a file to mark it as loaded on boot).

The LABEL stanza I use is:

    LINUX b/tck3810i64.bz
    APPEND via-tftp
initrd=b/tc502rt32.gz,b/tc502rt32m64.gz,b/tckscsi64.cgz vga=771

I have a restart script as follows (which must run as root):

PID=$(ps ax|grep '^.\{22\}0:00 /usr/bin/vmnet-dhcpd.*vmnet8'|awk '{print$1}')
echo "KIlling pid $PID"
kill $PID
/usr/bin/vmnet-dhcpd -s 6 -cf /etc/vmware/vmnet8/dhcpd/dhcpd.conf -lf
/etc/vmware/vmnet8/dhcpd/dhcpd.leases -pf
/var/run/vmnet-dhcpd-vmnet8.pid vmnet8


More information about the Syslinux mailing list