Question to A:I. "UEFI pxelinux.0". The A.I. answer was like:
"- pxelinux.0 is the PXE network boot loader exclusively for Legacy BIOS architecture. It does not work on UEFI systems.
- For UEFI network booting, you must use syslinux.efi (or pxelinux.efi) combined with the appropriate architecture-aware DHCP configuration".
Setting Up UEFI PXE Boot: To support both legacy and UEFI machines, your DHCP and PXE servers must be able to recognize the client's architecture (using Option 93) and serve the correct boot file.
1. Required UEFI Boot Files: Instead of relying on pxelinux.0, you will need to download and use the UEFI-compatible syslinux files:
- 64-bit UEFI: syslinux.efi (sometimes named pxelinux.efi)
- 32-bit UEFI: syslinux.efi (32-bit) -- (aka EFI=UEFI1 for MacOS)
These files are typically found in the syslinux installation directory on your server or can be downloaded from the Syslinux Wiki.
2. Configure Your DHCP Server: Modern DHCP servers (such as dnsmasq or ISC DHCP) can dynamically detect if a client is Legacy BIOS or UEFI and serve the correct file automatically. Example dnsmasq configuration: # Legacy BIOS (Architecture 0)
dhcp-boot=tag:bios,pxelinux.0,server_ip,server_ip
# UEFI 64-bit (Architecture 7 or 9)
dhcp-boot=tag:uefi64,syslinux.efi,server_ip,server_ip
3. Directory Structure: (Unlike BIOS, which reads configurations directly from the pxelinux.cfg/ root), UEFI setups often require a specific directory structure for loading menus and images.
- Place your syslinux.efi in your TFTP root directory.
- Place your pxelinux.cfg/ folder in the same TFTP directory so the boot-loader can read your configuration menu (e.g., default).
FYI: this info was not in TC wiki, so I thought is worth to mention this for (modern) UEFI only machines.