Dell Optiplex 3080 - UEFI - PXE Boot E-21: Remote boot cancelled.
-
Hello,
I’ve recently set up a new FOG server in my environment running on CentOS 7
I cannot PXE boot any Dell Optiplex 3080 with Secure Boot off and SATA operation set to ACHI. I get an IP address, begin to boot and get hit with PXE Boot E-21: Remote boot cancelled.
The machines do not have any legacy bios.
Fog Version: 1.5.9
bzImage Version: 5.10.34
bzImage32 Version: 5.10.34I’m using dnsmasq as I’m not able to modify my DHCP settings. Here is my config:
#------------------------------------ # 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.x.x.x # 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,,192.x.x.x dhcp-boot=net:UEFI,ipxe.efi,,192.x.x.x dhcp-boot=net:UEFI64,ipxe.efi,,192.x.x.x # PXE menu. The first part is the text displayed to the user. The second is the timeout, in seconds. pxe-prompt="Booting FOG Client", 3 # 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=192.x.x.x,proxy #Subnet has no dhcp for last 55 addresses so dnsmasq is assigning those dhcp-range=192.x.x.200,192.x.xx.254,30m #---------------------------------
Here are my fog settings:
## Start of FOG Settings ## Created by the FOG Installer ## Find more information about this file in the FOG Project wiki: ## https://wiki.fogproject.org/wiki/index.php?title=.fogsettings ## Version: 1.5.9 ## Install time: Tue 08 Jun 2021 04:01:47 PM EDT ipaddress='192.x.x.x' copybackold='0' interface='eno2' submask='255.255.255.0' hostname='<Hostname>' routeraddress='' plainrouter='' dnsaddress='' username='<redacted>' password='<redacted>' osid='1' osname='Redhat' dodhcp='N' bldhcp='0' dhcpd='dhcpd' blexports='1' installtype='N' snmysqluser='<redacted>' snmysqlpass='<redacted>' snmysqlhost='localhost' mysqldbname='fog' installlang='0' storageLocation='/images' fogupdateloaded=1 docroot='/var/www/html/' webroot='/fog/' caCreated='yes' httpproto='http' startrange='192.x.x.10' endrange='192.x.x.254' bootfilename='undionly.kpxe' packages='bc curl gcc gcc-c++ genisoimage git gzip httpd lftp m4 make mariadb mariadb-server mod_ssl mtools net-tools nfs-utils php php-bcmath php-cli php-common php-fpm php-gd php-ldap php-mbstring php-mysqlnd php-process syslinux tar $ noTftpBuild='' sslpath='/opt/fog/snapins/ssl/' backupPath='/home/' armsupport='' php_ver='' php_verAdds='' sslprivkey='/opt/fog/snapins/ssl//.srvprivate.key' ## End of FOG Settings
I’ve rerun installation a few times.
I’ve tried modifying my dnsmasq.conf using all the methods I could find in the forumsAdditional information:
I installed using this page: https://wiki.fogproject.org/wiki/index.php?title=CentOS_7
I migrated settings using this wiki page: https://wiki.fogproject.org/wiki/index.php?title=Migrate_FOG
I built my dnsmasq config primarily with this page: https://wiki.fogproject.org/wiki/index.php?title=ProxyDHCP_with_dnsmasqLast note: This works with my old server. FOG on a CentOS VM. Same versions across the board. I don’t know what the difference could be.
Any help or suggestions are appreciated.
-
@jarvizu said in Dell Optiplex 3080 - UEFI - PXE Boot E-21: Remote boot cancelled.:
#dhcp-range=192.x.x.x,proxy
#Subnet has no dhcp for last 55 addresses so dnsmasq is assigning those
dhcp-range=192.x.x.200,192.x.xx.254,30mFirst this section is wrong because we don’t want the FOG server issuing IP addresses. We use the (currently commented out) proxy statement to only supply the pxe boot info to the target computer, everything else comes from your main dhcp server.
DNSMAQ is a swiss army knife of network services. You have to be careful to not turn on things more than you need.
So is your FOG server and pxe booting clients on the same subnet?
-
@jarvizu said in Dell Optiplex 3080 - UEFI - PXE Boot E-21: Remote boot cancelled.:
Last note: This works with my old server. FOG on a CentOS VM.
Also exact same dnsmasq.conf??
Maybe there is another DHCP/PXE server in your new network setup that is causing the issue?
-
@george1421 FOG and PXE Boot clients are both on the same subnet. That subnet does not do any DHCP hence the desire for DNSMASQ to dish it out for me.
Previous FOG server did it this way with no issues.
I can swap it around in my ltsp.conf, but it still get past the
Start PXE over IPv4 on MAC: xx-xx-xx-xx
-
@sebastian-roth Exact same dnsmasq.conf which is just the default. Only ever modified the
/etc/dnsmasq.d/ltsp.conf
file on both servers.The original FOG vm was running on an ESXi box however. Not sure if that makes much of a difference.
-
@jarvizu OK then lets see what is flying down the wire here. Use the FOG server to capture the pxe booting process. I have a tutorial here: https://forums.fogproject.org/topic/9673/when-dhcp-pxe-booting-process-goes-bad-and-you-have-no-clue
Upload the pcap to a file share site and post the link here. We’ll take a look at the pcap to see what is going wrong.
Side note: If your network doesn’t have a dhcp server I would personally use isc-dhcp server on your fog server over dnsmasq. I would use dnsmasq if you have a dhcp server run by someone else and can’t update settings. In this case dnsmasq would supplement your unchangeable dhcp server.
-
@george1421 said in Dell Optiplex 3080 - UEFI - PXE Boot E-21: Remote boot cancelled.:
Side note: If your network doesn’t have a dhcp server I would personally use isc-dhcp server on your fog server over dnsmasq. I would use dnsmasq if you have a dhcp server run by someone else and can’t update settings. In this case dnsmasq would supplement your unchangeable dhcp server.
THANK YOU!
I set up isc-dhcp and it’s working like a charm.
For any future people reading:
I modified/etc/dhcp/dhcp.conf
with the below config.
I disabled dnsmasq.systemctl stop dnsmasq.service
I started isc-dhcpservice dhcpd start
I tsuccessfully PXE booted with my Dell 3080 a few times.
I permanently disabled dnsmasq.systemctl disable dnsmasq
I set isc-dhcp to start automatically.systemctl enable dhcpd
option space PXE; option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option arch code 93 = unsigned integer 16; # RFC4578 use-host-decl-names on; ddns-update-style interim; ignore client-updates; next-server 192.x.x.7; authoritative; subnet 192.x.x.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; range dynamic-bootp 192.x.x.200 192.x.x.254; default-lease-time 21600; max-lease-time 43200; option domain-name-servers 192.x.x.7; option routers 192.x.x.7; class "UEFI-32-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006"; filename "i386-efi/ipxe.efi"; } class "UEFI-32-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00002"; filename "i386-efi/ipxe.efi"; } class "UEFI-64-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007"; filename "ipxe.efi"; } class "UEFI-64-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00008"; filename "ipxe.efi"; } class "UEFI-64-3" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009"; filename "ipxe.efi"; } class "Legacy" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000"; filename "undionly.kkpxe"; } }