Package: debian-installer Severity: important Hi,
As discussed on #-boot, here's a minimal patch to fix pxeboot with the current daily images. This patch possibly also means you can close #750586 and several of the other bugs referenced there, but my secret decoder ring broke trying to figure out what his real problem(s) were, so I've kept this separate to that. And this bug is unversioned, since it only effects the daily snapshots after the syslinux update, and the last tagged release was before that. On a slight tangent to this: I do wonder a little if we ought to rearrange the netboot.tar tree a bit in the light of this change, since we basically have 3 things there with varying degrees of interdependence between both themselves and alternative images that people might want to boot from the same tftpd. - pxelinux.0 (and its associated .c32 binaries) Since the commonly used way to boot multiple images is to share this between all of them and then use a custom top level menu to select the actual tree to boot from, but the .c32 binaries that we embed in $arch/boot-screens aren't compatible with different syslinux versions of pxelinux.0. So possibly we should pull all the .c32 files out of boot-screens (and possibly out of $arch too, since they are now all 32-bit ELF executables even for amd64), and put them in their own tree where they can easily be shared and be from the same syslinux version. - the menu .cfg files Which should always be compatible with newer versions of vesamenu.c32 and really only change when different options are added. They only depend on a particular kernel and initrd to the extent of: - the path they expect to find them at - the options they append for the installer in the initrd. In theory, some of these at least could be arch independent, since it's only the hardcoded paths to the kernel images that make them not so, and the options they append which may make them release dependent. So possibly these should be split between 'release' and 'arch' dirs (unless there's some way to make $arch a runtime variable in which case they may could all be just release dependent. - the kernel and initrd images Which are obviously arch dependent, but could be updated independently of the menu files for point releases etc. Anyhow, the above is really a separate 'bug', if it's a bug at all, but I figured I'd mention it here since it is relevant in the context of the incompatible change to syslinux which this bug is about. I'll leave it to you guys to decide whether it should be cloned as such, taken to the list for Further Discussion, or /dev/null'd as SEP :) Cheers, Ron
>From f3da11a7063ebc4719e5c2b829ac04dc10fb147f Mon Sep 17 00:00:00 2001 From: Ron <r...@debian.org> Date: Mon, 28 Jul 2014 19:29:45 +0930 Subject: [PATCH] Fix lib location and search path for syslinux >= 5 The changes in b03b133efece84a1f81e41385200ef26e8287cfd were not sufficient for pxelinux in the netboot tarball to actually boot. The ldlinux.c32 loader must be located in the tftp root, and the other new support libraries (libcom32 and libutil) must either be located there too or have a PATH set to where they can be found. --- build/boot/x86/syslinux.cfg | 2 ++ build/config/x86.cfg | 3 +++ 2 files changed, 5 insertions(+) diff --git a/build/boot/x86/syslinux.cfg b/build/boot/x86/syslinux.cfg index 21dc753..7b2a1ce 100644 --- a/build/boot/x86/syslinux.cfg +++ b/build/boot/x86/syslinux.cfg @@ -1,4 +1,6 @@ # D-I config version 2.0 +# search path for the c32 support libraries (libcom32, libutil etc.) +path ${SYSDIR} include ${SYSDIR}menu.cfg default ${SYSDIR}vesamenu.c32 prompt 0 diff --git a/build/config/x86.cfg b/build/config/x86.cfg index 456314f..07f99b8 100644 --- a/build/config/x86.cfg +++ b/build/config/x86.cfg @@ -391,6 +391,9 @@ arch_netboot_dir: x86_syslinux # dhcp server setups to work without modification. rm -f $(TEMP_NETBOOT_DIR)/pxelinux.0 ln -sf $(NETBOOT_PATH)/pxelinux.0 $(TEMP_NETBOOT_DIR)/pxelinux.0 + # This link is required because pxelinux only looks in the tftp root + # for this library (it does a PATH search for any others). + ln -sf $(NETBOOT_PATH)/$(BOOT_SCREEN_DIR)/ldlinux.c32 $(TEMP_NETBOOT_DIR)/ldlinux.c32 set -e; \ $(foreach file,$(wildcard $(TEMP_BOOT_SCREENS)/*.txt), \ -- 2.0.0