[syslinux] patch for UEFI PXE booting bugs

Cao, Da-Shi (EG-China-Presales-CPC-GZ) thomas-ds.cao at hp.com
Tue May 5 04:51:44 PDT 2015


Hi Pactrick,
Yes, the idea to use pxe offer/reply is more exact and certainly much better!

I'm currently working on the following issue: the kernel (linux) will not begin after it is downloaded by pxelinux in EFI mode and the box just reboots itself!
I will send my results after I find out the cause. I can only work on this if I am off my working duties.

Thanks,
Dashi Cao

> -----Original Message-----
> From: Patrick Masotta [mailto:masottaus at yahoo.com]
> Sent: Monday, May 04, 2015 23:33
> To: syslinux at zytor.com; Da Shi Cao
> Cc: Cao, Da-Shi (EG-China-Presales-CPC-GZ)
> Subject: Re: [syslinux] patch for UEFI PXE booting bugs
> 
> >>>
>  PXE booting in UEFI mode of HP
>  Proliant Gen9 will fail if the nic port  used is not the first one
> enumerated.
>  Based on syslinux 6.03, several modifications have to be  made in the
> EFI supporting codes.
>  1. The function "net_parse_dhcp". Instead of using the first  handle
> that returns EFI_SUCCESS, a check on the DhcpAckReceived is  made. The
> index and the total number handles are saved in global  variables.
>  2. Function "efi_create_binding". Instead of using the first  handle
> that returns EFI_SUCCESS, a best guess on the working handle  is made
> and used directly.
>  3. Functions "core_udp_connect" and "core_udp_sendto". The  ip address
> in the global variable IPInfo is used instead of the default  address!
> <<<
> 
> Hi Dashi,
> Thanks for your patch.
> I agree with you that taking the first PXE handle that returns
> EFI_SUCCESS is not a good approach for multihomed clients. But your
> patch detects if the handle was the one used to PXE boot the system
> only by checking the "DhcpAckReceived" flag.
> I "think" this is not correct. i.e. consider the case of a client where
> NIC_1 is connected to a network that only has a regular DHCP server
> (non-PXE) while its NIC_2 is connected to a real PXE network; your code
> would take the handle corresponding to NIC_1 what would be wrong.
> 
> I "think" the detection should be done asking for "PxeReplyReceived"
> first, then for "ProxyOfferReceived":
> if either flag is true then the handle represents the one used in a
> successful PXE boot transaction, surely the one that brought
> syslinux.efi to the client, then the right handle.
> 
> see an example of this detection at function DiscoverBootFile() at
> UDK2014
> \MyWorkSpace\MdeModulePkg\Universal\Network\UefiPxeBcDxe\PxeBcImpl.c
> 
> see also my patch
> http://www.syslinux.org/archives/2015-March/023326.html
> 
> Best,
> Patrick
> 
> 
> 




More information about the Syslinux mailing list