Hi all, wasnt sure whether this was the best place to put this information; but something seems to have gone 'backwards' in the later pre-releases of 6.03 regarding network booting. below are results of me testing - i did each a few times to make sure they are valid results. hope it helps identify something that's gone awry ? so far, 6.03 pre11 and pre13 (excluding efi32) seem most stable for PXE/EFI Network booting.... Cheers Andrew ---------------- all on VMWare Workstation 9 (Windows) - booting from DHCPD & TFTPD-hpa on Centos 6 x64 all booting RHEL7 kernel/initrd over TFTP or HTTP, and then loading the install.img from HTTP.... ---------------- 6.03-pre11 BIOS: pxelinux.0: boota OK TFTP 6.03-pre12 BIOS: pxelinux.0: boots OK TFTP 6.03-pre13 BIOS: pxelinux.0: boots OK TFTP 6.03-pre14 BIOS: pxelinux.0: boots OK TFTP 6.03-pre15 BIOS: pxelinux.0: boots OK TFTP 6.03-pre16 BIOS: pxelinux.0: boots OK TFTP 6.03-pre17 BIOS: pxelinux.0: boots OK TFTP ---------------- 6.03-pre11 BIOS: lpxelinux.0: boots OK TFTP & HTTP 6.03-pre12 BIOS: lpxelinux.0: very slow compared to pre11. boots TFTP & HTTP 6.03-pre13 BIOS: lpxelinux.0: boots OK TFTP & HTTP 6.03-pre14 BIOS: lpxelinux.0: very slow compared to pre13. some odd 'tftpd: read: connection refused' and 'tftpd: read(ack): connection refused'. never boots - normally sits downloading vmlinuz & does nothing further 6.03-pre15 BIOS: lpxelinux.0: as per pre14 6.03-pre16 BIOS: lpxelinux.0: as per pre14 6.03-pre17 BIOS: lpxelinux.0: boots OK TFTP & HTTP ---------------- 6.03-pre11 EFI32: boots OK TFTP & HTTP 6.03-pre12 EFI32: fails - gets stuck in a loop downloading files - differs each boot 6.03-pre13 EFI32: fails - downloads /pxelinux.c32 & /ldlinux.c32 - then continually retries to download ldlinux.e32 6.03-pre14 EFI32: fails - downloads /pxelinux.c32 & /ldlinux.e32 - also then tries to download /syslinux/ldlinux.e32, /boot/isolinux/ldlinux.e32, and /syslinux/ldlinux.e32 - then boot fails 6.03-pre15 EFI32: fails as per pre14 6.03-pre16 EFI32: fails as per pre14 6.03-pre17 EFI32: fails as per pre14 ----------------- 6.03-pre11 EFI64: fails - gets stuck in a loop downloading files - differs each boot 6.03-pre12 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - then continually retries to download ldlinux.e64 6.03-pre13 EFI64: boots OK TFTP & HTTP 6.03-pre14 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - then continually retries to download ldlinux.e64 6.03-pre15 EFI64: fails as per pre14 6.03-pre16 EFI64: fails as per pre14 6.03-pre17 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64, also then tries to download /syslinux/ldlinux.e64, /boot/isolinux/ldlinux.e64, and /syslinux/ldlinux.e64 - then boot fails -------------------
On Thu, Jun 19, 2014 at 2:51 PM, Andrew Rae <A.M.Rae at leeds.ac.uk> wrote:> Hi all, > > wasnt sure whether this was the best place to put this information; but something seems to have gone 'backwards' in the later pre-releases of 6.03 regarding network booting.I'd say this is an excellent place to start. I'm getting some similar results here with the precompiled binaries and my binaries of 6.03-pre17> below are results of me testing - i did each a few times to make sure they are valid results. > > hope it helps identify something that's gone awry ? > so far, 6.03 pre11 and pre13 (excluding efi32) seem most stable for PXE/EFI Network booting.... > > Cheers > Andrew > ---------------- > all on VMWare Workstation 9 (Windows) - booting from DHCPD & TFTPD-hpa on Centos 6 x64I'm running Workstation 10.0.2 but on Linux. I assume you're just passing EFI32 vs EFI64 binaries (I'm doing this with different directories)> all booting RHEL7 kernel/initrd over TFTP or HTTP, and then loading the install.img from HTTP.... > ---------------- > 6.03-pre11 BIOS: pxelinux.0: boota OK TFTP > 6.03-pre12 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre13 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre14 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre15 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre16 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre17 BIOS: pxelinux.0: boots OK TFTP > ---------------- > 6.03-pre11 BIOS: lpxelinux.0: boots OK TFTP & HTTP > 6.03-pre12 BIOS: lpxelinux.0: very slow compared to pre11. boots TFTP & HTTP > 6.03-pre13 BIOS: lpxelinux.0: boots OK TFTP & HTTP > 6.03-pre14 BIOS: lpxelinux.0: very slow compared to pre13. some odd 'tftpd: read: connection refused' and 'tftpd: read(ack): connection refused'. never boots - normally sits downloading vmlinuz & does nothing further > 6.03-pre15 BIOS: lpxelinux.0: as per pre14 > 6.03-pre16 BIOS: lpxelinux.0: as per pre14 > 6.03-pre17 BIOS: lpxelinux.0: boots OK TFTP & HTTP > ---------------- > 6.03-pre11 EFI32: boots OK TFTP & HTTP > 6.03-pre12 EFI32: fails - gets stuck in a loop downloading files - differs each boot > 6.03-pre13 EFI32: fails - downloads /pxelinux.c32 & /ldlinux.c32 - then continually retries to download ldlinux.e32 > 6.03-pre14 EFI32: fails - downloads /pxelinux.c32 & /ldlinux.e32 - also then tries to download /syslinux/ldlinux.e32, /boot/isolinux/ldlinux.e32, and /syslinux/ldlinux.e32 - then boot fails > 6.03-pre15 EFI32: fails as per pre14 > 6.03-pre16 EFI32: fails as per pre14 > 6.03-pre17 EFI32: fails as per pre14 > ----------------- > 6.03-pre11 EFI64: fails - gets stuck in a loop downloading files - differs each boot > 6.03-pre12 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - then continually retries to download ldlinux.e64 > 6.03-pre13 EFI64: boots OK TFTP & HTTP > 6.03-pre14 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - then continually retries to download ldlinux.e64 > 6.03-pre15 EFI64: fails as per pre14 > 6.03-pre16 EFI64: fails as per pre14 > 6.03-pre17 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64, also then tries to download /syslinux/ldlinux.e64, /boot/isolinux/ldlinux.e64, and /syslinux/ldlinux.e64 - then boot fails > --------------------- -Gene
> Hi all, > > wasnt sure whether this was the best place to put this information; but something seems to have gone 'backwards' in the later pre-releases of 6.03 regarding network booting. > > below are results of me testing - i did each a few times to make sure they are valid results. > > hope it helps identify something that's gone awry ? > so far, 6.03 pre11 and pre13 (excluding efi32) seem most stable for PXE/EFI Network booting.... > > Cheers > Andrew > ---------------- > all on VMWare Workstation 9 (Windows) - booting from DHCPD & TFTPD-hpa on Centos 6 x64 > all booting RHEL7 kernel/initrd over TFTP or HTTP, and then loading the install.img from HTTP.... > ---------------- > 6.03-pre11 BIOS: pxelinux.0: boota OK TFTP > 6.03-pre12 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre13 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre14 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre15 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre16 BIOS: pxelinux.0: boots OK TFTP > 6.03-pre17 BIOS: pxelinux.0: boots OK TFTP > ---------------- > 6.03-pre11 BIOS: lpxelinux.0: boots OK TFTP & HTTP > 6.03-pre12 BIOS: lpxelinux.0: very slow compared to pre11. boots TFTP & HTTP > 6.03-pre13 BIOS: lpxelinux.0: boots OK TFTP & HTTP > 6.03-pre14 BIOS: lpxelinux.0: very slow compared to pre13. some odd 'tftpd: read: connection refused' and 'tftpd: read(ack): connection refused'. never boots - normally sits downloading vmlinuz & does nothing further > 6.03-pre15 BIOS: lpxelinux.0: as per pre14 > 6.03-pre16 BIOS: lpxelinux.0: as per pre14 > 6.03-pre17 BIOS: lpxelinux.0: boots OK TFTP & HTTP > ---------------- > 6.03-pre11 EFI32: boots OK TFTP & HTTP > 6.03-pre12 EFI32: fails - gets stuck in a loop downloading files - differs each boot > 6.03-pre13 EFI32: fails - downloads /pxelinux.c32 & /ldlinux.c32 - then continually retries to download ldlinux.e32 > 6.03-pre14 EFI32: fails - downloads /pxelinux.c32 & /ldlinux.e32 - also then tries to download /syslinux/ldlinux.e32, /boot/isolinux/ldlinux.e32, and /syslinux/ldlinux.e32 - then boot fails > 6.03-pre15 EFI32: fails as per pre14 > 6.03-pre16 EFI32: fails as per pre14 > 6.03-pre17 EFI32: fails as per pre14 > ----------------- > 6.03-pre11 EFI64: fails - gets stuck in a loop downloading files - differs each boot > 6.03-pre12 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - then continually retries to download ldlinux.e64 > 6.03-pre13 EFI64: boots OK TFTP & HTTP > 6.03-pre14 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - then continually retries to download ldlinux.e64 > 6.03-pre15 EFI64: fails as per pre14 > 6.03-pre16 EFI64: fails as per pre14 > 6.03-pre17 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64, also then tries to download /syslinux/ldlinux.e64, /boot/isolinux/ldlinux.e64, and /syslinux/ldlinux.e64 - then boot fails > -------------------Please pardon my ignorance; what is "pxelinux.{c32,e64}"? Are you testing pre-compiled official upstream binaries? Or are you compiling you own binaries (and from which source)? I should guess you are also using (replacing) the c32/e32/e64 files each time, according to the Syslinux bootloader version too, right? (sorry to ask, but this is a too-common mistake, and very easy to miss / mess / get mixed, specially when testing several versions.) I wonder if some difference in debugging options when compiling (whether your own binaries, or even the ones HPA made for official pre-release) could be part of the reasons for the different resulting behaviors. Regards, Ady.
> I'm running Workstation 10.0.2 but on Linux. I assume you're just passing EFI32 > vs EFI64 binaries (I'm doing this with different directories)I've got a folder structure as follows, if at all relevant: /ldlinux.c32 /ldlinux.e32 /ldlinux.e64 /pxelinux.0 /lpxelinux.0 /pxelinux.e32 /pxelinux.e64 /pxelinux.cfg/bios /pxelinux.cfg/efi32 /pxelinux.cfg/efi64 /pxelinux.cfg/testall3 /syslinux/bios/*.c32 files /syslinux/efi32/*.c32 files /syslinux/efi64/*.c32 files I change the dhcp conf to point to this or to pxelinux.0 as appropriate. pxelinux.e{32,64} are renamed syslinux.efi files as appropriate. example pxelinux.cfg/bios file : PATH /syslinux/bios UI vesamenu.c32 INCLUDE /pxelinux.cfg/testall3 Same results manually i.e. not using vesamenu.c32 - the times they fail, it doesn't get as far as loading the config files anyway. I run an update script to replace all the files when trying out the different versions: # base files \cp syslinux-6/bios/core/lpxelinux.0 /tftpboot/pxelinux.0 \cp syslinux-6/efi64/efi/syslinux.efi /tftpboot/pxelinux.e64 \cp syslinux-6/efi32/efi/syslinux.efi /tftpboot/pxelinux.e32 \cp syslinux-6/bios/com32/elflink/ldlinux/ldlinux.c32 /tftpboot/ldlinux.c32 \cp syslinux-6/efi32/com32/elflink/ldlinux/ldlinux.e32 /tftpboot/ldlinux.e32 \cp syslinux-6/efi64/com32/elflink/ldlinux/ldlinux.e64 /tftpboot/ldlinux.e64 # only on bios \cp syslinux-6/bios/memdisk/memdisk /tftpboot/syslinux/bios/memdisk # repeat for each system type \cp syslinux-6/bios/com32/menu/menu.c32 /tftpboot/syslinux/bios/menu.c32 \cp syslinux-6/bios/com32/menu/vesamenu.c32 /tftpboot/syslinux/bios/vesamenu.c32 \cp syslinux-6/bios/com32/chain/chain.c32 /tftpboot/syslinux/bios/chain.c32 \cp syslinux-6/bios/com32/hdt/hdt.c32 /tftpboot/syslinux/bios/hdt.c32 \cp syslinux-6/bios/com32/modules/*c32 /tftpboot/syslinux/bios/ \cp syslinux-6/bios/com32/lib/libcom32.c32 /tftpboot/syslinux/bios/libcom32.c32 \cp syslinux-6/bios/com32/libutil/libutil.c32 /tftpboot/syslinux/bios/libutil.c32 # I repeat this last section x3 - replacing /bios/ with /efi32/ - and then again replacing /bios/ with /efi64/ Only copy/pasted one for clarity of this post!. Cheers Andrew
(SNIP)> > 6.03-pre11 EFI64: fails - gets stuck in a loop downloading files - > > differs each boot > > 6.03-pre12 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - > > then continually retries to download ldlinux.e64 > > 6.03-pre13 EFI64: boots OK TFTP & HTTP > > 6.03-pre14 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64 - > > then continually retries to download ldlinux.e64 > > 6.03-pre15 EFI64: fails as per pre14 > > 6.03-pre16 EFI64: fails as per pre14 > > 6.03-pre17 EFI64: fails - downloads /pxelinux.e64 & /ldlinux.e64, also > > then tries to download /syslinux/ldlinux.e64, > > /boot/isolinux/ldlinux.e64, and /syslinux/ldlinux.e64 - then boot > > fails > > -------------------> Please pardon my ignorance; what is "pxelinux.{c32,e64}"?Apologies - I renamed syslinux.efi (for efi32) to pxelinux.e32, and syslinux.efi for efi64 to syslinux.e64...... to keep them all in the same folder. Please see my other detailed reply to this post (reply to Gene Cumm). I realise when I typed out my notes, I've put /pxelinux.c32 - I DID mean /pxelinux.e32 ...... well spotted (but only a typo in the notes!)> Are you testing pre-compiled official upstream binaries? Or are you compiling > you own binaries (and from which source)?They are from https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.03/> I should guess you are also using (replacing) the c32/e32/e64 files each time, > according to the Syslinux bootloader version too, right? > (sorry to ask, but this is a too-common mistake, and very easy to miss / mess / > get mixed, specially when testing several versions.)Yes - all files replaced from the correct version with each test.> I wonder if some difference in debugging options when compiling (whether > your own binaries, or even the ones HPA made for official > pre-release) could be part of the reasons for the different resulting behaviors.I've not compiled them myself yet. Cheers Andrew
On Thu, 19 Jun, at 10:04:35PM, Gene Cumm wrote:> > I'm getting some similar results here with the precompiled binaries > and my binaries of 6.03-pre17Gene, could you try out the attached patch? And see if you get any different results? Andrew, feel free to try it out too, or you could just wait for someone to cut another pre-release. Note that I don't think this will magically solve all EFI PXELINUX problems, but it should at least restore the behaviour from before -pre14. --->From 129c3c31f1a7c2d58d72493d8aed5e6d30d79eb4 Mon Sep 17 00:00:00 2001From: Matt Fleming <matt.fleming at intel.com> Date: Sat, 21 Jun 2014 19:30:53 +0100 Subject: [PATCH] efi: Tag __syslinux_adv* with __export commit 415d571 ("adv: Remove double defintion") introduced a regression for the EFI boot loader. The commit is correct, but should have tagged the __syslinux_adv_ptr and __syslinux_adv_size data objects in the EFI core as __export. This change is required because symbols in the EFI code are not global by default, and so, when ldlinux.{e32,e64} tries to bind to the adv symbols it fails. The following demonstrates the ELF symbol changes, Before: 659: 0000000000034f40 8 OBJECT LOCAL DEFAULT 16 __syslinux_adv_ptr After: 957: 0000000000036fe0 8 OBJECT GLOBAL DEFAULT 16 __syslinux_adv_ptr Signed-off-by: Matt Fleming <matt.fleming at intel.com> --- efi/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/efi/main.c b/efi/main.c index 1cc2456..208fee4 100644 --- a/efi/main.c +++ b/efi/main.c @@ -141,8 +141,8 @@ void __cdecl core_farcall(uint32_t c, const com32sys_t *a, com32sys_t *b) } __export struct firmware *firmware = NULL; -void *__syslinux_adv_ptr; -size_t __syslinux_adv_size; +__export void *__syslinux_adv_ptr; +__export size_t __syslinux_adv_size; char core_xfer_buf[65536]; struct iso_boot_info { uint32_t pvd; /* LBA of primary volume descriptor */ -- 1.9.0 -- Matt Fleming, Intel Open Source Technology Center