7156 Uefi pxe DHCP error
-
Server
- FOG Version: RC11
- OS: Ubuntu 16.04
Client
- Service Version: 11.5
- OS: Windows 10 and Ubuntu 16.04
Description
I have been on a mission to dual boot Legacy and UEFI.
this configuration works but only boots clients that support ipxe.efi!! but boots far less:
dhcp-boot=undionly.kpxe,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,ipxe.efi,,192.168.1.109 dhcp-match=set:i386-efi/ipxe.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/ipxe.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,ipxe.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,ipxe.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,ipxe.efi,,192.168.1.109
I have finally succeeded in booting every unfit Machine using the 7156 strain. However there is an issue. I’m getting an dhcp error.
dhcp-boot=undionly.kpxe,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,ipxe.efi,,192.168.1.109 dhcp-match=set:i386-efi/ipxe.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/ipxe.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,ipxe.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,ipxe.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,ipxe.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,intel.efi,,192.168.1.109 dhcp-match=set:i386-efi/intel.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/intel.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,intel.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,intel.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,intel.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,realtek.efi,,192.168.1.109 dhcp-match=set:i386-efi/realtek.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/realtek.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,realtek.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,realtek.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,realtek.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,snp.efi,,192.168.1.109 dhcp-match=set:i386-efi/snp.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/snp.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,snp.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,snp.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,snp.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,snponly.efi,,192.168.1.109 dhcp-match=set:i386-efi/snponly.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/snponly.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,snponly.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,snponly.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,snponly.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,snponly7156.efi,,192.168.1.109 dhcp-match=set:i386-efi/snponly7156.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/snponly7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,snponly7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,snponly7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,snponly7156.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,ipxe7156.efi,,192.168.1.109 dhcp-match=set:i386-efi/ipxe7156.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/ipxe7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,ipxe7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,ipxe7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,ipxe7156.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,snp7156.efi,,192.168.1.109 dhcp-match=set:i386-efi/snp7156.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/snp7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,snp7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,snp7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,snp7156.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,realtek7156.efi,,192.168.1.109 dhcp-match=set:i386-efi/realtek7156.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/realtek7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,realtek7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,realtek7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,realtek7156.efi,,192.168.1.109 dhcp-match=set:efibc,option:client-arch,7 dhcp-boot=tag:efibc,intel7156.efi,,192.168.1.109 dhcp-match=set:i386-efi/intel7156.efi,option:client-arch,6 dhcp-boot=tag:i386-efi/intel7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,intel7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,intel7156.efi,,192.168.1.109 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-boot=tag:efi-x86_64,intel7156.efi,,192.168.1.109```
-
If you compile your own version of dnsmasq (version 2.76) you can use this dnsmasq config. I can confirm that only dnsmasq 2.76 works reliably with bios and uefi systems.
# Don't function as a DNS server: port=0 # Log lots of extra information about DHCP transactions. log-dhcp # Set the root directory for files available via FTP. tftp-root=/tftpboot # PXE menu. The first part is the text displayed to the user. The second is the timeout, in seconds. pxe-prompt="Booting FOG Client", 1 # The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86, # Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI, ARM_EFI and X86-64_EFI # This option is first and will be the default if there is no input from the user. # PXEClient:Arch:00000 pxe-service=X86PC, "Boot BIOS PXE", undionly.kpxe # PXEClient:Arch:00007 pxe-service=BC_EFI, "Boot UEFI PXE-BC", ipxe.efi # PXEClient:Arch:00009 pxe-service=X86-64_EFI, "Boot UEFI PXE-64", ipxe.efi dhcp-range=<fog_server_ip>,proxy
ref: https://forums.fogproject.org/topic/8677/dnsmasq-bios-and-uefi
-
Does this really work like you think?
dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,intel.efi,,192.168.1.109
and
dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,realtek.efi,,192.168.1.109
Depending on how dnsmasq processes its config file I can see the second entry might overwrite the first entry in the dnsmasq configuration in memory. OR if the list is processed in order then I can see the second match never being reached.
-
@george1421 do you have a how to compile your own dnsmasq?
-
@dureal99d I don’t have a how-to yet for compiling dnsmasq. I was able to compile it on a Raspberry Pi running a debian variant without any issues (full disclosure I’ve been compiling applications in linux for a few years so I already had the foundation stuff under control).
Its not hard to do. Will you do the following on the FOG server console.
- Identify the path to dnsmasq
which dnsmasq
- See if you have the development tools loaded
gcc --version
hopefully you’ll get the version line.
I needed these libraries for debian, I might guess ubuntu is similar.
sudo apt-get update sudo apt-get install -y libdbus-1-dev libnetfilter-conntrack-dev libidn11-dev nettle-dev libval-dev dnssec-tools
I’ll tell you what. I just reloaded Mint 18 on my wife’s computer which is based on ubuntu 16.04. Let me work up a rough guide with that system. My laptop is running Zorin which is based on ubuntu 15.10 (I think so that might work, but I’ll use my wife’s to be sure).
I have been working with dnsmasq config setting since I saw your post this AM. I’ve come up with some interesting things and something that haven’t worked as I expected. Once I have a positive solution for one of my issues I’ll write up a tutorial on that info too.
- Identify the path to dnsmasq
-
@george1421 Cool ill be looking forward to that!!!
-
@dureal99d I actually just completed the first phase over in the tutorials
https://forums.fogproject.org/topic/8725/compiling-dnsmasq-2-76-if-you-need-uefi-support
-
@george1421 I will get to it soon as I get home from work!!! as always I will report back!!!
-
@george1421 if I am reading right this will work with your router as the dhcp
-
@dureal99d Sorry I was testing some advanced dnsmasq configs so I couldn’t respond right away. Yes my current test environment is with a soho home router (WRT54) as the dhcp server and my FOG-Pi server (Pi2b running Raspbian) as the dnsmasq 2.76 server.
-
@george1421 this what I get when I try to restart the service
sudo service dnsmasq restart Failed to restart dnsmasq.service: Unit dnsmasq.service not found.
yet when I run this command ““dnsmasq -v”” I get this
Dnsmasq version 2.76 Copyright (c) 2000-2016 Simon Kelley Compile time options: IPv6 GNU-getopt DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify This software comes with ABSOLUTELY NO WARRANTY. Dnsmasq is free software, and you are welcome to redistribute it under the terms of the GNU General Public License, version 2 or 3.
-
@dureal99d Did you remember to install your distribution’s dnsmasq package first? If so the service name may not be called dnsmasq since it appears that Ubuntu 16 looks like its systemd based. A quick check is to just reboot the computer. Once its back up then key in
ps aux|grep dnsmasq
to see if the dnsmasq service is running in memory. I need to figure out what the proper systemd restart command is.[Edit] According to this github page: https://gist.github.com/magnetikonline/6236150
# for Ubuntu 16.04LTS $ sudo systemctl restart NetworkManager # for Ubuntu 14.04LTS $ sudo restart network-manager
-
@george1421 I did not install dnsmasq. I will redo all the steps from scratch. I will install my distros dnsmasq first, then I will do the steps and get back to you.
-
@dureal99d OK just install your distro’s dnsmasq version then just pop back to the directory where you built dnsmasq and just key in
sudo make install
and it should see that the binary has already been created and just copy over the compiled version. But did the compile right since it was installed and reported the right version when the command was run. -
@george1421 ok I’m waiting on my machine to boot.
-
make[1]: Entering directory '/home/dureal99d/dnsmasq-2.76/src' make[1]: 'dnsmasq' is up to date. make[1]: Leaving directory '/home/dureal99d/dnsmasq-2.76/src' install -d /usr/sbin -d /usr/share/man/man8 install -m 644 man/dnsmasq.8 /usr/share/man/man8 install -m 755 src/dnsmasq /usr/sbin
-
@dureal99d Yes, that is expected. It says the binary you complied is up to date and just recopied the files to their destination location. So
dnsmasq -v
should show that 2.76 is installed (hope). -
the result of running command ps aux|grep dnsmasq
nobody 1467 0.0 0.0 47864 3728 ? S 07:51 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d dureal9+ 5503 0.0 0.0 14224 972 pts/5 S+ 08:00 0:00 grep --color=auto dnsmasq
-
@george1421 yes the command shows
Dnsmasq version 2.76 Copyright (c) 2000-2016 Simon Kelley Compile time options: IPv6 GNU-getopt DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify This software comes with ABSOLUTELY NO WARRANTY. Dnsmasq is free software, and you are welcome to redistribute it under the terms of the GNU General Public License, version 2 or 3.```
-
@george1421 to edit this file what do I type