Spike White
2014-Mar-09 23:00 UTC
[syslinux] pxelinux.0 not fully booting in EFI 64 mode...not requesting ldlinux.e64 via TFTP...
All, I was excited to hear about EFI boot support in pxelinux >= 6.00. So I tried it. Not working. I've tried 6.02 (from source), 6.02 (from RPM), early 6.03 (from RPM) and even pulled/compiled latest source from git. 6.0.3-pre7. No love. My boot client can boot/image fine in legacy PXE mode. My dhcpd.conf looks like this: # In initial DHCP DISCOVER packet, PXE client sets option 93 to its arch. # 0000 == IA x86 PC (BIOS boot) # 0006 == x86 EFI boot # 0007 == x64 EFI boot option arch code 93 = unsigned integer 16; ... #if option vendor-class-identifier "PXEClient:Arch:00000:UNDI:002001" { if option arch = 00:00 { filename "bios/pxelinux.cfg/pxelinux.0"; # option 67. A string. full path to NBP. option bootfile-name "bios/pxelinux.cfg/pxelinux.0"; #} elsif option vendor-class-identifier "PXEClient:Arch:0007:UNDI:003016" { } elsif option arch = 00:06 { filename "efi.x86/pxelinux.cfg/pxelinux.0"; # option 67. A string. full path to NBP. option bootfile-name "efi.x86/pxelinux.cfg/pxelinux.0"; } elsif option arch = 00:07 { #filename "efi.x64/pxelinux.cfg/bootx64.efi"; filename "efi.x64/pxelinux.cfg/pxelinux.0"; # option 67. A string. full path to NBP. # # PROBLEM! w/ Intel NIC's boot UEFI code. I've seen this before, on # RealTek NIC's legacy PXE boots. # # Intel UEFI PXE boot agent gets confused by this string, even though # it's FF-terminated. Per RFC. So it thinks it's pxelinux.0\377 ! (where # \377 is the FF). # #option bootfile-name "efi.x64/pxelinux.cfg/pxelinux.0"; } else { filename "UNKNOWN_VCI"; option bootfile-name "UNKNOWN_VCI"; } in legacy PXE mode, wireshark confirms it successfully TFTPs bios/pxelinux.cfg/pxelinux.0, followed by (in order, all from bios/pxelinux.cfg/ dir): ldlinux.c32 <tries other config files> pxelinux.cfg/default vesamenu.c32 (referenced by pxelinux.cfg/default) libcom32.c32 libutil.c32 In EFI PXE mode, wireshark confirms it TFTPs efi.x64/pxelinux.cfg/pxelinux.0 (which is a symlink to bios/pxelinux.cfg/pxelinux.0). Next, it should attempt to TFTP over efi.x64/pxelinux.cfg/ldlinux.e64. But it never even requests that. Instead, there's some error message on the screen (can't read it, EFI shell messages immediately refresh screen). I'm able to read on the EFI boot client's console: Check for media present... Media detected... Downloading ???? ?????? I'm able to EFI PXE boot if I specify filename "efi.x64/pxelinux.cfg/bootx64.efi"; in my dhcpd.conf file and set up a GRUB2-compatible efidefault file. But I'm not really interested in GRUB2!! I prefer the richer syntax of the SYSLINUX-based menuing system. What could be wrong? Oh, I've also tried lpxelinux.0 and gpxelinux.0. EFI boot client has Intel NIC, very new notebook. Spike PS As far as using an "arch-007" config file vs a dhcpd.conf file that specifies different boot trees per ARCH -- I'm flexible. I do not manage the DHCP servers at work, but I have input into their PXE settings, for our VLANs. And I have total control of the TFTP image servers. Either approach works. It's good to have both choices, for orgs with other spans of control.
Don Cupp
2014-Mar-09 23:19 UTC
[syslinux] pxelinux.0 not fully booting in EFI 64 mode...not requesting ldlinux.e64 via TFTP...
Spike, There are multiple binaries that come with syslinux. I would highly recommend that you start with the official syslinux pre-built's of pre-7 on kernel.org. You will find inside an syslinux.efi in a 64 bit folder and one in an 32 bit folder. These are the files that you need to point your clients to for efi booting. pxelinux.0 is for bios booting only. On Sunday, March 9, 2014 4:07 PM, Spike White <spikewhitetx at gmail.com> wrote: All, I was excited to hear about EFI boot support in pxelinux >= 6.00.? So I tried it.? Not working.? I've tried 6.02 (from source), 6.02 (from RPM), early 6.03 (from RPM) and even pulled/compiled latest source from git. 6.0.3-pre7.? No love. My boot client can boot/image fine in legacy PXE mode.? My dhcpd.conf looks like this: # In initial DHCP DISCOVER packet, PXE client sets option 93 to its arch. #? ? 0000 == IA x86 PC (BIOS boot) #? ? 0006 == x86 EFI boot #? ? 0007 == x64 EFI boot option arch code 93 = unsigned integer 16; ... ? ? #if option vendor-class-identifier "PXEClient:Arch:00000:UNDI:002001" { ? ? if option arch = 00:00 { ? ? ? filename "bios/pxelinux.cfg/pxelinux.0"; ? ? ? # option 67. A string. full path to NBP. ? ? ? option bootfile-name "bios/pxelinux.cfg/pxelinux.0"; ? ? #} elsif? option vendor-class-identifier "PXEClient:Arch:0007:UNDI:003016" { ? ? } elsif? option arch = 00:06 { ? ? ? filename "efi.x86/pxelinux.cfg/pxelinux.0"; ? ? ? ? # option 67. A string. full path to NBP. ? ? ? ? option bootfile-name "efi.x86/pxelinux.cfg/pxelinux.0"; ? ? } elsif? option arch = 00:07 { ? ? ? ? #filename "efi.x64/pxelinux.cfg/bootx64.efi"; ? ? ? ? filename "efi.x64/pxelinux.cfg/pxelinux.0"; ? ? ? ? # option 67. A string. full path to NBP. ? ? ? ? # ? ? ? ? # PROBLEM! w/ Intel NIC's boot UEFI code.? I've seen this before, on ? ? ? ? # RealTek NIC's legacy PXE boots. ? ? ? ? # ? ? ? ? # Intel UEFI PXE boot agent gets confused by this string, even though ? ? ? ? # it's FF-terminated. Per RFC.? So it thinks it's pxelinux.0\377 ! (where ? ? ? ? # \377 is the FF). ? ? ? ? # ? ? ? ? #option bootfile-name "efi.x64/pxelinux.cfg/pxelinux.0"; ? ? } else { ? ? ? filename "UNKNOWN_VCI"; ? ? ? option bootfile-name "UNKNOWN_VCI"; ? ? } in legacy PXE mode, wireshark confirms it? successfully TFTPs bios/pxelinux.cfg/pxelinux.0, followed by (in order, all from bios/pxelinux.cfg/ dir): ? ? ldlinux.c32 ? ? <tries other config files> ? ? pxelinux.cfg/default ? ? vesamenu.c32? (referenced by pxelinux.cfg/default) ? ? libcom32.c32 ? ? libutil.c32 In EFI PXE mode, wireshark confirms it TFTPs efi.x64/pxelinux.cfg/pxelinux.0? (which is a symlink to bios/pxelinux.cfg/pxelinux.0). Next, it should attempt to TFTP over efi.x64/pxelinux.cfg/ldlinux.e64.? But it never even requests that.? Instead, there's some error message on the screen (can't read it, EFI shell messages immediately refresh screen). I'm able to read on the EFI boot client's console: ? Check for media present... ? Media detected... ? Downloading ???? ? ?????? I'm able to EFI PXE boot if I specify ? filename "efi.x64/pxelinux.cfg/bootx64.efi"; in my dhcpd.conf file and set up a GRUB2-compatible efidefault file. But I'm not really interested in GRUB2!!? I prefer the richer syntax of the SYSLINUX-based menuing system. What could be wrong?? Oh, I've also tried lpxelinux.0 and gpxelinux.0.? EFI boot client has Intel NIC, very new notebook. Spike PS As far as using an "arch-007" config file vs? a dhcpd.conf file that specifies different boot trees per ARCH -- I'm flexible.? I do not manage the DHCP servers at work, but I have input into their PXE settings, for our VLANs.? And I have total control of the TFTP image servers. Either approach works.? It's good to have both choices, for orgs with other spans of control. _______________________________________________ Syslinux mailing list Submissions to Syslinux at zytor.com Unsubscribe or set options at: http://www.zytor.com/mailman/listinfo/syslinux Please do not send private replies to mailing list traffic.
Gene Cumm
2014-Mar-09 23:59 UTC
[syslinux] pxelinux.0 not fully booting in EFI 64 mode...not requesting ldlinux.e64 via TFTP...
On Sun, Mar 9, 2014 at 7:19 PM, Don Cupp <doncuppjr at yahoo.com> wrote:> Spike, > > There are multiple binaries that come with syslinux. I would highly recommend that you start with the official syslinux pre-built's of pre-7 on kernel.org. You will find inside an syslinux.efi in a 64 bit folder and one in an 32 bit folder.1) DO NOT use 6.03-pre7 on EFI64; PLEASE use 6.03-pre6. 2) BIOS binaries/executables are in bios/; EFI x86 (32-bit IA32) in efi32/; EFI x86-64 (64-bit IA32; aka x64) in efi64/. Don't mix fix that are fed to a client during a given boot session. Note that IA64 is associated with Intel Itanium and none of the non-Itanium systems. -- -Gene A: Because it messes up the order in which people normally read text, especially the archives of mailing lists. Q: Why is Top-posting such a bad thing?> These are the files that you need to point your clients to for efi booting. pxelinux.0 is for bios booting only. > > > > On Sunday, March 9, 2014 4:07 PM, Spike White <spikewhitetx at gmail.com> wrote: > > All, > > I was excited to hear about EFI boot support in pxelinux >= 6.00. So I > tried it. Not working. I've tried 6.02 (from source), 6.02 (from RPM), > early 6.03 (from RPM) and even pulled/compiled latest source from git. > 6.0.3-pre7. No love.
Apparently Analagous Threads
- pxelinux.0 not fully booting in EFI 64 mode...not requesting ldlinux.e64 via TFTP...
- pxelinux.0 not fully booting in EFI 64 mode...not requesting ldlinux.e64 via TFTP...
- pxelinux.0 not fully booting in EFI 64 mode...not requesting ldlinux.e64 via TFTP...
- RE: DHCP option 93 for UEFI
- pxelinux.0 not fully booting in EFI 64 mode...not requesting ldlinux.e64 via TFTP...