Dnsmasq bios and uefi
-
@george1421 I was finally able to update that 6230 from firmware A11 to A15. Without changing my FOG-Pi / dnsmasq setup the 6230 now pxe boots in uefi mode (whoot!!). The kernel stayed at initializing devices for about 15 seconds, I started to panic after 8, I figured it was hung and reach for my FOG GRUB usb boot drive. When I turned around the 6230 was sitting at the FOG iPXE Menu. I timed it again and it was bout 15 seconds to init the devices and display the FOG iOXE menu. I was able to quick register the system and everything worked fine.
Below is my final dnsmasq configuration for dual booting bios (legacy) and uefi systems on dnsmasq version 2.76
# 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", snp.efi # PXEClient:Arch:00009 pxe-service=X86-64_EFI, "Boot UEFI PXE-64", snp.efi dhcp-range=192.168.112.24,proxy
According to the change log for dnsmasq there are issues with certain uefi firmware for displaying the dnsmasq boot menu so for uefi firmware dnsmasq will just pick the first matching service entry that matches the arch type, as long as there is only one and only matching service. You will not see this menu displayed for uefi firmware, where for bios you will see the menu entry for 1 second.
I did note in the iPXE bootloader that it did say duplicate next server values presented (or something like that). And that is in line with what we were seeing in the earlier pcap where both dnsmasq and the soho router were sending conflicting next-server values.
Here is the pcap of my last and working test. Note: I see I left the snp.efi kernel configured in dnsmasq too!!.
-
@george1421 Last and final comment. Just for grins, I move the original Raspian Jessie version of dnsmasq (v2.72) back in place and restarted dnsmasq. With 2.72 running and the same configuration as before the Dell 6230 failed to pxe boot in UEFI mode, but would boot in bios (legacy) mode. So if you are going to use dnsmasq AND require pxe booting uefi systems you must upgrade dnsmasq to 2.76 or it will fail.
-
Hi,
I was just wondering if you actually got this to work in proxy mode? I have tried and can seem to get it to UEFI boot in proxy. I tried setting dnsmasq to serve as DHCP for a moment(and unplugged from rest of network) with just my test client and Fog/PXE and that worked. Was able to get to Fog menu.Using dnsmasq 2.76 and just pulled latest fog rc36.
Do I need to compile something differently that I’m not seeing(it’s posible I missed something)? Or does it just not work in proxymode at this time?
thanks,
Jason -
@KnightRaven Yes dhcpProxy mode works very well as long as you have 2.76 version of dnsmasq.
Post what your ltsp.conf files is here. I’ll take a look.
Also from the fog server command prompt key in
dnsmasq -v
and post the output here -
@george1421
~ $ dnsmasq -v
Dnsmasq version 2.76 Copyright 2000-2016 Simon Kelley
Compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth no-DNSSEC loop-detect inotifyThis 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. -
@KnightRaven OK what I want you to do (speaking as a moderator now) please create a new thread on this issue. and also include the contents of your /etc/dnsmasq.d/ltsp.conf file. We’ll carry on the discussion there.
But your dnsmasq version should/will work for what you want to do.
-
@KnightRaven
ltsp.conf file…
0_1481838650169_ltsp.confI’m about to be out for the day so I may not get a chance to test for a few weeks. The file may also be a bit ugly but i tried to leave as much of the original info in and just updated info as needed.
-
oops. saw too late. Will open new thread.
-
@KnightRaven Yeah, I see the issue right away. When you are back on this project create a new thread and we can work through what needs to be done. You are missing a few lines that make the uefi bit work.
-
hi, when saw dnsmasq maillist http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2017q2/011379.html
3q for https://github.com/openSUSE/kiwi/wiki/Setup-PXE-boot-with-EFI-using-grub2 & https://www.ibm.com/developerworks/community/blogs/a2674a1d-a968-4f17-998f-b8b38497c9f7/entry/uefi-grub2?lang=ru
the problem may not in dnsmasq, when update to version 2.76. uefi boot can see grub>
My env is all in VMware Workstation 12 Pro 12.0.0 build-2985596
NAT mode
192.168.136.200 to dhcp server centos7.3
192.168.136.226 to cobbler( tftpserver & dnsmasq ) centos7.3
dhcp to cobblerctos73(legacy bios)
dhcp to uefi(efi)- 136.200 install dhcpd
conf file like blow
dns-update-style interim; subnet 192.168.136.0 netmask 255.255.255.0 { option routers 192.168.136.2; option domain-name-servers 192.168.136.2; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.136.240 192.168.136.250; default-lease-time 21600; max-lease-time 43200; }
- 136.226 install centosbase dnsmasq then upgrade to 2.76 from souce, see
https://wiki.fogproject.org/wiki/index.php?title=ProxyDHCP_with_dnsmasq#Compiling dnsmasq 2.76 if you need uefi support
#define HAVE_DBUS #define HAVE_IDN /*#define HAVE_IDN_STATIC*/??? this line not need? cuz my centos73 not support this when do make #define HAVE_CONNTRACK #define HAVE_DNSSEC
then dnsmasq conf file like blow
# 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=/var/lib/tftpboot # Disable re-use of the DHCP servername and filename fields as extra # option space. That's to avoid confusing some old or broken DHCP clients. dhcp-no-override # inspect the vendor class string and match the text to set the tag dhcp-vendorclass=BIOS,PXEClient:Arch:00000 dhcp-vendorclass=UEFI32,PXEClient:Arch:00006 dhcp-vendorclass=UEFI,PXEClient:Arch:00007 dhcp-vendorclass=UEFI64,PXEClient:Arch:00009 # Set the boot file name based on the matching tag from the vendor class (above) #dhcp-boot=net:BIOS,pxelinux.0,,192.168.136.226 #dhcp-boot=net:UEFI32,grub/grub-x86.efi,,192.168.136.226 #dhcp-boot=net:UEFI,BOOTX64.efi,,192.168.136.226 #dhcp-boot=net:UEFI64,grub/grub-x86_64.efi,,192.168.136.226 # The boot filename, Server name, Server Ip Address dhcp-boot=pxelinux.0,,192.168.136.226 # PXE menu. The first part is the text displayed to the user. The second is the timeout, in seconds. pxe-prompt="Booting UAT Autoinstall Client", 1 dhcp-range=192.168.136.200,proxy #legacy bios options pxe-service=X86PC,"Legacy",pxelinux,192.168.136.226 #vmware workstation 12 EFI options pxe-service=BC_EFI,"BC_EFI",bootx64.efi,192.168.136.226
- I find many other doc, all can’t work, till this two, see
https://github.com/openSUSE/kiwi/wiki/Setup-PXE-boot-with-EFI-using-grub2
https://www.ibm.com/developerworks/community/blogs/a2674a1d-a968-4f17-998f-b8b38497c9f7/entry/uefi-grub2?lang=ru
it’s use pxe to boot diskless linux, when finish 1&2, I can see grub>. So ….
Tftproot is /var/lib/tftpboot
-
Mkdir tftproot/boot/grub(in cobbler it already have)
-
Vim tftproot/boot/grub/grub.cfg blow this
set timeout=5 menuentry 'Linux diskless' --class os { insmod net insmod efinet insmod tftp insmod gzio insmod part_gpt insmod efi_gop insmod efi_uga # dhcp, tftp server in my network set net_default_server=192.168.136.226 # auto dhcp setup did not work for me, no idea why # net_bootp # ok let's assign a static address for now net_add_addr eno0 efinet0 192.168.136.246 echo 'Network status: ' net_ls_cards net_ls_addr net_ls_routes echo 'Loading Linux ...' linux (tftp)/boot/vmlinuz inst.ks=http://192.168.136.226/cblr/svc/op/ks/profile/rhel73-x86_64 echo 'Loading initial ramdisk ...' initrd (tftp)/boot/initrd.img }
- grub2-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi --fonts=“unicode” -o /var/lib/tftpboot/bootx64.efi boot/grub/grub.cfg
- systemctl restart dnsmasq.
Just power up uefi.
Dhcpd log blow
May 20 23:46:05 localhost.localdomain dhcpd[844]: DHCPDISCOVER from 00:0c:29:87:09:d5 via ens33 May 20 23:46:06 localhost.localdomain dhcpd[844]: DHCPOFFER on 192.168.136.246 to 00:0c:29:87:09:d5 via ens33 May 20 23:46:08 localhost.localdomain dhcpd[844]: DHCPREQUEST for 192.168.136.246 (192.168.136.200) from 00:0c:29:87:09:d5 via ens33 May 20 23:46:08 localhost.localdomain dhcpd[844]: DHCPACK on 192.168.136.246 to 00:0c:29:87:09:d5 via ens33 May 20 23:48:36 localhost.localdomain dhcpd[844]: DHCPDISCOVER from 00:0c:29:87:09:d5 via ens33 May 20 23:48:37 localhost.localdomain dhcpd[844]: DHCPOFFER on 192.168.136.246 to 00:0c:29:87:09:d5 via ens33 May 20 23:48:40 localhost.localdomain dhcpd[844]: DHCPREQUEST for 192.168.136.246 (192.168.136.200) from 00:0c:29:87:09:d5 via ens33 May 20 23:48:40 localhost.localdomain dhcpd[844]: DHCPACK on 192.168.136.246 to 00:0c:29:87:09:d5 via ens33 May 20 23:50:08 localhost.localdomain dhcpd[844]: DHCPDISCOVER from 00:0c:29:87:09:d5 via ens33 May 20 23:50:09 localhost.localdomain dhcpd[844]: DHCPOFFER on 192.168.136.246 to 00:0c:29:87:09:d5 via ens33 May 20 23:50:09 localhost.localdomain dhcpd[844]: DHCPREQUEST for 192.168.136.246 (192.168.136.200) from 00:0c:29:87:09:d5 via ens33 May 20 23:50:09 localhost.localdomain dhcpd[844]: DHCPACK on 192.168.136.246 to 00:0c:29:87:09:d5 via ens33 May 20 23:50:26 localhost.localdomain dhcpd[844]: DHCPREQUEST for 192.168.136.246 from 00:0c:29:87:09:d5 via ens33 May 20 23:50:26 localhost.localdomain dhcpd[844]: DHCPACK on 192.168.136.246 to 00:0c:29:87:09:d5 via ens33
Dnsmasq log blow
5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 vendor class: PXEClient:Arch:00009:UNDI:003016 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 PXE(ens33) 00:0c:29:87:09:d5 proxy 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 tags: UEFI64, ens33 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 next server: 192.168.136.226 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 broadcast response 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 sent size: 1 option: 53 message-type 2 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 sent size: 4 option: 54 server-identifier 192.168.136.226 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74 5月 20 23:46:05 cobbler dnsmasq-dhcp[1499]: 1607759066 sent size: 17 option: 97 client-machine-id 00:56:4d:15:7a:51:36:e6:8f:fd:fe:4d:c4:27... 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1607759066 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1607759066 vendor class: PXEClient:Arch:00009:UNDI:003016 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 vendor class: PXEClient:Arch:00009:UNDI:003016 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 PXE(ens33) 00:0c:29:87:09:d5 proxy 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 tags: UEFI64, ens33 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 bootfile name: bootx64.efi 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 server name: 192.168.136.226 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 next server: 192.168.136.226 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 sent size: 1 option: 53 message-type 5 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 sent size: 4 option: 54 server-identifier 192.168.136.226 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74 5月 20 23:46:08 cobbler dnsmasq-dhcp[1499]: 1726852750 sent size: 17 option: 97 client-machine-id 00:56:4d:15:7a:51:36:e6:8f:fd:fe:4d:c4:27... 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 vendor class: PXEClient:Arch:00009:UNDI:003016 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 PXE(ens33) 00:0c:29:87:09:d5 proxy 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 tags: UEFI64, ens33 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 next server: 192.168.136.226 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 broadcast response 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 sent size: 1 option: 53 message-type 2 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 sent size: 4 option: 54 server-identifier 192.168.136.226 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74 5月 20 23:48:36 cobbler dnsmasq-dhcp[1499]: 430386701 sent size: 17 option: 97 client-machine-id 00:56:4d:15:7a:51:36:e6:8f:fd:fe:4d:c4:27... 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 430386701 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 430386701 vendor class: PXEClient:Arch:00009:UNDI:003016 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 vendor class: PXEClient:Arch:00009:UNDI:003016 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 PXE(ens33) 00:0c:29:87:09:d5 proxy 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 tags: UEFI64, ens33 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 bootfile name: bootx64.efi 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 server name: 192.168.136.226 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 next server: 192.168.136.226 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 sent size: 1 option: 53 message-type 5 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 sent size: 4 option: 54 server-identifier 192.168.136.226 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 sent size: 9 option: 60 vendor-class 50:58:45:43:6c:69:65:6e:74 5月 20 23:48:40 cobbler dnsmasq-dhcp[1499]: 549480385 sent size: 17 option: 97 client-machine-id 00:56:4d:15:7a:51:36:e6:8f:fd:fe:4d:c4:27... 5月 20 23:50:08 cobbler dnsmasq-dhcp[1499]: 278376755 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:50:08 cobbler dnsmasq-dhcp[1499]: 278376755 vendor class: anaconda-Linux 3.10.0-514.el7.x86_64 x86_64 5月 20 23:50:09 cobbler dnsmasq-dhcp[1499]: 278376755 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:50:09 cobbler dnsmasq-dhcp[1499]: 278376755 vendor class: anaconda-Linux 3.10.0-514.el7.x86_64 x86_64 5月 20 23:50:26 cobbler dnsmasq-dhcp[1499]: 2725144841 available DHCP subnet: 192.168.136.200/255.255.255.0 5月 20 23:50:26 cobbler dnsmasq-dhcp[1499]: 2725144841 vendor class: anaconda-Linux 3.10.0-514.el7.x86_64 x86_64
Tftp log blow
5月 20 23:46:09 cobbler in.tftpd[2257]: RRQ from 192.168.136.246 filename bootx64.efi 5月 20 23:46:09 cobbler in.tftpd[2258]: RRQ from 192.168.136.246 filename bootx64.efi 5月 20 23:48:41 cobbler in.tftpd[2285]: RRQ from 192.168.136.246 filename bootx64.efi 5月 20 23:48:41 cobbler in.tftpd[2286]: RRQ from 192.168.136.246 filename bootx64.efi 5月 20 23:48:58 cobbler in.tftpd[2287]: RRQ from 192.168.136.246 filename /boot/vmlinuz 5月 20 23:49:04 cobbler in.tftpd[2288]: RRQ from 192.168.136.246 filename /boot/initrd.img
***Now, the uefi boot is done.
It’s not perfect.
Cuz in grub.cfg we need write nextserver ip & host ip,
And grub2-mkstandalone command write grub.cfg in bootx64.efi, cuz I change boot/grub/grub.cfg it’s. not working.
So now I working to grub lib, want find way to solve this 3 problem.If anybody working with grub/grub2, can give me some idea? thank you very much.***
- 136.200 install dhcpd
-
@xutianhong of just use refind which is meant to automatically use EFI?
-
@Tom-Elliott hi, i just google what is rEFInd. dose rEFInd support BIOS/EFI pxeboot?
-
@xutianhong I’m not sure I follow. Grub and rEFInd are exit types, to leave pxe and boot to HDD.
-
If you’re simply trying to boot an iso, ipxe supports this natively.
-
@Tom-Elliott very thank you. im try to test rEFInd to make sure is it suit for my env. i will reply later.
-
@Tom-Elliott thank you for ur advice, i found some figure way @ipxe site. now im search way to kindly combine ipxe with cobbler. the uefi ipxe boot install cost me lots of time cuz rhel73 have kernel bug. finally figure out too.
-
@xutianhong Can you explain what your trouble is? I read your first post and it was not clear, I think maybe the language translation.
Your first post make me think you are telling us what you find not asking for help.
-
@george1421 ok. i was using cobbler install redhat @ my work env. at first i found all works fine @ legacy bios. but when shift to UEFI. its’ not work good anymore. cobbler+dnsmasq.proxymode, msg freeze at option 47. i search google and found fog.wiki have advice dnsmasq need upgrade to 2.76. i do it. at this time , screen show grub>. then i search @ dnsmasq mail list and other website. find some way to figure this write in my first post. but it’s need write static ip&nextserver info to cfg, make standalone efi file. then Tom Elliott suggest ipxe & rEFInd.
-
@george1421 im sorry make u confuse, cuz my english was not good. maybe can’t describe clearly.
-
@xutianhong said in Dnsmasq bios and uefi:
need upgrade to 2.76. i do it. at this time , screen show grub>. then i search @ dnsmasq mail list and other website. find some way to figure this write in my first post.
What confuses me is you say dnsmasq and then grub. This is the confusion. dnsmasq is used to send the proper boot information to the target computer to get the target to load the FOG iPXE menu. Once the iPXE menu is displayed dnsmasq is no longer needed.
Once the iPXE menu is displayed you must make a menu pick within a few seconds or the iPXE menu picks boot from local hard drive to boot.
This is where the iPXE menu uses the (default) sanboot process for finding the hard drive on bios (legacy) computers. If your target computer is uefi then you can use grub, but most will use rEFInd to identify the boot partition on the hard drive. If rEFInd can’t find the boot partition you may need to adjust the refind.conf file to search more locations.
I want to be clear that if your target computer boots into the FOG iPXE menu then dnsmasq is working correctly.
If you are having a problem leaving the iPXE menu and booting from the local hard drive then this is an iPXE problem.