[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#750586: syslinux-common: Boot fails. Failed to load ldlinux.c32. File must be in /. Upstream bug



Control: tags -1 + patch

Hi,

I've investigated this bug a bit because of a posting to debian-user@;
the original fix that went into Jessie fixes the netboot.tar.gz images.
The problem is that the installer data in the mirror doesn't contain
ldlinux.c32.

(For a more detailed analysis of the problem that I posted to
debian-user, see [1].)

Additionally, the default pxelinux.0 image from jessie onwards doesn't
support HTTP via gPXE/iPXE anymore, it only supports TFTP. So directly
using a HTTP mirror for PXE booting with gPXE/iPXE is possible up to
Wheezy, but not possible starting with Jessie anymore. I've reported
this against pxelinux as:
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814459>

But there is an alternative image, lpxelinux.0, which implements HTTP
directly (and doesn't call out to gPXE/iPXE) that may be used instead
of pxelinux.0; it's already included in the pxelinux package from
Jessie onwards.

I've attached a patch against d-i git master that adds the ldlinux.c32
and lpxelinux.0 files to the mirror itself (and not just to the
netboot.tar.gz as before).

I verified that a Jessie installer created in a clean pbuilder
environment with that patch applied works as expected and has
ldlinux.c32 as well as lpxelinux.0 in both netboot.tar.gz files as
well as the mirror file system proper.

It would be great if this patch could be applied not only to Stretch
but also be part of the next point release in Jessie, so that booting
the Jessie installer directly from HTTP works again.

Thanks!

Regards,
Christian

[1] https://lists.debian.org/debian-user/2016/02/msg00295.html
From dd2670702f183b77037060f32255b7449a5d2ed6 Mon Sep 17 00:00:00 2001
From: Christian Seiler <christian@iwakd.de>
Date: Thu, 11 Feb 2016 20:31:46 +0100
Subject: [PATCH] Add ldlinux.c32 and lpxelinux.0 to netboot files on mirrors

Closes: #750586
---
 build/config/amd64/netboot-gtk.cfg | 2 +-
 build/config/amd64/netboot.cfg     | 2 +-
 build/config/i386/netboot-gtk.cfg  | 2 +-
 build/config/i386/netboot.cfg      | 2 +-
 build/config/x86.cfg               | 2 ++
 5 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/build/config/amd64/netboot-gtk.cfg b/build/config/amd64/netboot-gtk.cfg
index 4a88b6a..900c158 100644
--- a/build/config/amd64/netboot-gtk.cfg
+++ b/build/config/amd64/netboot-gtk.cfg
@@ -1,7 +1,7 @@
 MEDIA_TYPE = netboot image
 
 NETBOOT_DIR_TARGETS = $(TEMP_INITRD) $(TEMP_KERNEL)
-NETBOOT_DIR_LINKS = pxelinux.0 pxelinux.cfg
+NETBOOT_DIR_LINKS = pxelinux.0 lpxelinux.0 ldlinux.c32 pxelinux.cfg
 
 TYPE = netboot/gtk
 
diff --git a/build/config/amd64/netboot.cfg b/build/config/amd64/netboot.cfg
index 706b7bb..c83225f 100644
--- a/build/config/amd64/netboot.cfg
+++ b/build/config/amd64/netboot.cfg
@@ -1,7 +1,7 @@
 MEDIA_TYPE = netboot image
 
 NETBOOT_DIR_TARGETS = $(TEMP_INITRD) $(TEMP_KERNEL)
-NETBOOT_DIR_LINKS = pxelinux.0 pxelinux.cfg
+NETBOOT_DIR_LINKS = pxelinux.0 lpxelinux.0 ldlinux.c32 pxelinux.cfg
 TARGET = $(NETBOOT_DIR) $(NETBOOT_TAR) $(MINIISO)
 EXTRANAME = $(MEDIUM)/
 
diff --git a/build/config/i386/netboot-gtk.cfg b/build/config/i386/netboot-gtk.cfg
index 144f2fe..570a871 100644
--- a/build/config/i386/netboot-gtk.cfg
+++ b/build/config/i386/netboot-gtk.cfg
@@ -1,7 +1,7 @@
 MEDIA_TYPE = netboot image
 
 NETBOOT_DIR_TARGETS = $(TEMP_INITRD) $(TEMP_KERNEL)
-NETBOOT_DIR_LINKS = pxelinux.0 pxelinux.cfg
+NETBOOT_DIR_LINKS = pxelinux.0 lpxelinux.0 ldlinux.c32 pxelinux.cfg
 
 TYPE = netboot/gtk
 
diff --git a/build/config/i386/netboot.cfg b/build/config/i386/netboot.cfg
index 706b7bb..c83225f 100644
--- a/build/config/i386/netboot.cfg
+++ b/build/config/i386/netboot.cfg
@@ -1,7 +1,7 @@
 MEDIA_TYPE = netboot image
 
 NETBOOT_DIR_TARGETS = $(TEMP_INITRD) $(TEMP_KERNEL)
-NETBOOT_DIR_LINKS = pxelinux.0 pxelinux.cfg
+NETBOOT_DIR_LINKS = pxelinux.0 lpxelinux.0 ldlinux.c32 pxelinux.cfg
 TARGET = $(NETBOOT_DIR) $(NETBOOT_TAR) $(MINIISO)
 EXTRANAME = $(MEDIUM)/
 
diff --git a/build/config/x86.cfg b/build/config/x86.cfg
index 998aed3..28ee614 100644
--- a/build/config/x86.cfg
+++ b/build/config/x86.cfg
@@ -354,6 +354,7 @@ arch_netboot_dir: x86_syslinux x86_grub_efi
 	cp $(TEMP_INITRD) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)
 	cp $(TEMP_KERNEL) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/linux
 	cp /usr/lib/PXELINUX/pxelinux.0 $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)
+	cp /usr/lib/PXELINUX/lpxelinux.0 $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)
 	mkdir -p $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/pxelinux.cfg
 	mkdir -p $(TEMP_NETBOOT_DIR)/$(BOOT_SCREEN_DIR)
 	cp /usr/lib/syslinux/modules/bios/vesamenu.c32 $(TEMP_NETBOOT_DIR)/$(BOOT_SCREEN_DIR)
@@ -395,6 +396,7 @@ arch_netboot_dir: x86_syslinux x86_grub_efi
 	# 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
+	ln -sf $(NETBOOT_PATH)/lpxelinux.0 $(TEMP_NETBOOT_DIR)/lpxelinux.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 $(BOOT_SCREEN_DIR)ldlinux.c32 $(TEMP_NETBOOT_DIR)/ldlinux.c32
-- 
2.1.4

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: