[syslinux] Syslinux EFI + TFTPBOOT Support

Steven Shiau steven at nchc.org.tw
Fri Mar 7 23:05:11 PST 2014


On 2014年03月08日 05:56, Gene Cumm wrote:
> 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";
>         next-server 172.21.1.1;
> #       option vendor-encapsulated-options
> d2:1B:68:74:74:70:3A:2F:2F:31:37:32:2E:32:31:2E:31:2E:31:2F:74:66:74:70:2F:65:36:2F:00:FF;
> }
>
> 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:
>
> LABEL tc
>     MENU LABEL TC
>     LINUX b/tck3810i64.bz
>     APPEND via-tftp
> initrd=b/tc502rt32.gz,b/tc502rt32m64.gz,b/tckscsi64.cgz vga=771
>     SYSAPPEND 2
>
> I have a restart script as follows (which must run as root):
>
> #!/bin/bash
> 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
>
> -- -Gene
Hi Gene,
Thanks. As you mentioned, atftpd has better logging, and my files are
smaller than 92 MB, so I switched to atftpd for testing. Now I could
find that somehow after bootx64.efi is downloaded by client, the next
ldlinux.e64 has never been fetched by client:
====================
Mar  8 14:47:45 dhcpd: Client 0:c:29:6e:ac:93 requests
1:2:3:4:5:6:c:d:f:11:12:16:17:1c:28:29:2a:2b:32:33:36:3a:3b:3c:42:43:61:80:81:82:83:84:85:86:87
- PXEClient:Arch:00007:UNDI:003000 - no dhcp-client-id
Mar  8 14:47:45 dhcpd: DHCPDISCOVER from 00:0c:29:6e:ac:93 via eth1
Mar  8 14:47:46 dhcpd: DHCPOFFER on 192.168.1.1 to 00:0c:29:6e:ac:93 via
eth1
Mar  8 14:47:48 dhcpd: Client 0:c:29:6e:ac:93 requests
1:2:3:4:5:6:c:d:f:11:12:16:17:1c:28:29:2a:2b:32:33:36:3a:3b:3c:42:43:61:80:81:82:83:84:85:86:87
- PXEClient:Arch:00007:UNDI:003000 - no dhcp-client-id
Mar  8 14:47:49 dhcpd: DHCPREQUEST for 192.168.1.1 (192.168.1.182) from
00:0c:29:6e:ac:93 via eth1
Mar  8 14:47:49 dhcpd: DHCPACK on 192.168.1.1 to 00:0c:29:6e:ac:93 via eth1
Mar  8 14:47:49 dhcpd: Client 0:c:29:6e:ac:93 requests
1:2:3:4:5:6:c:d:f:11:12:16:17:1c:28:29:2a:2b:32:33:36:3a:3b:3c:42:43:61:80:81:82:83:84:85:86:87
- PXEClient:Arch:00007:UNDI:003000 - no dhcp-client-id
Mar  8 14:47:49 atftpd[11886]: Serving bootx64.efi to 192.168.1.1:1066
Mar  8 14:47:49 atftpd[11886]: Serving bootx64.efi to 192.168.1.1:1067
Mar  8 14:47:49 dhcpd: DHCPREQUEST for 192.168.1.1 (192.168.1.182) from
00:0c:29:6e:ac:93 via eth1
Mar  8 14:47:49 dhcpd: DHCPACK on 192.168.1.1 to 00:0c:29:6e:ac:93 via eth1
Mar  8 14:48:04 atftpd[11886]: Serving ldlinux.e64 to 192.168.1.1:1068
Mar  8 14:48:09 atftpd[11886]: timeout: retrying...
Mar  8 14:48:14 atftpd[11886]: timeout: retrying...
Mar  8 14:48:19 atftpd[11886]: timeout: retrying...
Mar  8 14:48:24 atftpd[11886]: timeout: retrying...
Mar  8 14:48:29 atftpd[11886]: timeout: retrying...
====================
My /etc/default/atftpd is:
====================
USE_INETD=false
OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758
--mcast-addr 239.255.0.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5
--port 69 /tftpboot/nbi_img/"
====================
Files are in the correct path:
ls -alFh /tftpboot/nbi_img/{*.efi,*e64}
-rw-r--r-- 1 root root 179K Mar  7 21:41 /tftpboot/nbi_img/bootx64.efi
-rw-r--r-- 1 root root 137K Mar  7 21:41 /tftpboot/nbi_img/ldlinux.e64

and they were extracted from prebuilt binary 6.03-pre7 tarball on
kernel.org:
sha1sum /tftpboot/nbi_img/{*.efi,*e64}
d0ca7d52228231b08c36967262cb796be9e71499  /tftpboot/nbi_img/bootx64.efi
55f17d57e1790071af0cb84e0ac6109a210f06ca  /tftpboot/nbi_img/ldlinux.e64

Another thing you I'd like to mentioned is, after bootx64.efi was
downloaded, the next download for ldlinux.e64 was about 15 secs later.
Is that normal?
Thank you very much.

Steven.

-- 
Steven Shiau <steven _at_ nchc org tw> <steven _at_ stevenshiau org>
National Center for High-performance Computing, Taiwan. http://www.nchc.org.tw
Public Key Server PGP Key ID: 4096R/47CF935C
Fingerprint: 0240 1FEB 695D 7112 62F0  8796 11C1 12DA 47CF 935C



More information about the Syslinux mailing list