[syslinux] pxelinux efi64 boot woes on hyper-v gen 2

Luke Ledgerd luke.ledgerd at niteco.se
Fri Nov 28 03:20:46 PST 2014


Ady: You seem to be taking (copy$paste) parts and pieces from different resources.

Luke: Nope. The configuration works fine with PXE 2.01 clients, it's the UEFI PXE 3.2 that is having issues with the dhcp requests. The gospel is the Intel PXE 3 spec I'm RTFMing now. No copy and paste, I just started with someone elses configuration file that claims to support UEFI - or at least hopes to in the future.

Ady:You also seem to be assuming that all those resources are somewhat officially confirmed (proved) to be working, both individually and mixed together.
Additionally, this email thread is getting slightly harder to read and to follow.
As for the "arch 9 vs. arch 7" conflict, my comment was not in regard to the (conflicting) documentation. I mean it regarding your own conditional. You are starting with "if arch = 9" and then you react with a VCI stating that "arch = 7"; it doesn't make sense to me.

Luke: It's trivial Arch 9 isn't used here yet, it's a typo it only ever sent out the Arch 7 one. I am using wireshark to confirm what the DHCP is sending out and receiving in both cases. 
The problem PXE-E99 is reported to be caused by MTFTP Failure (Dell our vendor & others) or Jumbo Frames on the Lan (IBM/Microsoft blogs). A different error usually reports incompatible DHCP options.

Ady: Regarding the "ISC DHCP 3.1" syntax, you "think" it works? 

Luke: I test the configuration works, and RTFM the Syslinux docs.  If it didn't work the dhcpd wouldn't start up.
The configuration I inherited was less structured. I verify it works with a network analyser. DHCP requests are not that hard to read in wireshark now are they?
DHCP Options should be defined in the global section, and used only in a class, scope,group.
I am using site options for PXELinux (which work the default) and Vendor options for extra TFTPBoot options. The Vendor Class thing you took an issue with is to non-PXE devices that use DHCP option 43 to ignore the request. 

Ady: I would suggest simplifying your dhcp config and your network setup. 
Once the basic UEFI case(s) are working, you could then add complexity.

Luke: Been there done that. I'm going to read the PXE 3.2 spec and work backwards and make fully compliant requests. Even your own website warns some legacy PXE 2.0 option roms don't like PXE requests that are not fully complaint  the specs, and are just using bootp style options (next server and filename + syslinux configuration).See the big long string of Vendor options required for some 2.0 PXE roms provided on Syslinux website and the html doc files:
" DHCP Config - Encapsulated
   option dhcp-class-identifier "PXEClient";
   option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:00:00:ff;"

If the "conventional TFTP" configuration doesn't work on your clients, and setting up a PXE boot server is not an option, you can attempt the following configuration. It has been known to boot some configurations correctly; however, there are no guarantees:

I'll have to see if dhcp-isc can add the "ff" at the end of what I'm sending out as per the specs, or encode my own vendor options OR install an intel PXE sever.

Luke: I believe the path option you told me to use instead of configuration file is for the ROOT path or the path to APPEND to ALL filenames in Syslinux configuration files. This does not let you have a common configuration, but different root directories for EFI32,EFI64,Legacy BIOS pxe clients.
I intend to use that to configure the root path later for use with lpxelinux.0 to be http://my.server.ip/tftpboot

Ady: I would also suggest searching for official documentation (e.g. about ISC DHCP 3.1 syntax, commands, config...), instead of almost-randomly copy&pasting from different resources that are not proven-to-work (specially when they are mixed altogether in a soup).

Luke: it makes perfect sense to me what it's all doing. I'm actually thinking that I might just bite the bullet and set up an intel PXE server instead of DHCP, but what I probably will do is emulate what works. See what options MS System Centre Configuration Manager is using with MTFTP turned off to make the DHCPD send the same responses.

Ady:Perhaps someone else in this Syslinux Mailing List might be so kind and post some dhcp config for UEFI clients that are known / proved to be working.

Luke: Yes, that's why I posted ;)
The other issue here, if you read the link to the ibm document, is that you are going to need extra configuration when you don't have your tftpd on the same server as the pxe/dhcp server sending a bootfile - you may require extra configuration that I'm lacking. I'll try and set up a MTFTP server now just to prove a point that it can work if you specify where the MTFTP server is.

PXE 3.0 has a MTFTP discovery process built in that defaults to on that you may need to turn off. I'll set up a MTFTP atftpd server see if it appeases it. 
Links:
http://osdir.com/ml/network.dhcp.isc.dhcp-server/2003-01/msg00287.html
Why use vendor class option: http://www.symantec.com/business/support/index?page=content&id=HOWTO7071

http://www-01.ibm.com/support/docview.wss?uid=swg21247032
Option 60 not set, option 43 not set didn't work - so I did try it simply first.

Will reverse engineer this: http://ccmexec.com/2013/05/configmgr-2012-uefi-and-pxe-boot-support/
http://support.microsoft.com/kb/259670/en-us
Microsoft says what breaks UEFI boot. Using bootfile name instaed  #67 - instead of filename in dhcpd.conf
#60 = Client Identifier (set to "PXEClient") 
#66 #67 = Boot Server Host/File Name
https://jprudente.wordpress.com/2014/02/18/troubleshooting-pxe-booting/
more on the above.

I'll update the list when I fixed it with the working configuration ok :)



More information about the Syslinux mailing list