#!/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