50 lines
1.4 KiB
Bash
Executable File
50 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
ISO_PATH="${1:-$ROOT_DIR/build/x86_64/redbear-live-mini.iso}"
|
|
LOG_PATH="${2:-/tmp/redbear-live-mini-uefi.log}"
|
|
TIMEOUT_SECS="${TIMEOUT_SECS:-120}"
|
|
|
|
if [[ ! -f "$ISO_PATH" ]]; then
|
|
echo "error: ISO not found: $ISO_PATH" >&2
|
|
exit 1
|
|
fi
|
|
|
|
CODE_FD="/usr/share/edk2/x64/OVMF_CODE.4m.fd"
|
|
VARS_SRC="/usr/share/edk2/x64/OVMF_VARS.4m.fd"
|
|
VARS_FD="/tmp/rb-ovmf-vars-live-mini.fd"
|
|
|
|
if [[ ! -f "$CODE_FD" || ! -f "$VARS_SRC" ]]; then
|
|
echo "error: OVMF files not found under /usr/share/edk2/x64" >&2
|
|
exit 1
|
|
fi
|
|
|
|
cp -f "$VARS_SRC" "$VARS_FD"
|
|
|
|
ACCEL="tcg"
|
|
if [[ -r /dev/kvm && -w /dev/kvm ]]; then
|
|
ACCEL="kvm:tcg"
|
|
fi
|
|
|
|
echo "ISO: $ISO_PATH"
|
|
echo "LOG: $LOG_PATH"
|
|
echo "ACCEL: $ACCEL"
|
|
echo "TIMEOUT:${TIMEOUT_SECS}s"
|
|
|
|
timeout "${TIMEOUT_SECS}s" qemu-system-x86_64 \
|
|
-machine "q35,accel=${ACCEL}" \
|
|
-cpu max -smp 4 -m 4096 \
|
|
-nographic -serial mon:stdio \
|
|
-drive "if=pflash,format=raw,readonly=on,file=${CODE_FD}" \
|
|
-drive "if=pflash,format=raw,file=${VARS_FD}" \
|
|
-cdrom "$ISO_PATH" \
|
|
>"$LOG_PATH" 2>&1 || true
|
|
|
|
echo "---- markers ----"
|
|
grep -nE "RedBear OS starting|switchroot to /scheme/initfs|switchroot to /usr|pcid-spawner: matched 0000:00:01.0|panic|UNHANDLED EXCEPTION|emergency shell" "$LOG_PATH" | sed -n '1,200p' || true
|
|
|
|
echo "---- tail ----"
|
|
tail -n 80 "$LOG_PATH" | sed -e 's/\x1b\[[0-9;]*m//g'
|
|
|