Initial support for Kairos

Supports Kairos Core images in the various platforms available
This commit is contained in:
Antony Messerli 2025-03-08 20:18:53 -06:00
parent f1644a9cc8
commit 5c541981ad
3 changed files with 123 additions and 0 deletions

View file

@ -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 |

View file

@ -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

View file

@ -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