Browse Source

Initial support for Kairos

Supports Kairos Core images in the various platforms available
Antony Messerli 1 month ago
parent
commit
5c541981ad
3 changed files with 123 additions and 0 deletions
  1. 1 0
      README.md
  2. 29 0
      roles/netbootxyz/defaults/main.yml
  3. 93 0
      roles/netbootxyz/templates/menu/kairos.ipxe.j2

+ 1 - 0
README.md

@@ -146,6 +146,7 @@ In addition to being able to host netboot.xyz locally, you can also create your
 | hrmpf | https://github.com/leahneukirchen/hrmpf/ | No | Yes |
 | IPFire | https://www.ipfire.org | Yes | No |
 | K3OS | https://k3os.io/ | Yes | Yes |
+| Kairos | https://kairos.io/ | Yes | No |
 | Kali Linux | https://www.kali.org | Yes | Yes |
 | KDE Neon | https://neon.kde.org | No | Yes |
 | Kodachi | https://www.digi77.com/linux-kodachi/ | No | Yes |

+ 29 - 0
roles/netbootxyz/defaults/main.yml

@@ -293,6 +293,35 @@ releases:
     versions:
     - code_name: 2.29-core191
       name: 2.29 Core191
+  kairos:
+    enabled: true
+    menu: linux
+    mirror: https://github.com/kairos-io/kairos/releases
+    name: Kairos
+    version: v3.3.1
+    platforms:
+    - key: alpine-3.19
+      name: Alpine Linux 3.19
+    - key: debian-bookworm
+      name: Debian Bookworm
+    - key: debian-testing
+      name: Debian Testing
+    - key: fedora-40
+      name: Fedora 40
+    - key: opensuse-leap-15.6
+      name: openSUSE Leap 15.6
+    - key: openstack-tumbleweed
+      name: Openstack Tumbleweed
+    - key: rockylinux-9
+      name: Rocky Linux 9
+    - key: ubuntu-20.04
+      name: Ubuntu 20.04
+    - key: ubuntu-22.04
+      name: Ubuntu 22.04
+    - key: ububtu-24.04
+      name: Ubuntu 24.04
+    - key: ubuntu-24.10
+      name: Ubuntu 24.10
   k3os:
     enabled: true
     menu: linux

+ 93 - 0
roles/netbootxyz/templates/menu/kairos.ipxe.j2

@@ -0,0 +1,93 @@
+#!ipxe
+
+# Kairos
+# https://github.com/kairos-io/kairos/releases
+
+goto ${menu} ||
+
+:kairos
+#set os {{ releases.kairos.name }}
+set os Kairos
+set os_arch ${arch}
+iseq ${os_arch} x86_64 && set os_arch amd64 ||
+isset ${kairos_version} || set kairos_version {{ releases.kairos.version }}
+# isset ${kairos_mirror} || set kairos_mirror {{ releases.kairos.mirror }}
+isset ${kairos_mirror} || set kairos_mirror https://github.com/kairos-io/kairos/releases
+isset ${kairos_platform} || set kairos_platform {{ releases.kairos.platforms[0].key }}
+isset ${kairos_mode} || set kairos_mode install-mode-interactive 
+
+menu ${os}
+item --gap Kairos:
+item kairos_boot ${space} Begin install ${os} ${kairos_version}
+item --gap Parameters:
+item kairos_version ${space} ${os} version: ${kairos_version}
+item kairos_mode ${space} Set install mode: ${kairos_mode}
+item kairos_config_url ${space} Set config file URL: ${kairos_config_url}
+item kairos_mirror ${space} Set mirror URL: ${kairos_mirror}
+item kairos_platform ${space} Set platform: ${kairos_platform}
+choose --default ${menu} menu || goto kairos_exit
+echo ${cls}
+goto ${menu} ||
+goto kairos_exit
+
+:kairos_version
+menu ${os} version
+item latest ${space} ${kairos_version}
+item custom ${space} Set custom version
+choose --default ${version} version || goto kairos_exit
+echo ${cls}
+goto kairos_version_${version} ||
+goto kairos_exit
+
+:kairos_mode
+menu ${os} Modes
+item install-mode-interactive Interactive Install Mode
+item install-mode Regular Install Mode
+item kairos.remote_recovery_mode Remote Recovery Mode
+choose --default ${kairos_mode} kairos_mode
+goto kairos
+
+:kairos_version_latest
+set kairos_version latest
+set kairos_base_url ${kairos_mirror}/latest/download
+goto kairos
+
+:kairos_version_custom
+clear kairos_version
+echo -n Please set Kairos version manually (in format vX.Y.Z):  && read kairos_version
+set kairos_base_url ${kairos_mirror}/download/${kairos_version}
+clear menu
+goto kairos
+
+:kairos_mirror
+echo -n Set mirror URL:  && read kairos_mirror
+clear menu
+goto kairos
+
+:kairos_config_url
+echo -n Set config file URL:  && read kairos_config_url
+clear menu
+goto kairos
+
+:kairos_platform
+menu ${os} platforms
+{% for item in releases.kairos.platforms %}
+item {{ item.key }} ${space} {{ item.name }}
+{% endfor %}
+choose --default ${kairos_platform} kairos_platform
+goto kairos
+
+:kairos_boot
+imgfree
+set release_prefix ${kairos_mirror}/download/${kairos_version}/kairos-${kairos_platform}-core-${os_arch}-generic-${kairos_version}
+kernel ${release_prefix}-kernel root=live:${release_prefix}.squashfs rd.neednet=1 ip=dhcp rd.cos.disable netboot ${kairos_mode} config_url=${kairos_config_url} console=tty1 console=ttyS0 ${cmdline} initrd=initrd.magic
+initrd ${release_prefix}-initrd
+
+echo
+echo MD5sums:
+md5sum kairos-${kairos_platform}-core-${os_arch}-generic-${kairos_version}-kernel kairos-${kairos_platform}-${kairos_flavor}-${os_arch}-generic-${kairos_version}-initrd
+boot
+
+:kairos_exit
+clear menu
+exit 0