[syslinux] Hyper-V Gen 2 waiting for ldlinux.e64

Evgeny Fraimovich evgeny at e5fraim6.com
Mon Mar 26 22:46:24 PDT 2018


Hello,

There's been a similarly-named thread several years ago, in October 
2015: http://www.syslinux.org/archives/2015-October/024374.html

I've recently encountered a similar problem, namely that when loading 
UEFI-based syslinux on Hyper-V Gen 2 machine the syslinux.efi will get 
loaded, will do the DHCP/BOOTP communication and request ldlinux.e64 
from the correct server, however it will ignore the response from the 
TFTP server and will not continue the communication further.

Following the suggested debugging techniques outlined in that thread 
(namely, print-based tracing) I've been able to isolate the problem to 
the Hyper-V UEFI (all Gen 2 machines? Some specific NIC combination? I 
don't know) not liking the UseDefaultAddress UDP option. There is 
already a workaround for some such configurations in the GIT master-head 
I am using, (2ea44cbedb297bd6b409d5c1e0402d5f89592be4 from 2018-03-26) 
however the detection for the need for the workaround is based on the 
return value EFI_NO_MAPPING received from core_udp_configure. On Hyper-V 
though, the aforementioned call returns successfully, but then the 
udp->Transmit call fails with the EFI_NO_MAPPING. (Which by the way 
leads to silent socket closure)

When I rebuild the syslinux.efi with efi_net_def_addr forced to 0, the 
boot on Hyper-V Gen 2 machines works just fine.

In the case of udp send, as opposed to sendto the configure call is 
quite removed from transmit, however I can try producing a patch which 
also checks from EFI_NO_MAPPING on the transmit calls and retries the 
UseDefaultAddress==false configuration. Does this sound like a proper 
solution?

Sincerely yours,

     Evgeny



More information about the Syslinux mailing list