[syslinux] Syslinux EFI + TFTPBOOT Support

Ady ady-sf at hotmail.com
Fri Mar 7 07:05:12 PST 2014


> 
> On 20140307 18:24, Ady wrote:
> > Hi Steven,
> >
> > Perhaps this could be of some basic sample/help, being based on 
> > Debian:
> > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=720589
> >
> > where:
> > _ if gpxelinux.0 is needed, it should probably be replaced by ipxe.
> > _ lpxelinux.0 (from official Syslinux archive) could optionally be 
> > added.
> >
> > _ from the Syslinux official archive, "efi32/efi/syslinux.efi" should 
> > be copied as:
> > tftp/
> >     +-- pxelinux
> >         +-- bootia32.efi
> >
> > _ from the Syslinux official archive, "efi64/efi/syslinux.efi" should 
> > be copied as:
> > tftp/
> >     +-- pxelinux
> >         +-- bootx64.efi
> >
> > The layout of the TFTP server being used is included in there too.
> >
> > Regards,
> > Ady.
> Hi Ady,
> Thanks.
> Yes, I followed
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=720589
> to test.
> However, somehow I had similar issue like this:
> http://www.syslinux.org/archives/2013-June/020242.html
> My screen only shows:
> ====================
> Getting cached packets
> My IP is 192.168.1.3
> ====================
> (See attached file "uefi-netboot.png")
> 
> I am sure I use the precompiled binaries from 6.03-pre7 from kernel.org:
> strings /tftpboot/nbi_img/bootx64.efi | grep -i "^syslinux 6.03"
> Syslinux 6.03 (EFI; 6.03-pre7)
> 
> I also compared its sha1sum (attached file "sha1sum.txt") and confirmed
> that.
> From the system log file (attached file "daemon-log.txt"), apparently
> the uEFI x86_64 did try to fetch bootx64.efi and ldlinux.e64.
> My dhcp, pxelinux, tftpd config files are attached, too. The files list
> in /tftpboot/nbi_img/ is attached in file "tree.txt".
> 
> My server is running Debian Wheezy, and I tested the client on Lenovo
> X230, and VMWare WS 10.0 (firmware = "efi")
> Both clients gave me the same issue.
> 
> If I switch to boot from PXE BIOS by changing the setting in the BIOS,
> it works.
> 
> Where am I wrong?
> Thanks in advance.
> 
> Steven.
> 
> -- 
 
Hi Steven,

Although I am probably not the ideal person to answer about this 
specific setup, I do have some generic suggestions.

1_ For testing purposes, try using only "default" paths and values. 
For instance, "pxelinux.cfg/default" (instead of adding "nbi_img"). 

2_ Avoid even the presence of any unneeded paths, values and/or 
files, leaving only the minimum. For example, take out the "nbi_img", 

and "memtest", "bios/" and the efi branch that is not the one you are 

actually testing.

3_ I noticed one "PATH efi64/" and no "PATH bios/" nor "PATH efi32/". 

The PATH directive accepts "absolute" notation only, so the whole 
path, in _absolute_ notation, should probably be included when using 
the whole complex case. Limiting the initial tests to the minimal 
situation (defaults paths, all files together, one firmware,...) 
should avoid the need of the PATH directive. Later additional 
complexity will probably require the correct usage of the PATH 
directive.

4_ Use only one simple pxelinux.cfg/default file as initial testing 
case. In the same pxelinux.cfg/ directory, put _all_ the relevant 
files, such as _all_ lib*.c32 files (taken from the same firmware 
(e.g. efi64/) directory in the Syslinux archive. You are missing some 

of the lib*.c32 modules. Be sure not to take the c32 modules from 
under other firmware directory (we have seen this type of 
unintentional mismatch before).

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...).

Regards,
Ady.



More information about the Syslinux mailing list