Menu

UEFI PXE boot possible w/ dnsmasq?

2020-11-06
2020-11-13
  • Paul LaClair

    Paul LaClair - 2020-11-06

    Scenario: Standalone CentOS dhcp server running w/ standalone CentOS drbl/clonezilla server.

    I have dnsmasq seemingly properly configured, and DRBL and Clonezilla have long worked great with BIOS PXE clients.

    We are seeing an influx of workstations that no longer offer any BIOS booting, they are UEFI only. These clients start to PXE boot, and they display the message "Media Present...Downloading NBP file...Succeed to download NBP file," after which time PXE booting bails and I am asked to reboot or enter the workstation's UEFI setup.

    I've spent hours reading up on this, and I seem to have done everything correctly, but I also see some references to the fact that UEFI PXE booting may not work if dhcp isn't performed by the DRBL server itself.

    Can anyone confirm whether or not UEFI PXE booting will work with dnsmasq?

    Thank you in advance!

     
  • Steven Shiau

    Steven Shiau - 2020-11-08

    UEFI PXE booting definitely works with dnsmasq. For Clonezilla lite server we use that. You can find a VM and give Clonezilla lite server a try:
    https://clonezilla.org/show-live-doc-content.php?topic=clonezilla-live/doc/11_lite_server

    Steven

     
    • Paul LaClair

      Paul LaClair - 2020-11-13

      Thanks for the reply. It turns out that this was more of a DHCP configuration issue than anything else.

      My subnet config included this:

      > class "pxeclients" {
      >           match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
      >           next-server 192.168.X.X;
      > 
      >           if option architecture-type = 00:07 {
      >             filename "bootx64.efi";
      >             } else if option architecture-type = 00:09 {
      >             filename "bootx64.efi";
      >             } else {
      >             filename "pxelinux.0";
      >         }
      >     }
      

      Changing it to this got everything working:

      class "pxeclients" {
                match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
                next-server 192.168.X.X;
      
                if option architecture-type = 00:00 {
                  filename "pxelinux.0";
                  } else if option architecture-type = 00:07 {
                  filename "bootx64.efi";
                  } else if option architecture-type = 00:09 {
                  filename "bootx64.efi";
                  } else {
                  filename "bootx64.efi";
              }
          }
      

      Just posting as a follow-up in case it helps anyone else out.

       
      👍
      1

Log in to post a comment.