[syslinux] tftp file size limit: pxelinux.0 vs. syslinux.efi

H. Peter Anvin hpa at zytor.com
Tue Nov 29 12:58:48 PST 2016

On 11/28/16 06:15, John Z. Bohach via Syslinux wrote:
> Hello,
> I am pxebooting a large linux kernel (with embedded initramfs) that is around
> 250 MB in size.
> When booting a board in legacy BIOS mode, the pxelinux.0 executable is
> transferred to the board and takes over, from where loading and booting this
> large kernel works as expected.  Actually, better than expected, as no tftp
> file size limit is incurred.
> If I change the BIOS settings to UEFI mode, then syslinux.efi is transferred
> and takes over executing my menu, etc. just like pxelinux.0 did.  But then if
> try to boot the same large linux kernel, board hangs during file transfer.
> I've run a network analyzer on the tftp transfer, and can see that the
> transfer stops after 65535 blocks have been transferred, which is the usual
> limit for tftp.  I understand that this is a tftp limit.
> However, this same limit is not encountered by pxelinux.0 and the entirety of
> the large file makes it through just fine, and then proceeds to boot just fine.
> Can someone please confirm if there is a known or intentional difference in
> pxelinux.0 vs. syslinux.efi as far as tftp file size limits?

No, it is not.  The TFTP limit is unofficially exceeded by allowing the
block numbers to wrap.  I'm not sure why UEFI would behave differently
in that respect.

However, the best would be if you could use HTTP instead of TFTP, which
should always be available when booted off UEFI.  You will likely get
much higher transfer rates in addition to avoiding these kinds of limits.


More information about the Syslinux mailing list