FOG BIOS And EFI Coexistence
-
This is a thread for documenting my travels in making a system that lets FOG boot both BIOS and EFI based computers. Input from others is welcomed.
I am aware that if you have a Linux based DHCP there are other methods out there that make this more approachable, but the purpose of my work here will be for those who use a Windows DHCP or other DHCP that they cannot modify.
Currently I am working on using DnsMasq to allow FOG to boot on the network without having to specify a boot file in the DHCP server. This would allow me (in theory) to eventually serve different boot files to different detected architectures. The problem with specifying a boot file in the DHCP is that the file would need to be compatible with all architectures you intend to support, and mixing EFI and BIOS support is (currently) impossible.
I do have BIOS based devices able to talk to the FOG server which is running DnsMasq, without any network boot related settings specified in my Windows DHCP. The device then is handed off to FOG’s boot process, then boots however is relevant.
EFI based devices are not receiving any network boot information at the moment. I have tried a few different devices, so I know it is not just one’s issue. I am continuing to work on this.
Current /etc/dnsmasq.d/ltsp.conf is as follows, mostly taken from the FOG wiki:
[CODE]port=0log-dhcp
tftp-root=/tftpboot
dhcp-boot=undionly.kpxe,<FOG-IP>,<FOG-IP>
dhcp-option=17,/images
dhcp-option=vendor:PXEClient,6,2b
dhcp-no-override
pxe-prompt=“Press F8 for boot menu”, 3
pxe-service=X86PC, “Boot BIOS”, undionly.kpxe, <FOG-IP>
pxe-service=IA64_EFI, “Boot IA64”, snponly.efi, <FOG-IP>
pxe-service=IA32_EFI, “Boot IA32”, i386-efi/snponly.efi, <FOG-IP>
pxe-service=X86-64_EFI, “Boot x8664EFI”, snponly.efi, <FOG-IP>dhcp-range=<FOG-IP>,proxy[/CODE]
Notes:
[LIST]
[]Replace <FOG-IP> with the FOG server’s IP address in the form of x.x.x.x
[]I may have more architectures specified than needed, and the delay in boot and quoted messages are just for my debugging. Once in deployment the delay is probably fine as 1 or 0, and no messages should be needed.
[*]Whatever files you specify to boot with the pxe-service parameter, you will need to make a copy of that ends in ‘.0’ . Don’t ask me why DnsMasq requires this.
[/LIST] -
[code]port=0
log-dhcp
tftp-root=/tftpboot
dhcp-match=set:efi-64,option:client-arch,7
dhcp-match=set:efi-64,option:client-arch,8
dhcp-match=set:efi-64,option:client-arch,9
dhcp-match=set:efi-32,option:client-arch,2
dhcp-match=set:efi-32,option:client-arch,6
dhcp-boot=undionly.kpxe,<fog-ip>,<fog-ip>
dhcp-boot=tag:efi-64,snponly.efi,<fog-ip>,<fog-ip>
dhcp-boot=tag:efi-32,i386-efi/snponly.efi,<fog-ip>,<fog-ip>
dhcp-option=17,/images
dhcp-option=vendor:PXEClient,6,2b
dhcp-no-override
pxe-prompt=“Press F8 for boot menu”, 3
pxe-service=X86PC, “Boot BIOS”, undionly.kpxe, <FOG-IP>
pxe-service=tag:efi-64,“Boot 64 EFI”, snponly.efi, <FOG-IP>
pxe-service=tag:efi-32,“Boot 32 EFI”, i386-efi/snponly.efi, <FOG-IP>
dhcp-range=<FOG-IP>,proxy[/code]Maybe this will work?
-
Actually, with DHCP classes / policies, you can have windows DHCP server what file you like… I’ve got a thread on it… Just haven’t been able to actually boot an EFI device at all… that’s what’s holding me back from trying it.
However, a dnsmasq solution will be very needed soon. Good work.
-
[quote=“Wayne Workman, post: 46747, member: 28155”]Actually, with DHCP classes / policies, you can have windows DHCP server what file you like… I’ve got a thread on it… Just haven’t been able to actually boot an EFI device at all… that’s what’s holding me back from trying it.
However, a dnsmasq solution will be very needed soon. Good work.[/quote]
i spotted your thread earlier, used it and i’ve been working with a Surface Pro 3 network booting all day. network boot works fine.
-
[quote=“Junkhacker, post: 46750, member: 21583”]i spotted your thread earlier, used it and i’ve been working with a Surface Pro 3 network booting all day. network boot works fine.[/quote]
Are you using a dongle to Ethernet adapter, or WiFi ?
-
[quote=“Junkhacker, post: 46750, member: 21583”]i spotted your thread earlier, used it and i’ve been working with a Surface Pro 3 network booting all day. network boot works fine.[/quote]
[quote=“Wayne Workman, post: 46747, member: 28155”]Actually, with DHCP classes / policies, you can have windows DHCP server what file you like… I’ve got a thread on it… Just haven’t been able to actually boot an EFI device at all… that’s what’s holding me back from trying it.
However, a dnsmasq solution will be very needed soon. Good work.[/quote]
Are you coexisting BIOS PXE and UEFI PXE?
-
[quote=“need2, post: 46756, member: 21891”]Are you coexisting BIOS PXE and UEFI PXE?[/quote]
Not yet… I’ve just been researching it, but that’s the idea yeah. Sounds like Junkhacker already got it going.
-
I appear to be running into a PortFast issue. It will take me a bit to take control of the switches to blame. Those who can test this, please install dnsmasq, then use the attached file (saving it as /etc/dnsmasq.d/ltsp.conf), replacing <FOG-IP> with your FOG server’s IP. Then, make a copy of undionly.kpxe and snponly.efi, calling the copies undionly.kpxe.0 and snponly.efi.0 respectively.
[url=“/_imported_xf_attachments/1/1962_ltsp.txt?:”]ltsp.txt[/url]
-
I can jump on this one…
I’ll backup my current config and try this… give me 30 minutes…
-
That’d be a negative… for both BIOS and UEFI… used two different machines to test.
I’ve attached my WORKING ltsp.conf file, and the one I got from here (which I ripped the comments out of, and changed IP, and repaced .kpxe and .efi with .0)
I also ensured I had the .0 files, too.
[url=“/_imported_xf_attachments/1/1963_ltsp new.txt?:”]ltsp new.txt[/url][url=“/_imported_xf_attachments/1/1964_ltsp working.txt?:”]ltsp working.txt[/url]
-
I use my router’s dnsmasq now, but this is my old working FOG dhcpd.conf that should do the trick.
Change the IP’s/bootfiles to suite your needs.
[CODE]# DHCP Server Configuration file.
see /usr/share/doc/dhcp*/dhcpd.conf.sample
This file was created by FOG
use-host-decl-names on;
ddns-update-style interim;
ignore client-updates;
next-server 10.0.0.5;
option arch code 93 = unsigned integer 16;if option arch = 00:07 {
filename “snp.efi”;
}else if option arch = 00:06 {
filename “ipxe.efi”;
}else {
filename “undionly.kpxe”;
}subnet 10.0.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.0.200 10.0.0.254;
default-lease-time 21600;
max-lease-time 43200;
option domain-name-servers 10.0.0.1;
option routers 10.0.0.1;
}
[/CODE] -
[quote=“Wayne Workman, post: 46763, member: 28155”]That’d be a negative… for both BIOS and UEFI… used two different machines to test.
I’ve attached my WORKING ltsp.conf file, and the one I got from here (which I ripped the comments out of, and changed IP, and repaced .kpxe and .efi with .0)
I also ensured I had the .0 files, too.[/quote]
Give this a try under [B]tftp-root=/tftpboot[/B] (replace FOG with your FOG server’s hostname):
[CODE]dhcp-boot=undionly.kpxe,FOG,10.0.0.3
dhcp-match=set:efi-ia32,option:client-arch,6
dhcp-boot=tag:efi-ia32,ipxe.efi,FOG,10.0.0.3
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,snp.efi,FOG,10.0.0.3
dhcp-range=10.0.0.3,proxy,255.255.255.0
[/CODE] -
[quote=“Wayne Workman, post: 46755, member: 28155”]Are you using a dongle to Ethernet adapter, or WiFi ?[/quote]
using the microsoft USB dongle. my legacy machines are working like they always have, uefi machines are loading ipxe.efi
-
[quote=“Junkhacker, post: 46782, member: 21583”]using the microsoft USB dongle. my legacy machines are working like they always have, uefi machines are loading ipxe.efi[/quote]
Do share how you did it.
-
[quote=“Junkhacker, post: 46782, member: 21583”]using the microsoft USB dongle. my legacy machines are working like they always have, uefi machines are loading ipxe.efi[/quote]
Do I need to bribe you?
-
for windows server 2012 DHCP, it was as simple as the link Wayne Workman posted.
[url]http://www.syslinux.org/archives/2014-January/021404.html[/url] create vendor class that matches uefi systems ([I][COLOR=#000000]PXEClient:Arch:00007[/COLOR][/I]) and give those that match a different bootfile (in my case, ipxe.efi) -
I see… interesting. This may be the direction that things have to go. DnsMasq seems in sufficient for EFI PXE and some older PXE clients. I’m still going to try a few things with it, but otherwise we might just have to make good documentation on the changes to make to a Windows 2012+ DHCP and a Linux DHCP to achieve coexistence. I will work on the Windows 2012 DHCP configs eventually (assuming DnsMasq fails me), but I will need to spin up a new 2012 server and integrate it to our domain first.
-
This is the thread:
[url]http://fogproject.org/forum/threads/undionly-kpxe-and-ipxe-efi.12607/[/url]
-
Has anyone tried either of my configs I posted? Both of them properly serve legacy/efi bootfiles.
-
I will tonight. I had other things going on last night when you posted those.