tuxflotte-installer/backends/fedora/kexec-reboot-test.sh
Thomas Stallinger 223bbd7c24 test: add manual kexec/kickstart-on-cdrom test scripts for ADR-0009
Not part of the backend lifecycle (40_backend.sh) -- run by hand during
the live/netinstall boot flow investigation documented in ADR-0009.

kexec-reboot-test.sh/.cfg: tests whether inst.ks= can trigger Anaconda
via kexec from within the running Fedora Cinnamon live session, without
a real firmware reboot. Conclusively fails: the live initrd has no
anaconda dracut module at all.

wlan-netinst-test.cfg: the kickstart used to validate inst.ks=cdrom:/ks.cfg
on a real Fedora netinstall ISO, including the failed WLAN activation
attempts (network --wpakey=, then %pre nmcli) that exposed the missing
iwlwifi driver in that image's initrd.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 13:28:19 +02:00

69 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
# Manueller Test fuer ADR-0009, Pruefplan-Schritt 2: prueft, ob Anaconda
# rootpw/user/Partitionierung korrekt uebernimmt, wenn der Installer per
# kexec (statt liveinst mitten in der Session) mit inst.ks= gestartet wird.
#
# Kein Teil des Backend-Lifecycles (40_backend.sh) -- wird von Hand in der
# laufenden Live-Sitzung ausgefuehrt, Ergebnis wird manuell in Proxmox
# beobachtet (siehe Verifikations-Arbeitsteilung: Claude bereitet vor,
# Nutzer prueft funktional).
#
# Versuch 3: Kickstart-Zustellung per HTTPS (inst.ks=https://...) statt per
# Initrd-Einbettung. Versuch 2 (Initrd-Anhaengen per cat) scheiterte an
# "invalid magic at start of compressed archive" -- vermutlich xz/zstd-
# komprimiertes Basis-Initrd, das sich nicht wie ein Gzip-Initrd per cat
# verketten laesst. Diese VM haengt an virtio/DHCP, kein WLAN im Spiel,
# daher ist Netz-Zustellung hier kein Risiko -- die ungeklaerte WLAN-im-
# Dracut-Frage bleibt fuer den spaeteren WLAN-Autoprovisionierungs-Schritt
# offen, wird hier bewusst nicht mitgetestet.
#
# Kickstart-Quelle fuer diesen Test: https://anode.tuxflotte.de/installers/
# fedora-workstation/ks.cfg (bestehender Endpoint, temporaer mit
# kexec-reboot-test.cfg ueberschrieben, Original als
# ks.cfg.bak-2026-07-29 gesichert).
log() { printf '[kexec-test] %s\n' "$*" >&2; }
fatal() { printf '[kexec-test] FEHLER: %s\n' "$*" >&2; exit 1; }
[[ "${EUID}" -eq 0 ]] || fatal "Bitte als root ausfuehren (sudo)."
KICKSTART_URL="https://anode.tuxflotte.de/installers/fedora-workstation/ks.cfg"
log "Pruefe kexec-tools."
if ! command -v kexec >/dev/null 2>&1; then
log "kexec fehlt, installiere ueber dnf (Netzwerk muss bereits stehen)."
dnf install -y kexec-tools || fatal "kexec-tools konnte nicht installiert werden."
fi
log "Pruefe Erreichbarkeit der Kickstart-URL: ${KICKSTART_URL}"
curl -fsS -o /dev/null "${KICKSTART_URL}" ||
fatal "Kickstart-URL nicht erreichbar -- Netzwerk der Live-Sitzung pruefen."
log "Suche Live-Medium-Kernel/Initrd unter /run/initramfs/live."
LIVE_ROOT="/run/initramfs/live"
[[ -d "${LIVE_ROOT}" ]] || fatal "Live-Medium nicht unter ${LIVE_ROOT} gemountet -- Pfad pruefen und Skript anpassen."
LIVE_VMLINUZ="${LIVE_ROOT}/boot/x86_64/loader/linux"
LIVE_INITRD="${LIVE_ROOT}/boot/x86_64/loader/initrd"
for f in "${LIVE_VMLINUZ}" "${LIVE_INITRD}"; do
[[ -r "${f}" ]] || fatal "Erwartete Datei fehlt: ${f} -- tatsaechliche Struktur unter ${LIVE_ROOT} pruefen (find ${LIVE_ROOT} -maxdepth 4)."
done
log "Gefunden: ${LIVE_VMLINUZ}, ${LIVE_INITRD}"
# Kein root=live/rd.live.image (loest Dracuts dmsquash-live-Pfad aus, der
# inst.ks= ignoriert -- real getestet, Versuch 1). inst.stage2= setzt die
# Installationsquelle auf Boot-Ebene direkt auf Anacondas eigenen Pfad.
# inst.cmdline statt inst.text: bricht laut ab, wenn eine Direktive
# unvollstaendig bleibt, statt es wie im ADR-0009-Befund still zu ignorieren.
APPEND="inst.stage2=hd:LABEL=TUXFLOTTE:/ vconsole.keymap=de inst.ks=${KICKSTART_URL} inst.cmdline"
log "kexec -l mit Append: ${APPEND}"
kexec -l "${LIVE_VMLINUZ}" --initrd="${LIVE_INITRD}" --append="${APPEND}" ||
fatal "kexec -l fehlgeschlagen."
read -r -p "[kexec-test] Alles geprueft? Enter loest kexec -e aus, Strg+C bricht ab: " _
kexec -e