[syslinux] [5.10] PXE + dhcp opts 209, 210 and path issues in tftp/http

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Wed Jun 5 17:29:58 PDT 2013


Hello,

First, this setup works fine without any error in syslinux 4.06 as show
below.

For convenience, both versions of syslinux 4.06 [#1] and 5.10 [#2]
directories (~2MB each) are uploaded ready for test.

As said before, this is tested on qemu-1.5.0 + dnsmasq 2.66 in Arch
Linux @ 64-bit.

If more info is needed, please let me know.


Good luck!


Relevant directory structure is at
/run/archiso/bootmnt/arch/boot/syslinux/*.{c32,0,cfg} Where each *.cfg
relevant for PXE booting are:

------------------------------------------------------------------------
------------------------------------------------------------------------
# cat /run/archiso/bootmnt/arch/boot/syslinux/archiso.cfg
DEFAULT select

LABEL select
COM32 boot/syslinux/whichsys.c32
APPEND -pxe- pxe -sys- sys -iso- sys

LABEL pxe
CONFIG boot/syslinux/archiso_pxe_choose.cfg

LABEL sys
CONFIG boot/syslinux/archiso_sys_choose.cfg
------------------------------------------------------------------------
------------------------------------------------------------------------
#cat /run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe_choose.cfg
DEFAULT choose

LABEL choose
COM32 boot/syslinux/ifcpu64.c32
APPEND have64 -- nohave64

LABEL have64
CONFIG boot/syslinux/archiso_pxe_both_inc.cfg

LABEL nohave64
CONFIG boot/syslinux/archiso_pxe_32_inc.cfg
------------------------------------------------------------------------
------------------------------------------------------------------------
# cat /run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe_both_inc.cfg
INCLUDE boot/syslinux/archiso_head.cfg
INCLUDE boot/syslinux/archiso_pxe64.cfg
INCLUDE boot/syslinux/archiso_pxe32.cfg
INCLUDE boot/syslinux/archiso_tail.cfg
------------------------------------------------------------------------
------------------------------------------------------------------------
# cat /run/archiso/bootmnt/arch/boot/syslinux/archiso_head.cfg
SERIAL 0 38400
UI boot/syslinux/vesamenu.c32
MENU TITLE Arch Linux
MENU BACKGROUND boot/syslinux/splash.png
...
...
------------------------------------------------------------------------
------------------------------------------------------------------------
# cat /run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe64.cfg
TEXT HELP
Boot the Arch Linux (x86_64) live medium (Using NBD).
It allows you to install Arch Linux or perform system maintenance.
ENDTEXT
MENU LABEL Boot Arch Linux (x86_64) (NBD)
LINUX boot/x86_64/vmlinuz
INITRD boot/x86_64/archiso.img
APPEND archisobasedir=arch archisolabel=ARCH_201306
archiso_nbd_srv=${pxeserver}
IPAPPEND 3
...
...
------------------------------------------------------------------------
------------------------------------------------------------------------


OK here I go...

This is how dnsmasq running in dhcp + tftp mode output looks, working
fine when using syslinux-4.06. Note how each retrieved entry is
"perfect", no double //, no paths error, and things looks good.


dnsmasq --port=0 \
          --no-daemon \
          --enable-tftp \
          --tftp-root=/run/archiso/bootmnt \
          --dhcp-range=192.168.0.2,192.168.0.254,86400 \
          --dhcp-boot=/arch/boot/syslinux/pxelinux.0 \
          --dhcp-option-force=209,boot/syslinux/archiso.cfg \
          --dhcp-option-force=210,/arch/


------------------------------------------------------------------------
------------------------------------------------------------------------
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/pxelinux.0 to
192.168.0.90
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/archiso.cfg
to 192.168.0.90
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/whichsys.c32
to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe_choose.cfg to
192.168.0.90
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/ifcpu64.c32
to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe_both_inc.cfg to
192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_head.cfg to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe64.cfg to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe32.cfg to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_tail.cfg to 192.168.0.90
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/vesamenu.c32
to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe_both_inc.cfg to
192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_head.cfg to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe64.cfg to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_pxe32.cfg to 192.168.0.90
dnsmasq-tftp: sent
/run/archiso/bootmnt/arch/boot/syslinux/archiso_tail.cfg to 192.168.0.90
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/splash.png to
192.168.0.90
------------------------------------------------------------------------
------------------------------------------------------------------------

This is when using http (darkhttpd) instead of tftp for retriving files
(syslinux-4.06). Note how each retrieved entry is "perfect", no double
//, no paths error, and things looks good.


dnsmasq --port=0 \
          --dhcp-range=192.168.0.2,192.168.0.254,86400 \
          --dhcp-boot=http://192.168.0.218/arch/boot/syslinux/pxelinux.0 \
          --dhcp-option-force=209,boot/syslinux/archiso.cfg \
          --dhcp-option-force=210,http://192.168.0.218/arch/

darkhttpd /run/archiso/bootmnt

------------------------------------------------------------------------
------------------------------------------------------------------------
1370470692 192.168.0.90 "GET /arch/boot/syslinux/pxelinux.0" 200 26813
"" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso.cfg" 200 441 ""
"iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/whichsys.c32" 200 3193
"" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_pxe_choose.cfg"
200 439 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/ifcpu64.c32" 200 1545
"" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET
/arch/boot/syslinux/archiso_pxe_both_inc.cfg" 200 390 "" "iPXE/1.0.0+
(09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_head.cfg" 200
1041 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_pxe64.cfg" 200
1259 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_pxe32.cfg" 200
1235 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_tail.cfg" 200
849 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/vesamenu.c32" 200
153723 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET
/arch/boot/syslinux/archiso_pxe_both_inc.cfg" 200 390 "" "iPXE/1.0.0+
(09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_head.cfg" 200
1041 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_pxe64.cfg" 200
1259 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_pxe32.cfg" 200
1235 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/archiso_tail.cfg" 200
849 "" "iPXE/1.0.0+ (09c5)"
1370470692 192.168.0.90 "GET /arch/boot/syslinux/splash.png" 200 45619
"" "iPXE/1.0.0+ (09c5)"
------------------------------------------------------------------------
------------------------------------------------------------------------


And now syslinux-5.10:

The same result is using pxelinux.0 or lpxelinux.0

See how paths are wrong, or not clean: no slash "/" between directory
and filename, double // (this do not care) or double directory
/arch//arch//, etc.
------------------------------------------------------------------------
------------------------------------------------------------------------
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/lpxelinux.0
to 192.168.0.90
dnsmasq-tftp: file /run/archiso/bootmnt/arch/ldlinux.c32 not found
dnsmasq-tftp: file /run/archiso/bootmnt/arch//ldlinux.c32 not found
dnsmasq-tftp: file /run/archiso/bootmnt/arch//boot/isolinux/ldlinux.c32
not found
dnsmasq-tftp: file /run/archiso/bootmnt/arch//isolinux/ldlinux.c32 not found
dnsmasq-tftp: file /run/archiso/bootmnt/arch//boot/syslinuxldlinux.c32
not found
dnsmasq-tftp: sent /run/archiso/bootmnt/arch//boot/syslinux/ldlinux.c32
to 192.168.0.90
dnsmasq-tftp: error 0 No error, file close received from 192.168.0.90
dnsmasq-tftp: failed sending
/run/archiso/bootmnt/arch//boot/syslinux/ldlinux.c32 to 192.168.0.90
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/archiso.cfg
to 192.168.0.90
dnsmasq-tftp: sent /run/archiso/bootmnt/arch/boot/syslinux/whichsys.c32
to 192.168.0.90
dnsmasq-tftp: file /run/archiso/bootmnt/arch/libcom32.c32 not found
dnsmasq-tftp: file /run/archiso/bootmnt/arch//libcom32.c32 not found
dnsmasq-tftp: file /run/archiso/bootmnt/arch/libcom32.c32 not found
dnsmasq-tftp: file
/run/archiso/bootmnt/arch//arch//boot/syslinux/libcom32.c32 not found
------------------------------------------------------------------------
------------------------------------------------------------------------

In HTTP, no other files are retrieved, syslinux-5.10 just shows a boot
error when using http instead of tftp. (5.02-pre1 at least retrive more
files, but with errors like in tftp mode [#3]).

------------------------------------------------------------------------
------------------------------------------------------------------------
1370470298 192.168.0.90 "GET /arch/boot/syslinux/lpxelinux.0" 200 81474
"" "iPXE/1.0.0+ (09c5)"
------------------------------------------------------------------------
------------------------------------------------------------------------


[#1]
https://dl.dropboxusercontent.com/u/88891866/archiso_syslinux_406.tar.xz
https://dl.dropboxusercontent.com/u/88891866/archiso_syslinux_406.tar.xz.sig

[#2]
https://dl.dropboxusercontent.com/u/88891866/archiso_syslinux_510.tar.xz
https://dl.dropboxusercontent.com/u/88891866/archiso_syslinux_510.tar.xz.sig

[#3] http://www.syslinux.org/archives/2013-February/019480.html



-- 
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 555 bytes
Desc: OpenPGP digital signature
URL: <http://www.zytor.com/pipermail/syslinux/attachments/20130605/84b4d096/attachment.sig>


More information about the Syslinux mailing list