From 5a8bec572e59547348819522783e115a395b4b70 Mon Sep 17 00:00:00 2001 From: rickpeters Date: Tue, 29 Sep 2026 16:52:29 +0200 Subject: [PATCH 1/6] fix: systemd-boot gets its EFI boot entry (bootctl skips the EFI variables in the installer's chroot) --- archiso/airootfs/usr/local/bin/steamify-install | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/archiso/airootfs/usr/local/bin/steamify-install b/archiso/airootfs/usr/local/bin/steamify-install index 5544fb9..38db51c 100755 --- a/archiso/airootfs/usr/local/bin/steamify-install +++ b/archiso/airootfs/usr/local/bin/steamify-install @@ -20,6 +20,13 @@ for id in ${choice//,/ }; do *) options+="${options:+,}$id" ;; esac done +# systemd-boot: cachyos-installer runs `bootctl install` in a chroot, and bootctl leaves the EFI +# variables alone there: no "Linux Boot Manager" boot entry, so the firmware tries the network and +# its other entries first and finds the disk's fallback path last (or never). Register it now. +if [[ -n "$root" && -f "$root/boot/EFI/systemd/systemd-bootx64.efi" && -d /sys/firmware/efi/efivars ]]; then + arch-chroot "$root" bootctl --esp-path=/boot --variables=yes install > "$root/var/log/steamify-bootentry.log" 2>&1 + arch-chroot "$root" efibootmgr >> "$root/var/log/steamify-bootentry.log" 2>&1 +fi log="$root/var/log/steamify-install.log" rule="$root/etc/sudoers.d/zz-steamify-install" [[ -d "$root" && -n "$user" ]] || exit 0 From 40a6b896100fecd04251d62e74f3320828821e1c Mon Sep 17 00:00:00 2001 From: rickpeters Date: Tue, 29 Sep 2026 16:54:20 +0200 Subject: [PATCH 2/6] docs: CHANGELOG: Steamify ISO 1.0.0 (unreleased), with the systemd-boot boot entry fix --- CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab16833..af24261 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,38 @@ +# Steamify ISO 1.0.0 (unreleased) +CachyOS's desktop ISO with Steamify built in: install CachyOS and turn the PC into a Steam Machine in +one go. Based on CachyOS 26.08 (its own notes follow below). + +**Features:** + +* **ISO:** called `steamify-cachyos--x86_64.iso`; CachyOS Hello installs it like CachyOS's own + release (the build date is kept in `/etc/steammachine-iso-build`) +* **Installer (CachyOS - Steamify Installer):** + * A Steamify page after the packages page: which Steam Machine parts to set up (rows from + `steamify.sh --defaults --list`, the newest Steamify fetched before Calamares starts) and where + the PC starts (gaming mode or the desktop) + * The Summary lists every chosen item and where the PC starts + * The new user's Steam Machine setup runs during the install (`steamify-install`, a Calamares step + before cleanup): the first boot is already a Steam Machine + * Only what Steamify supports is offered: KDE Plasma, and the boot loaders Limine, systemd-boot and + GRUB (not rEFInd) +* **Live session:** keeps CachyOS's own name; the power-off fix is built for the ISO's kernels, and + the login has the Vapor look + +**Fixes:** + +* **systemd-boot:** the installed system gets its "Linux Boot Manager" EFI boot entry, first in the + boot order. cachyos-installer runs `bootctl install` in a chroot, where bootctl leaves the EFI + variables alone, so the entry was missing: the PC could only boot through the disk's fallback path + (`\EFI\BOOT\BOOTX64.EFI`). Most PCs find it early and boot normally, but firmware that tries the + network first waits minutes on every boot (QEMU/OVMF: PXE, HTTP boot and the EFI shell come first), + and anything else that writes the fallback file (another OS) takes the boot over. + `steamify-install` now runs `bootctl --variables=yes install` from the live system; + the output is in `/var/log/steamify-bootentry.log` +* **Installer:** Steamify's setup never asks for a password (its sudo rule is read after CachyOS's + `%wheel` rule); Calamares starts with the Boost version it was linked against +* **Build:** finishes cleanly as root and reports no error after a successful build; the Steamify page's + Calamares module is built with the ISO and left out when Calamares' version differs + # 26.08 **Features:** From 1d25d1c7f601dc87e6c6143566e52fe52b3b2dbc Mon Sep 17 00:00:00 2001 From: rickpeters Date: Tue, 29 Sep 2026 16:54:39 +0200 Subject: [PATCH 3/6] docs: CHANGELOG: the name is CachyOS with Steamify Live ISO --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af24261..4a3841a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Steamify ISO 1.0.0 (unreleased) +# CachyOS with Steamify Live ISO 1.0.0 (unreleased) CachyOS's desktop ISO with Steamify built in: install CachyOS and turn the PC into a Steam Machine in one go. Based on CachyOS 26.08 (its own notes follow below). From 9a58cf7c00ffa987625a526138fa859286f64400 Mon Sep 17 00:00:00 2001 From: rickpeters Date: Tue, 29 Sep 2026 16:56:30 +0200 Subject: [PATCH 4/6] docs: CHANGELOG: Steamify's changes go in the CachyOS version they are built on (26.08), not a version of their own --- CHANGELOG.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a3841a..50c283f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ -# CachyOS with Steamify Live ISO 1.0.0 (unreleased) -CachyOS's desktop ISO with Steamify built in: install CachyOS and turn the PC into a Steam Machine in -one go. Based on CachyOS 26.08 (its own notes follow below). +# 26.08 +*CachyOS with Steamify Live ISO: CachyOS's desktop ISO with Steamify built in (install CachyOS and turn the +PC into a Steam Machine in one go). Its additions come first; CachyOS's own notes follow.* -**Features:** +**CachyOS with Steamify Live ISO: features:** * **ISO:** called `steamify-cachyos--x86_64.iso`; CachyOS Hello installs it like CachyOS's own release (the build date is kept in `/etc/steammachine-iso-build`) @@ -18,7 +18,7 @@ one go. Based on CachyOS 26.08 (its own notes follow below). * **Live session:** keeps CachyOS's own name; the power-off fix is built for the ISO's kernels, and the login has the Vapor look -**Fixes:** +**CachyOS with Steamify Live ISO: fixes:** * **systemd-boot:** the installed system gets its "Linux Boot Manager" EFI boot entry, first in the boot order. cachyos-installer runs `bootctl install` in a chroot, where bootctl leaves the EFI @@ -33,7 +33,6 @@ one go. Based on CachyOS 26.08 (its own notes follow below). * **Build:** finishes cleanly as root and reports no error after a successful build; the Steamify page's Calamares module is built with the ISO and left out when Calamares' version differs -# 26.08 **Features:** * **Installer:** From d32520931700257d79d3da44c7d2c06d86f79c7d Mon Sep 17 00:00:00 2001 From: rickpeters Date: Tue, 29 Sep 2026 16:58:00 +0200 Subject: [PATCH 5/6] docs: CHANGELOG: CachyOS's 26.08 notes as they were, the Steamify Live ISO 1.0.0 notes as a subsection under it --- CHANGELOG.md | 68 ++++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50c283f..a8c95f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,38 +1,4 @@ # 26.08 -*CachyOS with Steamify Live ISO: CachyOS's desktop ISO with Steamify built in (install CachyOS and turn the -PC into a Steam Machine in one go). Its additions come first; CachyOS's own notes follow.* - -**CachyOS with Steamify Live ISO: features:** - -* **ISO:** called `steamify-cachyos--x86_64.iso`; CachyOS Hello installs it like CachyOS's own - release (the build date is kept in `/etc/steammachine-iso-build`) -* **Installer (CachyOS - Steamify Installer):** - * A Steamify page after the packages page: which Steam Machine parts to set up (rows from - `steamify.sh --defaults --list`, the newest Steamify fetched before Calamares starts) and where - the PC starts (gaming mode or the desktop) - * The Summary lists every chosen item and where the PC starts - * The new user's Steam Machine setup runs during the install (`steamify-install`, a Calamares step - before cleanup): the first boot is already a Steam Machine - * Only what Steamify supports is offered: KDE Plasma, and the boot loaders Limine, systemd-boot and - GRUB (not rEFInd) -* **Live session:** keeps CachyOS's own name; the power-off fix is built for the ISO's kernels, and - the login has the Vapor look - -**CachyOS with Steamify Live ISO: fixes:** - -* **systemd-boot:** the installed system gets its "Linux Boot Manager" EFI boot entry, first in the - boot order. cachyos-installer runs `bootctl install` in a chroot, where bootctl leaves the EFI - variables alone, so the entry was missing: the PC could only boot through the disk's fallback path - (`\EFI\BOOT\BOOTX64.EFI`). Most PCs find it early and boot normally, but firmware that tries the - network first waits minutes on every boot (QEMU/OVMF: PXE, HTTP boot and the EFI shell come first), - and anything else that writes the fallback file (another OS) takes the boot over. - `steamify-install` now runs `bootctl --variables=yes install` from the live system; - the output is in `/var/log/steamify-bootentry.log` -* **Installer:** Steamify's setup never asks for a password (its sudo rule is read after CachyOS's - `%wheel` rule); Calamares starts with the Boost version it was linked against -* **Build:** finishes cleanly as root and reports no error after a successful build; the Steamify page's - Calamares module is built with the ISO and left out when Calamares' version differs - **Features:** * **Installer:** @@ -60,6 +26,40 @@ PC into a Steam Machine in one go). Its additions come first; CachyOS's own note * Correctly handle VM environments * Correctly quote pacman arguments +## CachyOS with Steamify Live ISO 1.0.0 (unreleased) +CachyOS 26.08 with Steamify built in: install CachyOS and turn the PC into a Steam Machine in one go. + +**Features:** + +* **ISO:** called `steamify-cachyos--x86_64.iso`; CachyOS Hello installs it like CachyOS's own + release (the build date is kept in `/etc/steammachine-iso-build`) +* **Installer (CachyOS - Steamify Installer):** + * A Steamify page after the packages page: which Steam Machine parts to set up (rows from + `steamify.sh --defaults --list`, the newest Steamify fetched before Calamares starts) and where + the PC starts (gaming mode or the desktop) + * The Summary lists every chosen item and where the PC starts + * The new user's Steam Machine setup runs during the install (`steamify-install`, a Calamares step + before cleanup): the first boot is already a Steam Machine + * Only what Steamify supports is offered: KDE Plasma, and the boot loaders Limine, systemd-boot and + GRUB (not rEFInd) +* **Live session:** keeps CachyOS's own name; the power-off fix is built for the ISO's kernels, and + the login has the Vapor look + +**Fixes:** + +* **systemd-boot:** the installed system gets its "Linux Boot Manager" EFI boot entry, first in the + boot order. cachyos-installer runs `bootctl install` in a chroot, where bootctl leaves the EFI + variables alone, so the entry was missing: the PC could only boot through the disk's fallback path + (`\EFI\BOOT\BOOTX64.EFI`). Most PCs find it early and boot normally, but firmware that tries the + network first waits minutes on every boot (QEMU/OVMF: PXE, HTTP boot and the EFI shell come first), + and anything else that writes the fallback file (another OS) takes the boot over. + `steamify-install` now runs `bootctl --variables=yes install` from the live system; + the output is in `/var/log/steamify-bootentry.log` +* **Installer:** Steamify's setup never asks for a password (its sudo rule is read after CachyOS's + `%wheel` rule); Calamares starts with the Boost version it was linked against +* **Build:** finishes cleanly as root and reports no error after a successful build; the Steamify page's + Calamares module is built with the ISO and left out when Calamares' version differs + # 26.07 **Features:** From df50367973f682161d36c9f5d7f3c7be4cb7b15f Mon Sep 17 00:00:00 2001 From: rickpeters Date: Tue, 29 Sep 2026 17:10:15 +0200 Subject: [PATCH 6/6] fix: the systemd-boot entry is made with efibootmgr from the live system (bootctl in the chroot wrote HD(0,GPT,0000...), which the firmware can't load) --- CHANGELOG.md | 5 +++-- archiso/airootfs/usr/local/bin/steamify-install | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8c95f5..d8ce8ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,8 +53,9 @@ CachyOS 26.08 with Steamify built in: install CachyOS and turn the PC into a Ste (`\EFI\BOOT\BOOTX64.EFI`). Most PCs find it early and boot normally, but firmware that tries the network first waits minutes on every boot (QEMU/OVMF: PXE, HTTP boot and the EFI shell come first), and anything else that writes the fallback file (another OS) takes the boot over. - `steamify-install` now runs `bootctl --variables=yes install` from the live system; - the output is in `/var/log/steamify-bootentry.log` + `steamify-install` now registers it with `efibootmgr` from the live system, with the ESP's real + disk and partition (bootctl in the chroot writes an entry without a partition, which the firmware + can't load); the output is in `/var/log/steamify-bootentry.log` * **Installer:** Steamify's setup never asks for a password (its sudo rule is read after CachyOS's `%wheel` rule); Calamares starts with the Boost version it was linked against * **Build:** finishes cleanly as root and reports no error after a successful build; the Steamify page's diff --git a/archiso/airootfs/usr/local/bin/steamify-install b/archiso/airootfs/usr/local/bin/steamify-install index 38db51c..748dd60 100755 --- a/archiso/airootfs/usr/local/bin/steamify-install +++ b/archiso/airootfs/usr/local/bin/steamify-install @@ -22,10 +22,20 @@ for id in ${choice//,/ }; do done # systemd-boot: cachyos-installer runs `bootctl install` in a chroot, and bootctl leaves the EFI # variables alone there: no "Linux Boot Manager" boot entry, so the firmware tries the network and -# its other entries first and finds the disk's fallback path last (or never). Register it now. +# its other entries first and finds the disk's fallback path last (or never). bootctl can't be made +# to do it from the chroot either (it writes the entry without the partition: HD(0,GPT,0000...)). +# So register it from the live system, with the ESP's real disk and partition; efibootmgr puts it first. if [[ -n "$root" && -f "$root/boot/EFI/systemd/systemd-bootx64.efi" && -d /sys/firmware/efi/efivars ]]; then - arch-chroot "$root" bootctl --esp-path=/boot --variables=yes install > "$root/var/log/steamify-bootentry.log" 2>&1 - arch-chroot "$root" efibootmgr >> "$root/var/log/steamify-bootentry.log" 2>&1 + { + esp="$(findmnt -no SOURCE "$root/boot")" + disk="/dev/$(lsblk -no PKNAME "$esp" | head -n 1)" + part="$(cat "/sys/class/block/${esp##*/}/partition")" + echo "ESP: $esp (disk $disk, partition $part)" + for n in $(efibootmgr | sed -n 's/^Boot\([0-9A-Fa-f]\{4\}\)\*\{0,1\} \(Fallback \)\{0,1\}Linux Boot Manager.*/\1/p'); do + efibootmgr -q -b "$n" -B + done + efibootmgr --create --disk "$disk" --part "$part" --label "Linux Boot Manager" --loader '\EFI\systemd\systemd-bootx64.efi' + } > "$root/var/log/steamify-bootentry.log" 2>&1 fi log="$root/var/log/steamify-install.log" rule="$root/etc/sudoers.d/zz-steamify-install"