iPXE discussion forum
Use MS DHCP for both UEFI and BIOS - Printable Version

+- iPXE discussion forum (https://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: Use MS DHCP for both UEFI and BIOS (/showthread.php?tid=7442)



Use MS DHCP for both UEFI and BIOS - pxe_curious - 2014-08-31 17:49

I was wondering if it is possible to use the Windows Server DHCP role to hand out different boot file names for both BIOS and UEFI machines using either vendor or user classes similar to the way it is done for iPXE chainloading?

Is there a guide somewhere? Or is this just not possible and ISC DHCP should be used because of the logic support in dhcpd.conf?


RE: Use MS DHCP for both UEFI and BIOS - robinsmidsrod - 2014-09-05 09:49

I've just updated my ISC dhcpd.conf example to also account for UEFI. You should be able to use this as a basis for building a similar config for MS dhcpd. You can find it here: https://gist.github.com/robinsmidsrod/4008017

The magic DHCP option number is 93, as you can see in the linked example. Making a conditional for "filename" that uses the value of option 93 should work for MS DHCP server as well.


RE: Use MS DHCP for both UEFI and BIOS - sebus - 2016-09-14 09:07

Anybody has concise instructions for MS DHCP?

I have used: https://wiki.fogproject.org/wiki/index.php?title=BIOS_and_UEFI_Co-Existence

but it does not do what I need (I did build ipxe.efi with my script)

I use for BIOS PXE booting:

ipxe undionly.kkpxe --> pxelinux.0 (for menu) --> whatever menu gets selected (ipxe.lkrn for wimboot / smsboot\x86\wdsnbp.com -W for SCCM WDS )

but now my EFI based devices instantly boot ONLY to SCCM WDS without any menu being presented

Any idea how to get menu presented while doing IPv4 PXE EFI boot?

Thanks

sebus


RE: Use MS DHCP for both UEFI and BIOS - power270 - 2016-09-21 02:21

I had WDS setup as well with PXELinux, but I moved away from it because I didn’t like WDS and the way it handled EFI. I use Tiny PXE server with iPXE. I have two created one for bios and one for EFI.

MS DHCP Config:
Right Click IPv4
1. Define Vendor Classes

Display Name: PXEClient (UEFI X64)
Description: PXEClient:Arch:00007
ASCII: PXEClient:Arch:00007

Display Name: PXEClient (BIOS)
Description: PXEClient:Arch:00000
ASCII: PXEClient:Arch:00000

2. Right Click New Policy under Policy Scope
Policy Name: PXEClient (UEFI X64)
Description: PXEClient (UEFI X64)

Add Condition:
Check Append wildcard(*)
Click Add
Then Ok

Add DHCP Options
66 – pxe.domain.ca
67 - boot\ipxe.efi

3. Right Click New Policy under Policy Scope
Policy Name: PXEClient (BIOS)
Description: PXEClient (BIOS)

Add Condition:
Check Append wildcard(*)
Click Add
Then Ok

Add DHCP Options
66 – pxe.domain.ca
67 - boot\ipxe.kpxe

Built into the iPXE boot loaders:

#!ipxe
prompt --key 0x197e --timeout 4000 Press F12 for network boot... || goto no_shell
dhcp
set boot-imageurl http://pxe.domain.ca/boot/background
set boot-image gflwallpaper.png
console --x 1024 --y 768
console --picture ${boot-imageurl}/${boot-image} --left 180 --right 82 --top 90
colour --basic 7 7
login
chain http://${username:uristring}:${password:uristring}@pxe.domain.ca/boot/iPXE/menu.ipxe
exit

:no_shell
Exit

Chains to menu.ipxe
#!ipxe

set boot-url http://pxe.domain.ca/boot/background
set boot-image gnlwallpaper.png
console --x 1024 --y 768
console --picture ${boot-url}/${boot-image} --left 180 --right 82 --top 90
set menu-timeout 10000
isset ${menu-default} || set menu-default ServerDeploymentX86
:menu
menu
item ServerDeploymentX86 Server Deployment X86
item ServerDeploymentX64 Server Deployment X64
item AcronisTrueImage Acronis TrueImage
item CloneZilla CloneZilla
item DBAN DBAN
item gParted gParted
item MemTest MemTest
item exit Exit

choose --timeout 0 --default ${menu-default} selected || goto cancel
set menu-timeout 0
goto ${selected}
:ServerDeploymentX86
kernel /boot/x86/wimboot
initrd /boot/x86/bootmgr.exe bootmgr.exe
initrd /boot/x86/bcd BCD
initrd /boot/boot.sdi boot.sdi
initrd /boot/x86/boot.wim boot.wim
boot || goto failed
:ServerDeploymentX64
kernel /boot/x64/wimboot
initrd /boot/x64/bootmgr.exe bootmgr.exe
initrd /boot/x64/bcd BCD
initrd /boot/boot.sdi boot.sdi
initrd /boot/x64/boot.wim boot.wim
boot || goto failed
:AcronisTrueImage
initrd /boot/iso/AcronisFree.iso
chain /boot/x64/memdisk iso raw
boot || goto failed
:CloneZilla
kernel /boot/iso/ClonezillaLive/live/vmlinuz boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 nosplash noprompt fetch=http://pxe.domain.ca/boot/iso/ClonezillaLive/live/filesystem.squashfs
initrd /boot/iso/ClonezillaLive/live/initrd.img
boot || goto failed
:DBAN
initrd /boot/iso/dban-2.2.8_i586.iso
chain /boot/x64/memdisk iso raw
boot || goto failed
:gParted
kernel /boot/iso/GPartedLive/live/vmlinuz boot=live config noswap union=aufs noswap noprompt vga=788 fetch=${boot-url}/boot/iso/GPartedLive/live/filesystem.squashfs
initrd /boot/iso/GPartedLive/live/initrd.img
boot || goto failed
:MemTest
initrd /boot/iso/memtest.iso
chain /boot/x64/memdisk iso raw
boot || goto failed
:failed
exit
[/align]


RE: Use MS DHCP for both UEFI and BIOS - sebus - 2017-02-09 14:58

I do not have "luxury" of removing WDS, as it is vital part of SCCM that is being used for imagining

This one is not working in my environment at the moment:

https://2pintsoftware.com/whitepaper-using-dhcp-uefi-bios-pxe-booting/

I have also tried PXE Forced Mode as per: https://support.symantec.com/en_US/article.HOWTO7071.html

Same difference, no go with UEFI PXE boot (legacy BIOS works fine)

Next my try would be
Option 43 as per
https://www.ibm.com/support/knowledgecenter/SS3HLM_7.1.1.4/com.ibm.tivoli.tpm.osd.doc_7.1.1.4/install/cosd_pxeboottype.html
or
https://www.ibm.com/support/knowledgecenter/en/SS3HLM_7.1.1.13/com.ibm.tivoli.tpm.osd.doc_7.1.1.13/install/tosd_dhcpexample1.htm
or
http://techthoughts.info/pxe-booting-wds-dhcp-scope-vs-ip-helpers/
and
http://www.syslinux.org/archives/2014-January/021481.html

sebus


RE: Use MS DHCP for both UEFI and BIOS - sebus - 2017-02-17 21:43

(2014-09-05 09:49)robinsmidsrod Wrote:  I've just updated my ISC dhcpd.conf example to also account for UEFI. You should be able to use this as a basis for building a similar config for MS dhcpd. You can find it here: https://gist.github.com/robinsmidsrod/4008017

The magic DHCP option number is 93, as you can see in the linked example. Making a conditional for "filename" that uses the value of option 93 should work for MS DHCP server as well.

How would that be configured?

When the PXE (or whatever it’s called with UEFI) client requests a DHCP lease, it provides various details (“options”) about itself, including the “Client System Architecture Type”, (option 93).

So it is client that sends this info, what does server return that would need to be configured?


RE: Use MS DHCP for both UEFI and BIOS - NiKiZe - 2017-02-18 00:13

(2017-02-17 21:43)sebus Wrote:  How would that be configured?

When the PXE (or whatever it’s called with UEFI) client requests a DHCP lease, it provides various details (“options”) about itself, including the “Client System Architecture Type”, (option 93).

So it is client that sends this info, what does server return that would need to be configured?

Client sends option 93 aka option arch in discover and/or request and that means that the dhcp server can make decisions on what to send in the response. So depending on arch sent by the client the server responds with different filenames

Code:
# Allow both legacy BIOS and EFI architectures
    if option arch = 00:06 {
        filename "ipxe-x86.efi";
    } elsif option arch = 00:07 {
        filename "ipxe-x64.efi";
    } elsif option arch = 00:00 {
        filename "ipxe.pxe";
    }

There is something similar to these conditionals in MS DHCP as well.


RE: Use MS DHCP for both UEFI and BIOS - sebus - 2017-02-18 09:28

(2017-02-18 00:13)NiKiZe Wrote:  
(2017-02-17 21:43)sebus Wrote:  How would that be configured?

When the PXE (or whatever it’s called with UEFI) client requests a DHCP lease, it provides various details (“options”) about itself, including the “Client System Architecture Type”, (option 93).

So it is client that sends this info, what does server return that would need to be configured?

Client sends option 93 aka option arch in discover and/or request and that means that the dhcp server can make decisions on what to send in the response. So depending on arch sent by the client the server responds with different filenames

Code:
# Allow both legacy BIOS and EFI architectures
    if option arch = 00:06 {
        filename "ipxe-x86.efi";
    } elsif option arch = 00:07 {
        filename "ipxe-x64.efi";
    } elsif option arch = 00:00 {
        filename "ipxe.pxe";
    }

There is something similar to these conditionals in MS DHCP as well.

That is done in Policies, as per already stated - https://2pintsoftware.com/whitepaper-using-dhcp-uefi-bios-pxe-booting/, I see no option 93 involvement at all on the SERVER SIDE


RE: Use MS DHCP for both UEFI and BIOS - NiKiZe - 2017-02-18 10:45

(2017-02-18 09:28)sebus Wrote:  I see no option 93 involvement at all on the SERVER SIDE
option 93 = arch used on server side, what do you mean with "at all on the SERVER SIDE"

from the wp
Quote:How does the server know which file to give the client? Is it magic? No, it’s not magic. It’s fairly
straightforward, the client tells the server in the DHCP request which HW capabilities it has. It does
this in the Option 60 that the request has in it, also in Option 93.
A sample string that is sent in the clients request looks like the following:
PXEClient:Arch:<Type Flag>:UNDI:<Options>

So the arch option is "only" used on the server side.


RE: Use MS DHCP for both UEFI and BIOS - sebus - 2017-02-18 11:22

But the server does NOT return Option 93 to client!

It is client telling server in Discovery what arch it is


RE: Use MS DHCP for both UEFI and BIOS - NiKiZe - 2017-02-18 11:24

(2017-02-18 11:22)sebus Wrote:  But the server does NOT return Option 93 to client!

It is client telling server in Discovery what arch it is

Exactly arch is defined by the client since it is only the client that knows what kind of cpu it is running, the server uses this information to construct special responses for each arch.


RE: Use MS DHCP for both UEFI and BIOS - sebus - 2017-02-18 11:45

OK, back to square one then. Still can not boot UEFI PXE client with ONLY DHCP options!


[SOLVED] RE: Use MS DHCP for both UEFI and BIOS - sebus - 2017-02-18 16:40

Got it in the end.

For UEFI boot, in Policy had to remove option 60 & ADD option 150 -TFTP Server IP Address as per

http://www.cisco.com/c/en/us/support/docs/voice-unified-communications/unified-communications-manager-callmanager/13992-win2000-dhcp.html

Now my UEFI PXE client boots from what I tell it to boot from!


RE: [SOLVED] Use MS DHCP for both UEFI and BIOS - BitBub - 2017-02-19 03:16

(2017-02-18 16:40)sebus Wrote:  Got it in the end.

For UEFI boot, in Policy had to remove option 60 & ADD option 150 -TFTP Server IP Address as per

http://www.cisco.com/c/en/us/support/docs/voice-unified-communications/unified-communications-manager-callmanager/13992-win2000-dhcp.html

Now my UEFI PXE client boots from what I tell it to boot from!

Option 60 is only used when you are running DHCP and proxyDHCP on the same server. It should almost never be used.