@aurfalien I’m right there with you. The iPXE menu can also do a if/then action but that is more limited than what you can do on the dhcp server side.
OK so it looks like your dhcp server is linux based and not via windows or third party.
So to my question, what is unique you can identify (from a computer standpoint) so your dhcp server knows which boot loader name to send out?
The method to take really depends on the number of clients you are looking at and what the uniqueness of the machines are.
When a client computer starts the DORA process for pxe booting it sends out a DISCOVER packet. That packet tells the dhcp server about the client. Those parameters can be used to customize the OFFER response back from the dhcp server.
Common parameters might be if the client is uefi or bios, or x64 or x32 architecture, mac address, or stripping out the manufacture from the mac address, or system UUID.
The simplest and most accurate method is to send the unique boot file based on the mac address.
for the standard isc dhcp server you would put in something that looks like this for each host. The host specific settings will override the pool options.
host myhost01{
hardware ethernet 00:11:22:33:44:55;
filename "undionly.kpxe";
}
host myhost02{
hardware ethernet 00:a1:b2:c3:d4:e5;
filename "ipxe.kpxe";
}
# General configuration for other clients
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
option routers 192.168.1.1;
filename "snponly.efi";
next-server 192.168.1.100;
}
While that is the most accurate and simplest to implement if you have just a few hosts, if you are dealing with 100s of hosts that might be challenging.
If your targets have multiple network adapters you could use the system UUID (if the vendor populates this field)
# Define a class for clients identified by a specific UUID
class "uuid-clients" {
match option dhcp-client-identifier;
}
# Host declaration for a specific client identified by its UUID
host myclient {
option dhcp-client-identifier = 0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f; # Replace with actual UUID
filename "ipxe.efi";
}
There are options but the path forward depends on the number of hosts you are trying to manage.