Files
vasilito 4325590686 Add host kernel config and initramfs scripts with P0-P3 hardware inventory
Includes: init (PID 1), hiperiso-lib.sh, qemu_launch.sh, hw_collect.sh,

kvm_check.sh, fallback_boot.sh, log_flush.sh, conf_replace.sh, make_floppy.sh.

13-phase boot timing, 18 QEMU HMP commands, network pcap capture.
2026-06-30 14:30:39 +03:00

95 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
# ============================================================
# fallback_boot.sh -- Structured failure capture when KVM absent
#
# Called by init when hardware virtualization is unavailable
# and hiperiso_fallback is not "1". Writes structured session
# metadata (session.json, status.json, FAILURE.txt) so the boot
# attempt is captured even though no QEMU guest was launched,
# then warns the user and offers to reboot.
# ============================================================
. /hiperiso-lib.sh
# ── Capture structured failure data ───────────────────────────
if [ -n "${LOG_DIR:-}" ] && [ -d "$LOG_DIR" ]; then
hiperiso_log "FALLBACK: KVM unavailable -- capturing failure session"
hiperiso_write_session_meta "failed"
hiperiso_write_status "failed" "fallback_no_kvm"
{
printf '========================================\n'
printf ' hiperiso FAILURE: KVM Unavailable\n'
printf '========================================\n\n'
printf 'ISO: %s\n' "${HIPERISO_ISO_PATH:-unknown}"
printf 'Session: %s\n' "$(hiperiso_session_id)"
printf 'Timestamp: %s\n' "$(hiperiso_utc_iso)"
printf 'Reason: KVM not detected (VT-x/AMD-V unavailable)\n\n'
printf 'No QEMU guest was launched. No serial.log or\n'
printf 'trace.bin was produced for this session.\n'
printf '========================================\n'
} > "${LOG_DIR}/FAILURE.txt"
sync "${LOG_DIR}/FAILURE.txt" 2>/dev/null || sync
hiperiso_run_report
# Finalize so the failed session gets a canonical manifest and an
# entry in the global JSONL index (failed sessions are indexed too).
hiperiso_finalize_session "failed" "" "fallback_no_kvm"
fi
# Clear the terminal
printf '\033[2J\033[H'
printf '\n'
printf '======================================================\n'
printf ' WARNING: Hardware Virtualization (KVM) Unavailable \n'
printf '======================================================\n'
printf '\n'
printf ' hiperiso requires KVM (Intel VT-x or AMD-V) to run\n'
printf ' an ISO as a guest virtual machine.\n'
printf '\n'
printf ' KVM was NOT detected on this system, so this ISO\n'
printf ' cannot be booted in hypervisor mode.\n'
printf '\n'
printf ' Possible reasons:\n'
printf ' 1. The CPU does not support VT-x / AMD-V\n'
printf ' 2. Virtualization is disabled in BIOS/UEFI\n'
printf ' 3. KVM kernel modules failed to load\n'
printf '\n'
printf ' How to proceed:\n'
printf ' - Reboot, enable VT-x/AMD-V in BIOS/UEFI, retry\n'
printf ' - Use a direct-boot tool (e.g. Rufus, balenaEtcher) for this ISO\n'
printf ' - Reboot with hiperiso_fallback=1 on the kernel\n'
printf ' command line to force TCG emulation (very slow)\n'
printf '\n'
if [ -n "${LOG_DIR:-}" ] && [ -d "$LOG_DIR" ]; then
printf ' Failure session captured: %s\n' "$LOG_DIR"
printf '\n'
fi
printf '======================================================\n'
printf '\n'
printf ' Press ENTER to reboot to the boot menu,\n'
printf ' or type "shell" for a recovery shell: '
read -r _choice
case "$_choice" in
shell|sh)
printf '\nDropping to recovery shell...\n'
exec /bin/sh
;;
*)
printf '\nRebooting...\n'
sync
if command -v reboot >/dev/null 2>&1; then
reboot -f
else
# Fallback: magic SysRq
printf 'b' > /proc/sysrq-trigger 2>/dev/null
fi
# Should not reach here
exit 0
;;
esac