Dnsmasq bios and uefi


  • Moderator

    In an effort to see if I could get a proper configuration for dnsmasq to offer both bios (legacy) and uefi iPXE kernels to the booting target I came up with this after reading many (many) configuration docs.

    # 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
    
    # The boot filename, Server name, Server Ip Address
    # dhcp-boot=undionly.kpxe,,192.168.112.24
    
    # 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
    
    dhcp-vendorclass=BIOS,PXEClient:Arch:00000
    dhcp-vendorclass=UEFI32,PXEClient:Arch:00006
    dhcp-vendorclass=UEFI,PXEClient:Arch:00007
    dhcp-vendorclass=UEFI64,PXEClient:Arch:00009
    
    dhcp-boot=net:UEFI32,i386-efi/ipxe.efi,,192.168.112.24
    dhcp-boot=net:UEFI,ipxe.efi,,192.168.112.24
    dhcp-boot=net:UEFI64,ipxe.efi,,192.168.112.24
    dhcp-boot=net:BIOS,undionly.kpxe,,192.168.112.24
    
    # PXE menu.  The first part is the text displayed to the user.  The second is the timeout, in seconds.
    pxe-prompt="Press F8 for boot menu", 10
    
    # The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
    # Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_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
    # 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=192.168.112.24,proxy
    

    Running wireshark with the above configuration actually sent the right dhcp options to the target computer, but alas the target computer would not boot. Looking at the packet capture I can see the target send out the dhcp discover and both my home router and the dnsmasq device (fog server) respond. But the target never sent a dhcp request, it only started the process again sending a dhcp discover again.

    For clarity the FOG server and dnsmasq is running on my FOG-Pi server running raspbian jessie. Dnsmasq version is 2.72. The target computer is a Dell e6230 switched into uefi mode. In the above configuration file 192.168.112.24 is my dnsmasq/FOG-Pi server and my dhcp server is a home router running factory stock firmware.


  • Moderator

    @xutianhong I’m glad you have it working. Tom and I are very skilled with FOG. Since fog is built using many other linux parts we know those parts too. iPXE is a great tool if you want to use it.

    FOG also has a great pxe boot menu tool built in. I know some people install FOG just for pxe booting and don’t use FOG for computer imaging purposes.

    You may ask a question here, we will help if possible.



  • @Tom-Elliott google translate was good. :) if have any problem, can i ask here again?


  • Senior Developer

    @xutianhong I don’t know Chinese, but google has an awesome translate feature. It’s not perfect I understand, but should be clear enough to give an understanding of what we are trying to say.

    我不懂中文,但google有一个很棒的翻译功能。 这是不完美的我明白,但应该清楚,以了解我们正在试图说的话



  • @Tom-Elliott @george1421 thank you, im came up upon the post from a google search about dnsmasq&pxe boot question.
    this is not wok. screen show uefi setting menu. not grub> yet.

    pxe-service=BC_EFI,"BC_EFI",grub/grub-x86_64.efi --config-file=grub/efidefault,192.168.136.226
    

    this website advice used in my first post. but static network setting not useful.
    https://github.com/openSUSE/kiwi/wiki/Setup-PXE-boot-with-EFI-Using-GRUB2

    thank you @george1421 i tried ipxe, found it’s very powerful. i was working on it to try combine with cobbler.
    but it’s looks like redhat 7.3 have a kernel bug for ipxe uefi boot. http://forum.ipxe.org/showthread.php?tid=8243&pid=13314#pid13314
    finally solved.

    i come from China.:bow_tone2: u know chinese? :wink:
    thank you for ur help. both.~ 谢谢


  • Senior Developer


  • Senior Developer

    @xutianhong So are you using FOG and Cobbler together, or only came upon the post from a google search about a dnsmasq question? (I’m still willing to try to help, but this should be clear.)

    I don’t know you’re native language so I can’t really provide a translation to try to make this a little easier for you.


  • Moderator

    @xutianhong OK understand, I was confused because I think you use FOG and doing this.

    You can still do what you want if you look at it a bit differently. FOG uses a pxe boot loader called iPXE. That is similar to syslinux and grub. But iPXE is very feature rich.

    You can do what you are looking for if you know how to program your config menus.

    Here is my dnsmasq config file

    # 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
    
    # The boot filename, Server name, Server Ip Address
    dhcp-boot=undionly.kpxe,,<fog_server_IP>
    
    # 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:UEFI32,i386-efi/ipxe.efi,,<fog_server_IP>
    dhcp-boot=net:UEFI,ipxe.efi,,<fog_server_IP>
    dhcp-boot=net:UEFI64,ipxe.efi,,<fog_server_IP>
    
    # 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 and X86-64_EFI
    # This option is first and will be the default if there is no input from the user.
    pxe-service=X86PC, "Boot to FOG", undionly.kpxe
    pxe-service=X86-64_EFI, "Boot to FOG UEFI", ipxe.efi
    pxe-service=BC_EFI, "Boot to FOG UEFI PXE-BC", ipxe.efi
    
    dhcp-range=<fog_server_ip>,proxy
    

    You replace the <fog_server_ip> with your address of your tftp server.



  • @george1421 im not using FOG. only question about pxe booting. use this cuz cobbler default env. im not add/del extra file to it. if default can work. i dont want change any thing.:disappointed_relieved:


  • Moderator

    @xutianhong I have to ask are you using FOG or are you using FOG for pxe only, or are you not using fog and have a question about pxe booting?

    I would ask why you do it this way? I would not use grub but the iPXE menu instead.


  • Senior Developer

    @xutianhong and what does your grub line look like?

    I would imagine it needs to look at the config file directly.

    I don’t know if it can be done in dnsmasq but possibly:
    pxe-service=BC_EFI,"BC_EFI","grub/grub-x86_64.efi --config-file=grub/efidefault",192.168.136.226



  • @Tom-Elliott there no grub.cfg, only cobbler gen efidefault. ofcuz i copy efidefault to /grub.cfg & /boot/grub/grub.cfg, not work, same grub> msg.

    default=0
    timeout=0
    
    title centos6.0-x86_64
        root (nd)
        kernel /images/centos6.0-x86_64/vmlinuz  ksdevice=bootif lang=  kssendmac text  ks=http://192.168.136.226/cblr/svc/op/ks/profile/centos6.0-x86_64
        initrd /images/centos6.0-x86_64/initrd.img
    
    title centos7.2-x86_64
        root (nd)
        kernel /images/centos7.2-x86_64/vmlinuz  ksdevice=bootif lang=  kssendmac text  ks=http://192.168.136.226/cblr/svc/op/ks/profile/centos7.2-x86_64
        initrd /images/centos7.2-x86_64/initrd.img
    
    title rhel72-x86_64
        root (nd)
        kernel /images/rhel72-x86_64/vmlinuz  ksdevice=bootif lang=  kssendmac text  ks=http://192.168.136.226/cblr/svc/op/ks/profile/rhel72-x86_64
        initrd /images/rhel72-x86_64/initrd.img
    
    title rhel73-x86_64
        root (nd)
        kernel /images/rhel73-x86_64/vmlinuz  ksdevice=bootif lang=  kssendmac text  ks=http://192.168.136.226/cblr/svc/op/ks/profile/rhel73-x86_64
        initrd /images/rhel73-x86_64/initrd.img```

  • Senior Developer

    @xutianhong I say this because it appears from your directory tree there is no grub.cfg file.


  • Senior Developer

    @xutianhong what does the grub.conf look like?



  • @george1421 im not sure what happened. it’s looks like grub cant get cfg file?
    it’s my boot process.
    dhcp start @ 200
    tftp & dnsmasq.proxymode start @ 226 only use pxe+grub not ipxe&refind
    uefi client @ dhcp
    the tftproot tree blow this

    [root@cobbler tftpboot]# tree
    .
    |-- boot
    |   `-- grub
    |       `-- menu.lst
    |-- etc
    |-- grub
    |   |-- 01-00-50-56-2D-85-AB
    |   |-- 01-00-50-56-36-01-FD
    |   |-- C0A888FC
    |   |-- efidefault
    |   |-- grub-x86_64.efi
    |   |-- grub-x86.efi
    |   `-- images -> ../images
    |-- images
    |   |-- centos6.0-x86_64
    |   |   |-- initrd.img
    |   |   `-- vmlinuz
    |   |-- centos7.2-x86_64
    |   |   |-- initrd.img
    |   |   `-- vmlinuz
    |   |-- rhel72-x86_64
    |   |   |-- initrd.img
    |   |   `-- vmlinuz
    |   `-- rhel73-x86_64
    |       |-- initrd.img
    |       `-- vmlinuz
    |-- images2
    |-- memdisk
    |-- menu.c32
    |-- ppc
    |-- pxelinux.0
    |-- pxelinux.cfg
    |   |-- 01-00-50-56-2d-85-ab
    |   |-- 01-00-50-56-36-01-fd
    |   |-- C0A888FC
    |   `-- default
    |-- s390x
    |   `-- profile_list
    |-- uefi
    `-- yaboot
    

    the dnsmasq conf blow this

    # 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
    
    # 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
    #legacy bios options
    #pxe-service=X86PC,"Legacy",undionly.kpxe,192.168.136.226
    #vmware workstation 12 EFI options
    pxe-service=BC_EFI,"BC_EFI",grub/grub-x86_64.efi,192.168.136.226
    
    dhcp-range=192.168.136.200,proxy
    

    when uefi client power up, it’s show grub>
    0_1495490281367_1.jpg

    here is dhcp/tftp/dnsmasq log

    May 23 05:56:08 localhost dhcpd[844]: DHCPDISCOVER from 00:0c:29:87:09:d5 via ens33
    May 23 05:56:09 localhost dhcpd[844]: DHCPOFFER on 192.168.136.250 to 00:0c:29:87:09:d5 via ens33
    May 23 05:56:11 localhost dhcpd[844]: DHCPREQUEST for 192.168.136.250 (192.168.136.200) from 00:0c:29:87:09:d5 via ens33
    May 23 05:56:11 localhost dhcpd[844]: DHCPACK on 192.168.136.250 to 00:0c:29:87:09:d5 via ens33
    
    5月 23 05:56:12 cobbler xinetd[981]: START: tftp pid=38640 from=192.168.136.250
    5月 23 05:56:12 cobbler in.tftpd[38641]: RRQ from 192.168.136.250 filename grub/grub-x86_64.efi
    5月 23 05:56:12 cobbler in.tftpd[38642]: RRQ from 192.168.136.250 filename grub/grub-x86_64.efi
    
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 available DHCP subnet: 192.168.136.200/255.255.255.0
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 vendor class: PXEClient:Arch:00009:UNDI:003016
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 PXE(ens33) 00:0c:29:87:09:d5 proxy
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 tags: UEFI64, ens33
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 next server: 192.168.136.226
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 broadcast response
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 sent size:  1 option: 53 message-type  2
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 sent size:  4 option: 54 server-identifier  192.168.136.226
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
    5月 23 05:56:08 cobbler dnsmasq-dhcp[38636]: 2915677108 sent size: 17 option: 97 client-machine-id  00:56:4d:15:7a:51:36:e6:8f:fd:fe:4d:c4:27...
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 2915677108 available DHCP subnet: 192.168.136.200/255.255.255.0
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 2915677108 vendor class: PXEClient:Arch:00009:UNDI:003016
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 available DHCP subnet: 192.168.136.200/255.255.255.0
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 vendor class: PXEClient:Arch:00009:UNDI:003016
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 PXE(ens33) 00:0c:29:87:09:d5 proxy
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 tags: UEFI64, ens33
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 bootfile name: grub/grub-x86_64.efi
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 server name: 192.168.136.226
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 next server: 192.168.136.226
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 sent size:  1 option: 53 message-type  5
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 sent size:  4 option: 54 server-identifier  192.168.136.226
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
    5月 23 05:56:11 cobbler dnsmasq-dhcp[38636]: 3034770792 sent size: 17 option: 97 client-machine-id  00:56:4d:15:7a:51:36:e6:8f:fd:fe:4d:c4:27...
    

  • Moderator

    @xutianhong said in Dnsmasq bios and uefi:

    @george1421 im sorry make u confuse, cuz my english was not good. maybe can’t describe clearly.

    We can work together to find an answer, so no problem. We will take it slow to understand each other.


  • Moderator

    @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.



  • @george1421 im sorry make u confuse, cuz my english was not good. maybe can’t describe clearly.



  • @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.


  • Moderator

    @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.


Log in to reply
 

326
Online

38725
Users

10554
Topics

99911
Posts

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.