66 lines
2.4 KiB
Bash
Executable file
66 lines
2.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Boot veilor-os ISO in KVM/QEMU under UEFI.
|
|
# Usage:
|
|
# ./test/run-vm.sh # boots latest ISO from build/out
|
|
# ./test/run-vm.sh path/to.iso # specific ISO
|
|
# SECBOOT=1 ./test/run-vm.sh # use OVMF Secure Boot firmware
|
|
# FRESH=1 ./test/run-vm.sh # wipe disk + nvram, re-install from scratch
|
|
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
TEST_DIR="$REPO_ROOT/test"
|
|
DISK="$TEST_DIR/veilor-vm.qcow2"
|
|
NVRAM="$TEST_DIR/veilor-vm.nvram"
|
|
|
|
ISO="${1:-$(ls -t "$REPO_ROOT"/build/out/*.iso 2>/dev/null | head -1)}"
|
|
[[ -n ${ISO:-} && -f $ISO ]] || { echo "[ERR] No ISO found. Build first: ./build/build-iso.sh"; exit 1; }
|
|
|
|
# OVMF firmware selection
|
|
if [[ "${SECBOOT:-0}" == "1" ]]; then
|
|
OVMF_CODE=/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd
|
|
OVMF_VARS_SRC=/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd
|
|
NVRAM="$TEST_DIR/veilor-vm.nvram.secboot"
|
|
else
|
|
OVMF_CODE=/usr/share/edk2/ovmf/OVMF_CODE.fd
|
|
OVMF_VARS_SRC=/usr/share/edk2/ovmf/OVMF_VARS.fd
|
|
fi
|
|
|
|
# Reset on FRESH=1
|
|
if [[ "${FRESH:-0}" == "1" ]]; then
|
|
rm -f "$DISK" "$NVRAM"
|
|
fi
|
|
|
|
# Provision disk + per-VM nvram once
|
|
[[ -f $DISK ]] || qemu-img create -f qcow2 "$DISK" 40G
|
|
[[ -f $NVRAM ]] || cp "$OVMF_VARS_SRC" "$NVRAM"
|
|
|
|
echo "════════════════════════════════════════════════════════"
|
|
echo " veilor-os :: VM test"
|
|
echo " ISO : $ISO"
|
|
echo " Disk : $DISK"
|
|
echo " NVRAM : $NVRAM"
|
|
echo " Mode : ${SECBOOT:+secboot}${SECBOOT:-stock UEFI}"
|
|
echo "════════════════════════════════════════════════════════"
|
|
|
|
exec qemu-system-x86_64 \
|
|
-name veilor-os \
|
|
-enable-kvm \
|
|
-cpu host \
|
|
-smp 4 \
|
|
-m 4096 \
|
|
-machine q35,smm=on \
|
|
-global driver=cfi.pflash01,property=secure,value=on \
|
|
-drive if=pflash,format=raw,readonly=on,file="$OVMF_CODE" \
|
|
-drive if=pflash,format=raw,file="$NVRAM" \
|
|
-drive file="$DISK",if=virtio,format=qcow2,cache=writeback \
|
|
-cdrom "$ISO" \
|
|
-boot menu=on,splash-time=2000 \
|
|
-netdev user,id=net0,hostfwd=tcp::2222-:22 \
|
|
-device virtio-net-pci,netdev=net0 \
|
|
-device virtio-rng-pci \
|
|
-vga virtio \
|
|
-display gtk,gl=on \
|
|
-audiodev pa,id=snd0 \
|
|
-device intel-hda \
|
|
-device hda-output,audiodev=snd0
|