From 3cdf2e11d8e9270a6f8a453a0b9fba2e841e0712 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 10:40:36 +0200 Subject: [PATCH] feat: Fake BIOS version for testing the BIOS update item - run.sh: BIOS_VERSION=... reports that BIOS version to the guest (SMBIOS type 0). - Skill: testing the BIOS item with WIZARD_BIOS_DRY_RUN=1, and the wizard's menu loop. --- .claude/skills/cachyos-vm-testing/SKILL.md | 13 +++++++++++++ CHANGELOG.md | 7 ++++++- run.sh | 5 ++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.claude/skills/cachyos-vm-testing/SKILL.md b/.claude/skills/cachyos-vm-testing/SKILL.md index 5638fe7..e43a434 100644 --- a/.claude/skills/cachyos-vm-testing/SKILL.md +++ b/.claude/skills/cachyos-vm-testing/SKILL.md @@ -224,6 +224,19 @@ autologin, then (all passed last run; `scripts/vmstate.sh` after every step): 8. Conversion off: single user auto-unticked, plasmalogin `[Autologin]` back to CachyOS's `Session=plasma`, journals empty. 9. Remove the test autologin file, reboot: normal login screen. +## BIOS update item + +Only shown with `--fremont`, and only tickable when the guest's BIOS version +differs from Valve's newest. Fake an older one with +`BIOS_VERSION=F7F0107 ./run.sh --fremont` (SMBIOS type 0; `vmreset.sh` passes +the environment through). fwupd correctly refuses the firmware in the VM +("not for this machine's hardware"), so walk the whole flow with +`WIZARD_BIOS_DRY_RUN=1` (skips only that check, never flashes). Scripted: +`printf '6\n\ny\ny\nUPDATE\n\nq\n' | WIZARD_BIOS_DRY_RUN=1 /mnt/setup-gamescope-boot.sh`. + +The wizard loops back to the menu after every run (Enter, or `m`/`r` when a +restart is needed) until `q`; scripted input that runs out ends it like `q`. + ## Visual checks `scripts/vmshot.sh ` does the below. Starting `spectacle` straight diff --git a/CHANGELOG.md b/CHANGELOG.md index 644bceb..20d4a8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,12 @@ Watchable test runs and the lessons from testing cachyos-gamescope-boot 0.7.0 the conversion/single-user coupling, the repo mount lost on reboot, re-applying the conversion resets the session to gamescope, the new theme and LED checks in the test matrix, and the broken mirror workaround. -- **docs: Changelog** +- `3733f94` **docs: Changelog** +- **feat: Fake BIOS version for testing the BIOS update item** + - `BIOS_VERSION=F7F0107 ./run.sh ...` makes the guest report that BIOS + version (SMBIOS type 0), so the wizard offers the update. + - Skill: testing the BIOS item with `WIZARD_BIOS_DRY_RUN=1`, and the + wizard's menu loop. ## 0.1.1 - 2026-09-23 diff --git a/run.sh b/run.sh index 3a8abdf..aa9efaa 100755 --- a/run.sh +++ b/run.sh @@ -6,6 +6,8 @@ # --vulkan expose Vulkan to the guest (venus; needed by gamescope, can be unstable) # --fremont report the Valve Steam Machine's DMI data (for testing the wizard) # REPO defaults to $HOME/projects/cachyos-gamescope-boot. +# BIOS_VERSION=F7F0107 makes the guest report that BIOS version (DMI), e.g. +# to test the wizard's BIOS update item; the firmware itself doesn't change. # The repo is shared into the guest; mount it there with: # sudo mount -t 9p -o trans=virtio,version=9p2000.L repo /mnt # First-time SSH setup, inside the guest: @@ -17,13 +19,14 @@ repo="${REPO:-$HOME/projects/cachyos-gamescope-boot}" cdrom=() smbios=() gpu=virtio-vga-gl,xres=1920,yres=1080 +[[ -n "${BIOS_VERSION:-}" ]] && smbios+=(-smbios "type=0,version=$BIOS_VERSION") for arg in "$@"; do case "$arg" in install) cdrom=(-cdrom cachyos.iso -boot d) ;; --nvidia) export __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia \ __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/10_nvidia.json ;; --vulkan) gpu+=,hostmem=4G,blob=true,venus=true ;; - --fremont) smbios=(-smbios type=1,manufacturer=Valve,product=Fremont -smbios type=2,manufacturer=Valve,product=Fremont) ;; + --fremont) smbios+=(-smbios type=1,manufacturer=Valve,product=Fremont -smbios type=2,manufacturer=Valve,product=Fremont) ;; *) echo "unknown argument: $arg" >&2; exit 1 ;; esac done