talos.ipxe.j2 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!ipxe
  2. # Talos
  3. # https://github.com/siderolabs/talos/releases
  4. # https://www.talos.dev/v1.6/talos-guides/install/bare-metal-platforms/pxe
  5. goto ${menu} ||
  6. :talos
  7. set os {{ releases.talos.name }}
  8. set os_arch ${arch}
  9. iseq ${os_arch} x86_64 && set os_arch amd64 ||
  10. iseq ${os_arch} arm64 && set os_arch arm64 ||
  11. isset ${talos_version} || set talos_version latest
  12. isset ${talos_mirror} || set talos_mirror {{ releases.talos.mirror }}
  13. isset ${talos_platform} || set talos_platform metal
  14. menu ${os} by Talos Systems
  15. menu ${os} install
  16. item --gap Talos:
  17. item talos_boot ${space} Begin install ${os} ${talos_version}
  18. item --gap Parameters:
  19. item talos_version ${space} ${os} version: ${talos_version}
  20. item talos_config_url ${space} Set userdata.yaml URL: ${talos_config_url}
  21. item talos_mirror ${space} Set mirror URL: ${talos_mirror}
  22. item talos_platform ${space} Set platform: ${talos_platform}
  23. choose --default ${menu} menu || goto talos_exit
  24. echo ${cls}
  25. goto ${menu} ||
  26. goto talos_exit
  27. :talos_version
  28. menu ${os} version
  29. item latest ${space} latest
  30. item custom ${space} Set custom version
  31. choose --default ${version} version || goto talos_exit
  32. echo ${cls}
  33. goto talos_version_${version} ||
  34. goto talos_exit
  35. :talos_version_latest
  36. set talos_version latest
  37. set talos_base_url ${talos_mirror}/latest/download
  38. goto talos
  39. :talos_version_custom
  40. clear talos_version
  41. echo -n Please set Talos version manually (in format vX.Y.Z): && read talos_version
  42. set talos_base_url ${talos_mirror}/download/${talos_version}
  43. clear menu
  44. goto talos
  45. :talos_mirror
  46. echo -n Set mirror URL: && read talos_mirror
  47. clear menu
  48. goto talos
  49. :talos_config_url
  50. echo -n Set userdata.yaml URL: && read talos_config_url
  51. clear menu
  52. goto talos
  53. # https://www.talos.dev/latest/reference/kernel/#talosplatform
  54. :talos_platform
  55. menu ${os} platforms
  56. {% for item in releases.talos.platforms %}
  57. item {{ item.key }} ${space} {{ item.name }}
  58. {% endfor %}
  59. choose --default ${talos_platform} talos_platform
  60. goto talos
  61. # https://www.talos.dev/latest/reference/kernel/
  62. :talos_boot
  63. isset ${talos_base_url} || set talos_base_url ${talos_mirror}/latest/download
  64. isset ${talos_config_url} && set talos_config talos.config=${talos_config_url} ||
  65. {# Edit releases.talos.custom_kernel_params in main.yml for custom kernel params #}
  66. {% if releases.talos.custom_kernel_params is defined and releases.talos.custom_kernel_params %}
  67. set boot_params {{ releases.talos.custom_kernel_params }}
  68. {% else %}
  69. 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=${talos_platform} ${talos_config} initrd=initrd.magic ${cmdline}
  70. {% endif %}
  71. imgfree
  72. kernel ${talos_base_url}/vmlinuz-${os_arch} ${boot_params}
  73. initrd ${talos_base_url}/initramfs-${os_arch}.xz
  74. echo
  75. echo Booting with the following kernel args:
  76. echo ${boot_params}
  77. echo
  78. echo MD5sums:
  79. md5sum vmlinuz-${os_arch} initramfs-${os_arch}.xz
  80. boot
  81. :talos_exit
  82. clear menu
  83. exit 0