Bug#684717: debian-installer-7.0-netboot-amd64: Relative paths in syslinux configuration interact badly with TFTP prefix
Package: debian-installer-7.0-netboot-amd64
Version: 20120712
Severity: wishlist
I tried to make the d-i files available under the /debian-installer path
of my TFTP server with a bind mount:
$ findmnt /srv/tftp/debian-installer/
TARGET SOURCE FSTYPE OPTIONS
/srv/tftp/debian-installer /dev/mapper/thoth-root[/usr/lib/debian-installer/images] ext4 rw,relatime,errors=remount-ro,user_xattr,acl,barrier=1,data=ordered
However the use of relative paths in the syslinux config files make this
difficult. My PXE-booted client displays the following:
BOOT SERVER IP: 10.0.0.1
!PXE entry point found (we hope) at 9E1C:0104 via plan A
UNDI code segment at 9E1C len 199E
UNDI data segment at 9C99 len 1830
Getting cached packet 01 02 03
My IP address seems to be 0A00010B 10.0.1.11
ip:10.0.1.11:109.0.0.1:10.0.0.1:255.255.0.0
BOOTIF=01-08-00-27-96-86-ec
SYSUUID=blah
TFTP prefix: debian-installer/amd64/text/
Trying to load: pxelinux.cfg/default
Could not find kernel image: debian-installer/amd64/boot-screens/vesamenu.c32
boot:
Looking at what's going over the network:
# tshark -i eth0 -R tftp
Capturing on eth0
6.254628 10.0.1.11 -> 10.0.0.1 TFTP 97 Read Request, File: debian-installer/amd64/text/pxelinux.0, Transfer type: octet, tsize\000=0\000
6.259698 10.0.0.1 -> 10.0.1.11 TFTP 1502 Data Packet, Block: 2
...
... data packets and requests for mac-address-specific pxelinux.cfg elided ...
...
6.492348 10.0.1.11 -> 10.0.0.1 TFTP 120 Read Request, File: debian-installer/amd64/text/pxelinux.cfg/default, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000
6.492898 10.0.0.1 -> 10.0.1.11 TFTP 67 Option Acknowledgement, tsize\000=154\000, blksize\000=1408\000
6.496270 10.0.1.11 -> 10.0.0.1 TFTP 60 Acknowledgement, Block: 0
6.496343 10.0.0.1 -> 10.0.1.11 TFTP 200 Data Packet, Block: 1 (last)
6.497011 10.0.1.11 -> 10.0.0.1 TFTP 60 Acknowledgement, Block: 1
6.497655 10.0.1.11 -> 10.0.0.1 TFTP 144 Read Request, File: debian-installer/amd64/text/debian-installer/amd64/boot-screens/menu.cfg, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000
6.498214 10.0.0.1 -> 10.0.1.11 TFTP 61 Error Code, Code: File not found, Message: File not found
6.499417 10.0.1.11 -> 10.0.0.1 TFTP 148 Read Request, File: debian-installer/amd64/text/debian-installer/amd64/boot-screens/vesamenu.c32, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000
6.499975 10.0.0.1 -> 10.0.1.11 TFTP 61 Error Code, Code: File not found, Message: File not found
6.501299 10.0.1.11 -> 10.0.0.1 TFTP 152 Read Request, File: debian-installer/amd64/text/debian-installer/amd64/boot-screens/vesamenu.c32.cbt, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000
6.501857 10.0.0.1 -> 10.0.1.11 TFTP 61 Error Code, Code: File not found, Message: File not found
6.503305 10.0.1.11 -> 10.0.0.1 TFTP 150 Read Request, File: debian-installer/amd64/text/debian-installer/amd64/boot-screens/vesamenu.c32.0, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000
6.503862 10.0.0.1 -> 10.0.1.11 TFTP 61 Error Code, Code: File not found, Message: File not found
6.505431 10.0.1.11 -> 10.0.0.1 TFTP 152 Read Request, File: debian-installer/amd64/text/debian-installer/amd64/boot-screens/vesamenu.c32.com, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000
6.505995 10.0.0.1 -> 10.0.1.11 TFTP 61 Error Code, Code: File not found, Message: File not found
6.507237 10.0.1.11 -> 10.0.0.1 TFTP 152 Read Request, File: debian-installer/amd64/text/debian-installer/amd64/boot-screens/vesamenu.c32.c32, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000
6.507794 10.0.0.1 -> 10.0.1.11 TFTP 61 Error Code, Code: File not found, Message: File not found
menu.cfg can't be loaded, because the TFTP prefix
'debian-installer/amd64/text' is prepended to the path in the config
file of 'debian-installer/amd64/boot-screens/menu.cfg'. If the config
file used paths relative to the pxelinux.0 file then I think booting
would work correctly.
Additionally the assumed prefix path written into the config files
doesn't let the 'text' and 'gtk' versions of the installers co-exist in
the same TFTP root, because the paths are missing the text/gtk element.
Once the various debian-installer-$VERSION-netboot-$ARCH packages are
co-installable, this will prevent different versions from being
accessible from the same TFTP server as well.
My workaround configuration involves bind-mounting
/usr/lib/debian-installer/images/amd64/text to
/srv/tftp/debian-installer/amd64, and then creating symlinks in
/srv/tftp pointing to 'debian-installer/amd64/pxelinux.{0,cfg/default}'.
An alternative workaround would be to configure the DHCP server to
specify the TFTP prefix path; however you're still limited to a single
version/architecture of debian-installer being configured per TFTP
server, and if you wanted to use another copy of pxelinux to boot
something else then the debian-installer configuration would still get
in the way.
-- System Information:
Debian Release: 6.0.5
APT prefers stable
APT policy: (550, 'stable'), (540, 'stable-updates'), (520, 'testing'), (510, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-0.bpo.2-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
debian-installer-7.0-netboot-amd64 depends on no packages.
debian-installer-7.0-netboot-amd64 recommends no packages.
Versions of packages debian-installer-7.0-netboot-amd64 suggests:
ii tftpd-hpa 5.2-4 HPA's tftp server
-- no debconf information
Reply to: