| @@ -0,0 +1,95 @@ | |||
| 1 | + | #!/bin/sh | |
| 2 | + | # | |
| 3 | + | # Regenerate UniFi PXE override for netboot.xyz - with BIOS and UEFI support | |
| 4 | + | # Run at boot using on-boot-script-2.x | |
| 5 | + | # (see https://github.com/unifi-utilities/unifios-utilities/tree/main/on-boot-script-2.x) | |
| 6 | + | # for Ubiquiti UCG Fiber | |
| 7 | + | # | |
| 8 | + | ||
| 9 | + | OUT="/run/dnsmasq.dhcp.conf.d/99-pxe-netbootxyz.conf" | |
| 10 | + | ||
| 11 | + | # Wait until UniFi has generated DHCP configs | |
| 12 | + | i=0 | |
| 13 | + | while [ ! -d /run/dnsmasq.dhcp.conf.d ] && [ $i -lt 30 ]; do | |
| 14 | + | sleep 1 | |
| 15 | + | i=$((i+1)) | |
| 16 | + | done | |
| 17 | + | ||
| 18 | + | cat > "$OUT" << 'EOF' | |
| 19 | + | # ========================================================== | |
| 20 | + | # 99-pxe-netbootxyz.conf | |
| 21 | + | # UniFi-safe PXE override for MY_LAN (br20) | |
| 22 | + | # | |
| 23 | + | # Explicitly overrides UniFi-generated dhcp-boot | |
| 24 | + | # Works with BIOS, UEFI, and UEFI64 clients | |
| 25 | + | # ========================================================== | |
| 26 | + | ||
| 27 | + | log-dhcp | |
| 28 | + | ||
| 29 | + | # ---------------------------------------------------------- | |
| 30 | + | # Architecture detection (RFC 4578) | |
| 31 | + | # ---------------------------------------------------------- | |
| 32 | + | # 0 = Legacy BIOS | |
| 33 | + | # 7 = UEFI (IA32) | |
| 34 | + | # 9 = UEFI64 (x86_64) | |
| 35 | + | ||
| 36 | + | dhcp-match=set:BIOS,option:client-arch,0 | |
| 37 | + | dhcp-match=set:UEFI,option:client-arch,7 | |
| 38 | + | dhcp-match=set:UEFI64,option:client-arch,9 | |
| 39 | + | ||
| 40 | + | # ---------------------------------------------------------- | |
| 41 | + | # Optional: detect iPXE (future use) | |
| 42 | + | # ---------------------------------------------------------- | |
| 43 | + | dhcp-userclass=set:ipxe,iPXE | |
| 44 | + | ||
| 45 | + | # ---------------------------------------------------------- | |
| 46 | + | # VLAN tag (UniFi autogenerated) | |
| 47 | + | # ---------------------------------------------------------- | |
| 48 | + | # net_MY_LAN_br20_10-20-28-0-22 | |
| 49 | + | # ---------------------------------------------------------- | |
| 50 | + | # VLAN tag notes (UniFi autogenerated) | |
| 51 | + | # | |
| 52 | + | # UniFi creates one dnsmasq tag per network in the form: | |
| 53 | + | # net_<NAME>_<bridge>_<subnet> | |
| 54 | + | # | |
| 55 | + | # To discover available tags, run on the gateway: | |
| 56 | + | # grep -R "dhcp-range=set:net_" /run/dnsmasq.dhcp.conf.d/ | |
| 57 | + | # | |
| 58 | + | # Example output: | |
| 59 | + | # dhcp-range=set:net_MY_LAN_br20_10-20-28-0-22,... | |
| 60 | + | # dhcp-range=set:net_GuestNet_br4001_192-168-28-0-24,... | |
| 61 | + | # | |
| 62 | + | # Use the FULL tag string (exact match) in dhcp-boot lines | |
| 63 | + | # to scope PXE behavior to that specific network only. | |
| 64 | + | # ---------------------------------------------------------- | |
| 65 | + | ||
| 66 | + | # ---------------------------------------------------------- | |
| 67 | + | # BIOS clients -> chainload iPXE (kpxe) | |
| 68 | + | # ---------------------------------------------------------- | |
| 69 | + | dhcp-boot=tag:net_MY_LAN_br20_10-20-28-0-22,tag:BIOS,netboot.xyz.kpxe,,10.20.28.219 | |
| 70 | + | ||
| 71 | + | # ---------------------------------------------------------- | |
| 72 | + | # UEFI / UEFI64 clients -> native EFI loader | |
| 73 | + | # ---------------------------------------------------------- | |
| 74 | + | dhcp-boot=tag:net_MY_LAN_br20_10-20-28-0-22,tag:UEFI,netboot.xyz.efi,,10.20.28.219 | |
| 75 | + | dhcp-boot=tag:net_MY_LAN_br20_10-20-28-0-22,tag:UEFI64,netboot.xyz.efi,,10.20.28.219 | |
| 76 | + | ||
| 77 | + | # ---------------------------------------------------------- | |
| 78 | + | # Safety net: explicit 66/67 for noisy firmware | |
| 79 | + | # ---------------------------------------------------------- | |
| 80 | + | dhcp-option=tag:net_MY_LAN_br20_10-20-28-0-22,tag:BIOS,66,10.20.28.219 | |
| 81 | + | dhcp-option=tag:net_MY_LAN_br20_10-20-28-0-22,tag:BIOS,67,"netboot.xyz.kpxe" | |
| 82 | + | ||
| 83 | + | dhcp-option=tag:net_MY_LAN_br20_10-20-28-0-22,tag:UEFI,66,10.20.28.219 | |
| 84 | + | dhcp-option=tag:net_MY_LAN_br20_10-20-28-0-22,tag:UEFI,67,"netboot.xyz.efi" | |
| 85 | + | ||
| 86 | + | dhcp-option=tag:net_MY_LAN_br20_10-20-28-0-22,tag:UEFI64,66,10.20.28.219 | |
| 87 | + | dhcp-option=tag:net_MY_LAN_br20_10-20-28-0-22,tag:UEFI64,67,"netboot.xyz.efi" | |
| 88 | + | EOF | |
| 89 | + | ||
| 90 | + | # Reload dnsmasq cleanly | |
| 91 | + | if [ -f /run/dnsmasq-main.pid ]; then | |
| 92 | + | kill -HUP "$(cat /run/dnsmasq-main.pid)" | |
| 93 | + | fi | |
| 94 | + | ||
| 95 | + | exit 0 | |
ergosteur / pxe-netbootxyz.sh
Last active 1 month ago
BIOS and UEFI PXE configuration script for dnsmasq on Unifi Cloud Gateway