#!ipxe # GTX Gaming - network boot menu http://boot.gtx.gg/boot.ipxe # # Design notes: # * The GTX server LAN has NO DHCP (static public IPs), so this script asks # for the address rather than relying on dhcp, and passes the same values # through to each installer - otherwise they stall retrying DHCP. # * Kernels/initrds/ISOs are pulled over plain HTTP from this server: they # are public, it avoids iPXE TLS-trust failures, and it is faster. # Only the installer configs (which carry credentials) use HTTPS. # * Nothing large goes through the NanoKVM - only the 2.4 MB boot image. # The machine downloads the installer over its own NIC. # Fetch by IP, not hostname: removes DNS as a dependency for the boot chain, # and 89.34.97.21 is on the same /27 as the servers so it never crosses the gateway. set base http://89.34.97.21 set cfg https://boot.gtx.gg/cfg/b65faec73d7bb0b44a27d078f895ef29 :netcheck isset ${net0/ip} && goto start || echo Trying DHCP... dhcp && goto start || echo No DHCP on this network - static configuration required. goto static :static echo echo === Static network configuration === echo Example: 89.34.97.10 / 255.255.255.224 / gw 89.34.97.1 echo echo -n IP address : ${} && read cfgip echo -n Netmask : ${} && read cfgmask echo -n Gateway : ${} && read cfggw echo -n DNS : ${} && read cfgdns set net0/ip ${cfgip} set net0/netmask ${cfgmask} set net0/gateway ${cfggw} set net0/dns ${cfgdns} ifopen net0 || goto netfail echo Testing ${cfgip} ... ping --count 1 ${cfggw} && goto start || goto netfail :netfail echo echo Network setup failed - check the values, cabling and VLAN. echo Dropping to the iPXE shell; type "exit" to return. shell goto netcheck :start menu GTX Gaming - Network Boot [${net0/ip}] item --gap -- Unattended (WIPES the target disk) item ubuntu Ubuntu Server 24.04.4 LTS item debian Debian 13 (Trixie) item --gap -- Interactive item nbxyz netboot.xyz - full OS menu / rescue tools item --gap -- Other item netcfg Reconfigure network item shell iPXE shell item reboot Reboot item local Boot from local disk choose --default ubuntu --timeout 30000 target && goto ${target} :netcfg goto static # Ubuntu: casper fetches the full ISO from this server over HTTP. :ubuntu echo Booting Ubuntu 24.04.4 - target disk WILL be wiped kernel ${base}/netboot/ubuntu/vmlinuz || goto start initrd ${base}/netboot/ubuntu/initrd || goto start imgargs vmlinuz initrd=initrd ip=${net0/ip}::${net0/gateway}:${net0/netmask}:::off nameserver=${net0/dns} url=${base}/iso/ubuntu-24.04.4-live-server-amd64.iso autoinstall ds=nocloud-net;s=${cfg}/ubuntu/ --- boot || goto start # Debian: official netboot kernel + initrd (52 MB), preseeded. :debian echo Booting Debian 13 - target disk WILL be wiped kernel ${base}/netboot/debian/linux || goto start initrd ${base}/netboot/debian/initrd.gz || goto start imgargs linux initrd=initrd.gz auto=true priority=critical netcfg/disable_autoconfig=true netcfg/get_ipaddress=${net0/ip} netcfg/get_netmask=${net0/netmask} netcfg/get_gateway=${net0/gateway} netcfg/get_nameservers=${net0/dns} netcfg/confirm_static=true preseed/url=${cfg}/debian/preseed.cfg --- boot || goto start :nbxyz chain --autofree https://boot.netboot.xyz || goto start :shell shell && goto start :reboot reboot :local exit