From 0ace22d6f88692883584119c64ff010f4cee6738 Mon Sep 17 00:00:00 2001 From: salmonik Date: Fri, 31 Jul 2026 03:22:20 +0200 Subject: fix(rsdos): organizational changes --- scripts/qemu.sh | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 scripts/qemu.sh (limited to 'scripts/qemu.sh') diff --git a/scripts/qemu.sh b/scripts/qemu.sh new file mode 100755 index 0000000..b75bed4 --- /dev/null +++ b/scripts/qemu.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash +# ============================================================================= +# tools/qemu.sh — Run raisernics in QEMU with various options +# +# Usage: +# ./tools/qemu.sh # serial console (no graphics) +# ./tools/qemu.sh --gui # graphical window +# ./tools/qemu.sh --debug # GDB stub on :1234 +# ./tools/qemu.sh --image foo.img # boot from raw disk image +# ./tools/qemu.sh --bios /path/to.fd # custom OVMF +# ./tools/qemu.sh --mem 512M # memory size +# ./tools/qemu.sh --smp 2 # SMP cores +# ============================================================================= +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +cd "$SCRIPT_DIR" + +# Defaults +GUI_FLAG="" +DEBUG_FLAG="" +DRIVE_ARGS=(-drive file=fat:rw:esp,format=raw) +OVMF="${OVMF:-/usr/share/edk2/x64/OVMF.4m.fd}" +MEM="${MEM:-256M}" +SMP="${SMP:-1}" + +# Pre-build +make all + +# Parse args +while [ $# -gt 0 ]; do + case "$1" in + --gui | -g) + GUI_FLAG="-vga std" + shift + ;; + --debug | -d) + DEBUG_FLAG="-s -S" + shift + ;; + --image | -i) + _img_file="$(printf -- '-drive file=%s,format=raw,if=none,id=hd' "$2")" + DRIVE_ARGS=("$_img_file" '-device' 'ide-hd,drive=hd') + shift 2 + ;; + --bios | -b) + OVMF="$2" + shift 2 + ;; + --mem) + MEM="$2" + shift 2 + ;; + --smp) + SMP="$2" + shift 2 + ;; + --help | -h) + head -20 "$0" | grep "^# " | sed 's/^# //' + exit 0 + ;; + *) + echo "Unknown option: $1" + exit 1 + ;; + esac +done + +QEMU_CMD=( + qemu-system-x86_64 + -bios "$OVMF" + "${DRIVE_ARGS[@]}" + -serial stdio + -m "$MEM" + -machine q35 + -cpu qemu64 + -no-reboot + -smp "$SMP" +) + +[ -n "$GUI_FLAG" ] && QEMU_CMD+=("$GUI_FLAG") +if [ -n "$DEBUG_FLAG" ]; then + # Split the flag string safely into words + read -ra dbg <<<"$DEBUG_FLAG" + QEMU_CMD+=("${dbg[@]}") +fi + +echo " OVMF : $OVMF" +echo " Drive : ${DRIVE_ARGS[*]}" +echo " Mem : $MEM" +echo " SMP : $SMP" +echo " GDB : $([ -n "$DEBUG_FLAG" ] && echo ':1234' || echo 'off')" +echo " GUI : $([ -n "$GUI_FLAG" ] && echo 'yes' || echo 'no')" +echo "" + +exec "${QEMU_CMD[@]}" -- cgit v1.2.3