Skip to content

Instantly share code, notes, and snippets.

@Roxedus
Last active April 23, 2025 21:05
Show Gist options
  • Save Roxedus/08a1351e4c092b7527a8830dd3456d7b to your computer and use it in GitHub Desktop.
Save Roxedus/08a1351e4c092b7527a8830dd3456d7b to your computer and use it in GitHub Desktop.
Netboot.xyz Talos unattended
  1. Set up netboot.xyz
    • I used linuxserver/netbootxyz
  2. Grab assets.
    • You can serve these however you like, I used the built-in asset mechanic in the docker image
    • grab-talos.sh quick helper to download the kernel and the initramfs
    • I also placed the worker and controlplane defintions for Talos here
  3. Set up ipxe files.
    • Netboot.xyz supports auto-loading based on MAC address and hostname from dhcp. sourcecode
      • HOSTNAME- or MAC- prefixes.
      • The MAC address is without colons in the filename
  4. Boot
#!/bin/bash
# Download from factory
ID=
VERSION=v1.7.0
curl -o kernel-amd64 https://factory.talos.dev/image/$ID/$VERSION/kernel-amd64
curl -o initramfs-amd64.xz https://factory.talos.dev/image/$ID/$VERSION/initramfs-amd64.xz
#!ipxe
set talos_type controlplane
chain talos-unattended.ipxe
#!ipxe
goto talos
:talos
set os Talos
set os_arch x86_64
iseq ${os_arch} x86_64 && set os_arch amd64 ||
iseq ${os_arch} arm64 && set os_arch arm64 ||
isset ${talos_mirror} || set talos_mirror http://192.168.0.2:8080
isset ${talos_type} || set talos_type worker
#echo Mirror URL: ${talos_mirror}
#echo Mirror Type: ${talos_type}
#prompt Press any key to continue
goto talos_boot
:talos_boot
isset ${talos_base_url} || set talos_base_url ${talos_mirror}
isset ${talos_config_url} && set talos_config talos.config=${talos_config_url}.yaml ||
set boot_params printk.devkmsg=on slab_nomerge pti=on console=ttyS0 console=tty0 init_on_alloc=1 init_on_free=1 consoleblank=0 nvme_core.io_timeout=4294967295 ima_template=ima-ng ima_appraise=fix ima_hash=sha512 talos.platform=metal ${talos_config} initrd=initrd.magic ${cmdline}
imgfree
kernel ${talos_base_url}/kernel-${os_arch} ${boot_params}
initrd ${talos_base_url}/initramfs-${os_arch}.xz
echo
echo Booting with the following kernel args:
echo ${boot_params}
echo
echo MD5sums:
md5sum kernel-${os_arch} initramfs-${os_arch}.xz
boot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment