I've found a way to support PXE booting both UEFI and BIOS architectures with Windows Server DHCP. This method uses a feature introduced in WinServer 2012: DHCP policies. First, in the the DHCP console, at the IPv4 root of the server, create a vendor class named PXEClient (UEFI x64) with the following value: PXEClient:Arch:00007 Then create your configuration for your BIOS clients in your scope or as global settings as usual by setting options 66 (IP or hostname of your TFTP host) and 67 (pxelinux.0). For the UEFI clients, you must then create a policy. In the condition page of the wizard, add a condition with the following settings: Criteria: Vendor Class Operator: Equals Value: PXEClient (UEFI x64) Tick Append wildcard(*) Do not configure an IP address range for the policy. Finally configure options 66 (TFTP server) and 67 (syslinux.efi). You must separate TFTP servers for your BIOS and UEFI clients because Microsoft DHCP server does not send option 210 (path prefix). Microsoft DHCP servers will only send options listed in the Parameter Request List in the DHCPDISCOVER packet. One could make a cleaner setup by creating a BIOS PXEClient vendor class and putting their options within a policy too. -- Alexandre Blanchette <blanalex at gmail.com>
On Tue, Jan 14, 2014 at 8:52 PM, Alexandre Blanchette <blanalex at gmail.com> wrote:> I've found a way to support PXE booting both UEFI and BIOS architectures > with Windows Server DHCP. > > This method uses a feature introduced in WinServer 2012: DHCP policies. > > First, in the the DHCP console, at the IPv4 root of the server, create a > vendor class named PXEClient (UEFI x64) with the following value: > PXEClient:Arch:00007 > > Then create your configuration for your BIOS clients in your scope or as > global settings as usual by setting options 66 (IP or hostname of your TFTP > host) and 67 (pxelinux.0). > > For the UEFI clients, you must then create a policy. In the condition page > of the wizard, add a condition with the following settings: > Criteria: Vendor Class > Operator: Equals > Value: PXEClient (UEFI x64) > Tick Append wildcard(*) > > Do not configure an IP address range for the policy. > > Finally configure options 66 (TFTP server) and 67 (syslinux.efi). You must > separate TFTP servers for your BIOS and UEFI clients because Microsoft DHCP > server does not send option 210 (path prefix). Microsoft DHCP servers will > only send options listed in the Parameter Request List in the DHCPDISCOVER > packet. > > One could make a cleaner setup by creating a BIOS PXEClient vendor class > and putting their options within a policy too.I haven't tried WS2012 yet but PXELINUX will parse DHCP option 43 (vendor-specific information) nicely and I have encapsulated 210 inside 43 successfully (can't recall if I tried WS2008R2 and/or ISC-DHCPd but I did at least one). The one oddball missing from your recipe is the UEFI x86 systems that are not 64 bit. They are rare but exist. -- -Gene
A small how-to for encapsulating option 210 inside option 43 on Windows DHCP servers would be welcome then :-) And as far as UEFI x86 system go, one would simply have to create another vendor class with the value PXEClient:Arch:00006 On Wed, Jan 15, 2014 at 12:05 AM, Gene Cumm <gene.cumm at gmail.com> wrote:> On Tue, Jan 14, 2014 at 8:52 PM, Alexandre Blanchette > <blanalex at gmail.com> wrote: > > I've found a way to support PXE booting both UEFI and BIOS architectures > > with Windows Server DHCP. > > > > This method uses a feature introduced in WinServer 2012: DHCP policies. > > > > First, in the the DHCP console, at the IPv4 root of the server, create a > > vendor class named PXEClient (UEFI x64) with the following value: > > PXEClient:Arch:00007 > > > > Then create your configuration for your BIOS clients in your scope or as > > global settings as usual by setting options 66 (IP or hostname of your > TFTP > > host) and 67 (pxelinux.0). > > > > For the UEFI clients, you must then create a policy. In the condition > page > > of the wizard, add a condition with the following settings: > > Criteria: Vendor Class > > Operator: Equals > > Value: PXEClient (UEFI x64) > > Tick Append wildcard(*) > > > > Do not configure an IP address range for the policy. > > > > Finally configure options 66 (TFTP server) and 67 (syslinux.efi). You > must > > separate TFTP servers for your BIOS and UEFI clients because Microsoft > DHCP > > server does not send option 210 (path prefix). Microsoft DHCP servers > will > > only send options listed in the Parameter Request List in the > DHCPDISCOVER > > packet. > > > > One could make a cleaner setup by creating a BIOS PXEClient vendor class > > and putting their options within a policy too. > > I haven't tried WS2012 yet but PXELINUX will parse DHCP option 43 > (vendor-specific information) nicely and I have encapsulated 210 > inside 43 successfully (can't recall if I tried WS2008R2 and/or > ISC-DHCPd but I did at least one). > > The one oddball missing from your recipe is the UEFI x86 systems that > are not 64 bit. They are rare but exist. > > -- > -Gene > _______________________________________________ > 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. > >-- Alexandre Blanchette <blanalex at gmail.com>