[syslinux] Chainload pxelinux from pxelinux and pass parameters or change root dir?

Alexander Perlis aperlis at math.lsu.edu
Tue Jun 17 09:36:19 PDT 2014


On 06/16/2014 05:14 PM, Gene Cumm wrote:
> This sounds like you're using gpxelinux.0 4.07 which as I stated will
> introduce issues.  Instead of using gpxelinux.0 4.07, try pxelinux.0
> 4.07 then do your chainload to lpxelinux.0 6.02.  If this doesn't
> solve it, try 6.03-pre14.

When I DHCP boot to lpxelinux.0 6.02, and then pxechn.c32 back to 
lpxelinux.0 6.02 with the http prefix, I get the graphical menu but then 
the host hangs.

Switching everything over to 6.03-pre17, at all stages, and 
pxechn.c32-loading over to lpxelinux.0, the host no longer hangs at the 
graphical menu. Yay!

Some observations:

(1) bug in gpxelinux 6.03-pre17 unrelated to pxechn: When I DHCP boot 
directly to gpxelinux.0 it snags on 'KERNEL 
http://my.ip/syslinux/pxechn.c32' with the error "Failed to load COM32 
file http://my.ip/syslinux/pxechn.c32", but my transfer logs show no 
transfer attempt! If I change that line to just 'KERNEL 
syslinux/pxechn.c32' then it works.

(2) another bug in gpxelinux 6.03-pre17 possibly related to pxechn: When 
I DHCP boot to lpxelinux.0 and then pxechn to gpxelinux.0, with '-p 
http://my.ip/' and '-c nextstage.cfg', gpxelinux.0 seems to ignore the 
'-c' option and just tries to load pxelinux.cfg (I see this in my 
transfer logs). Furthermore, it does this with TFTP and not HTTP, so 
seems to also ignore the '-p' option. (And then, because it loaded my 
pxelinux.cfg, it finally hits the other bug reported in the prior 
paragraph.)

(3) pxechn documentation on prefix option: I tried DHCP booting to 
lpxelinux.0 and then pxechn to pxelinux.0, and of course left off the 
'-p http://my.ip/', but pxelinux.0 failed because it seems to have 
picked up an implied '-p syslinux/'. My logs show it tries to load 
'syslinux/nextstage.cfg' and 'syslinux/syslinux/vesamenu.c32' and so on. 
I have to explicitly specify '-p /' to avoid that defaulted prefix. 
Perhaps the http://www.syslinux.org/wiki/index.php/Pxechn.c32 
documentation could mention default values when parameters aren't given, 
how they are computed, with some examples?

(4) lpxelinux-to-lpxelinux delays: When I DHCP boot to lpxelinux.0 and 
then pxechn back to lpxelinux.0, I observe delays. Refer to the logs 
below. The initial DHCP-induced TFTP transfer of lpxelinux.0 and 
associated libraries followed by HTTP transfer of pxechn.c32 (which 
pulls in libutil.c32 over TFTP) and then pxechn's HTTP loading of 
another copy of lpxelinux.0 all happens within the first second. But 
then there is a 3-second delay (!), after which the second copy of 
lpxelinux.0 seems to be the one who does an HTTP transfer of 
ldlinux.c32, but then there is another 4-second delay (!) before 
everything else is pulled down and our graphical menu appears, all 
within that final second. Note that the initial DHCP-induced run of 
lpxelinux.0 has no delays, nor does pxelinux.0-to-lpxelinux.0 
chainloading introduce delays. Only lpxelinux.0-to-lpxelinux.0 
chainloading seems to introduce those delays on the second invocation of 
lpxelinux.0. Furthermore, when I try this repeatedly, the delays are 
inconsistent. I've seen repeated 3-second delays between each pair of 
multiple successive HTTP requests, yet seen other boots with essentially 
no delay. Perhaps this is a problem with my HTTP server, or a network 
problem, yet I can only reproduce it when I do 
lpxelinux.0-to-lpxelinux.0. Any ideas?

09:35:45  tftpd: RRQ filename lpxelinux.0
09:35:45  tftpd: tftp: client does not accept options
09:35:45  tftpd: RRQ filename lpxelinux.0
09:35:45  tftpd: RRQ filename ldlinux.c32
09:35:45  tftpd: RRQ filename pxelinux.cfg/44454c...
09:35:45  tftpd: RRQ filename libcom32.c32
09:35:45 webfsd: "GET /syslinux/pxechn.c32 HTTP/1.0"
09:35:45  tftpd: RRQ filename libutil.c32
09:35:45 webfsd: "GET /syslinux/lpxelinux.0 HTTP/1.0"
09:35:48 webfsd: "GET /ldlinux.c32 HTTP/1.0"
09:35:52 webfsd: "GET /nextstage.cfg HTTP/1.0"
09:35:52 webfsd: "GET /syslinux/vesamenu.c32 HTTP/1.0"
09:35:52 webfsd: "GET /libcom32.c32 HTTP/1.0"
09:35:52 webfsd: "GET /libutil.c32 HTTP/1.0"
09:35:52 webfsd: "GET /graphics.cfg HTTP/1.0"
09:35:52 webfsd: "GET /main.cfg HTTP/1.0"
09:35:52 webfsd: "GET /delldiag/delldiag.cfg HTTP/1.0"
09:35:52 webfsd: "GET /windows/windows.cfg HTTP/1.0"
09:35:52 webfsd: "GET /bios/bios.cfg HTTP/1.0"
09:35:52 webfsd: "GET /dban/dban.cfg HTTP/1.0"
09:35:52 webfsd: "GET /linux/linux.cfg HTTP/1.0"
09:35:52 webfsd: "GET /linux/debian-live.cfg HTTP/1.0"
09:35:52 webfsd: "GET /linux/debian-iso-install.cfg HTTP/1.0"
09:35:52 webfsd: "GET /linux/ubuntu-desktop-live.cfg HTTP/1.0"
09:35:52 webfsd: "GET /linux/kubuntu-tde-live.cfg HTTP/1.0"
09:35:52 webfsd: "GET /linux/linuxmint.cfg HTTP/1.0"
09:35:52 webfsd: "GET /linux/fedora.cfg HTTP/1.0"
09:35:52 webfsd: "GET /lsumath/lsumath.cfg HTTP/1.0"
09:35:52 webfsd: "GET /lsumath_graphics.png HTTP/1.0"


More information about the Syslinux mailing list