Michael Stapelberg
2019-Jun-06 06:45 UTC
[syslinux] PXELINUX gets stuck when receiving non-PXE traffic
Hey, I am running a custom-built router (based on a PCengines apu2c4 board, see https://github.com/rtr7/router7 for details) on which I am using PXE boot for recovery purposes, i.e. reverting to an older version of the software/configuration. In this scenario, my workstation acts as the DHCP, TFTP and HTTP server, and my router PXE boots into a recovery program. I have noticed a couple of times that PXE boot, while working fine in lab conditions, does not work well in practice on my network. The symptom is that lpxelinux.0 is loaded fine, the PXELINUX log line is printed (PXELINUX 6.04 lwIP 6.04-pre3 Copyright (C) 1994-2015 H. Peter Anvin et al), but then the boot is stuck indefinitely (I waited for multiple hours on one occasion). Looking closer into this, the issue seems to be that receiving any (?) non-PXE traffic makes the PXE boot stuck. In my setup, my router receives e.g. DNS queries (and ARP queries for said DNS queries). Once I get rid of the extra traffic by disconnecting my router from my switch and just connecting it 1:1 to my workstation, PXE boot works fine. I have recently been able to reproduce this issue in a lab setup (another apu2c4 connected 1:1 to my laptop) by using a small program to send DNS queries every 100ms, which seems sufficient to trigger the issue. Find more details at https://github.com/rtr7/router7/issues/29 Is this a known limitation, or does it sound like a bug in PXELINUX? Thanks in advance, Best regards, Michael
Ady Ady
2019-Jun-06 15:16 UTC
[syslinux] PXELINUX gets stuck when receiving non-PXE traffic
> the PXELINUX log line is > printed (PXELINUX 6.04 lwIP 6.04-pre3 Copyright (C) 1994-2015 H. Peter > Anvin et al),(snip) FWIW, the official binaries from 6.04-pre2 and 6.04-pre3 are not good for troubleshooting. Is the same behavior present when testing with other versions? I would suggest trying 6.04-pre1, and/or the binaries from Debian Sid / Unstable (which are more up-to-date than official upstream 6.04-pre1). Please note that you need to replace _all_ binaries (e.g. *.c32), not just lpxelinux.0, from the same exact build/version/package. Regards, Ady.
H. Peter Anvin
2019-Jun-08 05:10 UTC
[syslinux] PXELINUX gets stuck when receiving non-PXE traffic
On 6/6/19 8:16 AM, Ady Ady via Syslinux wrote:> >> the PXELINUX log line is >> printed (PXELINUX 6.04 lwIP 6.04-pre3 Copyright (C) 1994-2015 H. Peter >> Anvin et al), > > (snip) > > FWIW, the official binaries from 6.04-pre2 and 6.04-pre3 are not good > for troubleshooting. > > Is the same behavior present when testing with other versions? I would > suggest trying 6.04-pre1, and/or the binaries from Debian Sid / > Unstable (which are more up-to-date than official upstream 6.04-pre1). > Please note that you need to replace _all_ binaries (e.g. *.c32), not > just lpxelinux.0, from the same exact build/version/package. >Indeed; it would also be a good idea to test both pxelinux.0 and lpxelinux.0. They access the PXE stack in very different ways, so it is a good idea to check both. -hpa