VM image: seal whichever kernel the system runs
The seal read /boot/EFI/Linux/omarchy_linux-omarchy.efi. An edge install has linux-omarchy-bore, so the first nightly run stopped there. It now asks the running system which kernel package it booted and takes that UKI, and takes the command line from /proc/cmdline, since the boot entry, not the UKI, may be what holds it. The nightly's package report names the kernel the same way.
This commit is contained in:
1 parent
9d4d03ff1c
commit
41fa32d671
2 files changed
+7
-3
No files matched your search
@@ -110,7 +110,7 @@ jobs:
|
|||||||
base=$(ls -d test-runs/*-integration)
|
base=$(ls -d test-runs/*-integration)
|
||||||
./test/vm-image/vm-seal "$base" sealed
|
./test/vm-image/vm-seal "$base" sealed
|
||||||
./test/vm-image/vm-verify sealed | tee vm-verify.txt
|
./test/vm-image/vm-verify sealed | tee vm-verify.txt
|
||||||
./test/vm-image/vm-boot sealed "pacman -Q omarchy-dev omarchy-settings-dev linux-omarchy; uname -r" >vm-packages.txt
|
./test/vm-image/vm-boot sealed "pacman -Q omarchy-dev omarchy-settings-dev; pacman -Qo /usr/lib/modules/\$(uname -r)/pkgbase; uname -r" >vm-packages.txt
|
||||||
cat vm-packages.txt
|
cat vm-packages.txt
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,12 @@ done
|
|||||||
ssh_vm 'timeout 180 systemctl is-system-running --wait >/dev/null 2>&1 || true'
|
ssh_vm 'timeout 180 systemctl is-system-running --wait >/dev/null 2>&1 || true'
|
||||||
|
|
||||||
mkdir -p "$out"
|
mkdir -p "$out"
|
||||||
root 'cat /boot/EFI/Linux/omarchy_linux-omarchy.efi' >"$state/uki.efi"
|
# The kernel that is running: edge installs linux-omarchy-bore where stable
|
||||||
|
# installs linux-omarchy, and the boot entry, not the UKI, may hold the
|
||||||
|
# command line.
|
||||||
|
kernel=$(ssh_vm 'cat "/usr/lib/modules/$(uname -r)/pkgbase"')
|
||||||
|
root "cat /boot/EFI/Linux/omarchy_$kernel.efi" >"$state/uki.efi"
|
||||||
|
ssh_vm 'cat /proc/cmdline' >"$state/cmdline"
|
||||||
|
|
||||||
root '
|
root '
|
||||||
# The ISO writes autologin only for encrypted installs; a test has nobody at
|
# The ISO writes autologin only for encrypted installs; a test has nobody at
|
||||||
@@ -135,7 +140,6 @@ rm -f "$state/qemu.pid"
|
|||||||
# and hashing the UKI. resume= points at the image's own swap, so drop it.
|
# and hashing the UKI. resume= points at the image's own swap, so drop it.
|
||||||
objcopy -O binary --only-section=.linux "$state/uki.efi" "$out/vmlinuz"
|
objcopy -O binary --only-section=.linux "$state/uki.efi" "$out/vmlinuz"
|
||||||
objcopy -O binary --only-section=.initrd "$state/uki.efi" "$out/initrd"
|
objcopy -O binary --only-section=.initrd "$state/uki.efi" "$out/initrd"
|
||||||
objcopy -O binary --only-section=.cmdline "$state/uki.efi" "$state/cmdline"
|
|
||||||
tr -d '\0' <"$state/cmdline" | tr ' ' '\n' | { grep -vE '^(resume|resume_offset)=|^$' || true; } | paste -sd' ' >"$out/cmdline"
|
tr -d '\0' <"$state/cmdline" | tr ' ' '\n' | { grep -vE '^(resume|resume_offset)=|^$' || true; } | paste -sd' ' >"$out/cmdline"
|
||||||
[[ -s $out/vmlinuz && -s $out/initrd && -s $out/cmdline ]] || { echo "vm-seal: the UKI gave no kernel, initrd or cmdline" >&2; exit 1; }
|
[[ -s $out/vmlinuz && -s $out/initrd && -s $out/cmdline ]] || { echo "vm-seal: the UKI gave no kernel, initrd or cmdline" >&2; exit 1; }
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user