From acd0fe1bc38746f36fff24a7497041e5c5010977 Mon Sep 17 00:00:00 2001 From: salmonik Date: Thu, 27 Aug 2026 18:35:59 +0200 Subject: scripts: migrate all QEMU/test scripts to single system image boot.sh: replace esp/ + DISK_IMG with single SYSTEM_IMG on ide.0 (hooks into mksystem.sh --force for auto-staging). boot-image.sh: delegate to mksystem.sh --chain (build-image.sh deleted). build-image-release.sh: delegate to mksystem.sh --chain --gpt. qemu.sh: flexible launcher uses SYSTEM_IMG; --chain flag for full-chain build. test-disk.sh: drop ESP_DIR (mksystem.sh stages everything). test-fault.sh: boot system.img on ide.0 + CRASHLOG stick on ide.1; replace deleted mkdisk.sh with inline mkfs.fat. test-gfx.sh: system.img on ide.0, stage via mksystem.sh. test-mouse.sh: system.img on ide.0, stage via mksystem.sh. test-msg.sh: system.img on ide.0, stage via mksystem.sh. Makefile: remove stale build-image.sh/mkdisk.sh references from help; image target delegates to mksystem.sh --chain. All scripts syntax-checked (bash -n). build-image.sh and mkdisk.sh no longer referenced anywhere. --- scripts/boot.sh | 47 +++++++++++------------------------------------ 1 file changed, 11 insertions(+), 36 deletions(-) (limited to 'scripts/boot.sh') diff --git a/scripts/boot.sh b/scripts/boot.sh index 5b8e6fa..9c60dc9 100755 --- a/scripts/boot.sh +++ b/scripts/boot.sh @@ -2,8 +2,8 @@ # # scripts/boot.sh — quick direct boot in QEMU (dev loop) # -# Fastest iteration: boots the kernel directly as BOOTX64.EFI via QEMU's -# FAT driver, skipping the bootloader entirely. +# Builds the kernel, stages the system image, and boots directly as +# BOOTX64.EFI via QEMU's FAT driver. One image = one drive. # # Usage: # ./scripts/boot.sh [--gui] [--debug] [--release] [--mem 512M] [--smp 2] @@ -19,26 +19,19 @@ # OVMF path to OVMF firmware (default: /usr/share/edk2/x64/OVMF.4m.fd) # MEM memory size (default: 256M) # SMP CPU count (default: 1) -# DISK_IMG raw disk image attached as the SATA data disk (default: /tmp/disk.img) -# -# The data disk is pinned to AHCI port 0 (ide.0) and the ESP to port 1 -# (ide.1); the implicit `-drive file=fat:rw:esp` would otherwise grab -# port 0 and the kernel would find the ESP where it expects a FAT32 disk. +# SYSTEM_IMG system image path (default: /tmp/system.img) # set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PROJECT_DIR="$(dirname "$SCRIPT_DIR")" - +PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" cd "$PROJECT_DIR" -ESP_DIR="$PROJECT_DIR/esp" - # ---- config ---- OVMF="${OVMF:-/usr/share/edk2/x64/OVMF.4m.fd}" MEM="${MEM:-256M}" SMP="${SMP:-1}" -DISK_IMG="${DISK_IMG:-/tmp/disk.img}" +SYSTEM_IMG="${SYSTEM_IMG:-/tmp/system.img}" PROFILE="debug" CARGO_FLAGS="" GUI="" @@ -46,7 +39,6 @@ DEBUG="" # ---- args ---- source "$SCRIPT_DIR/lib-boot-args.sh" -# boot.sh-specific flags live here; everything else is shared. handle_arg() { case "$1" in --release | -r) @@ -62,46 +54,29 @@ handle_arg() { parse_boot_args "$@" OUT_DIR="target/x86_64-unknown-uefi/$PROFILE" -KERNEL="$OUT_DIR/rsdos.efi" # ---- build ---- echo "=== Building kernel ($PROFILE) ===" cargo build --package rsdos --target x86_64-unknown-uefi $CARGO_FLAGS -# ---- deploy ---- -mkdir -p "$ESP_DIR/EFI/BOOT" -cp "$KERNEL" "$ESP_DIR/EFI/BOOT/BOOTX64.EFI" -echo " kernel: $(ls -lh "$KERNEL" | awk '{print $5}')" +# ---- stage system image ---- +echo "=== Staging system image ===" +"$SCRIPT_DIR/mksystem.sh" --force "$SYSTEM_IMG" +echo " system image: $SYSTEM_IMG" # ---- boot ---- echo "" echo "=== Booting (direct: firmware → rsnix) ===" echo " ovmf: $OVMF" echo " mem: $MEM smp: $SMP" -echo " disk: $([ -f "$DISK_IMG" ] && echo "$DISK_IMG" || echo "none ($DISK_IMG missing)")" echo " gui: $([ -n "$GUI" ] && echo yes || echo no)" echo " gdb: $([ -n "$DEBUG" ] && echo ':1234' || echo off)" echo "" -if [ ! -f "$DISK_IMG" ]; then - echo " (creating missing disk image: $DISK_IMG)" - "$SCRIPT_DIR/mkdisk.sh" "$DISK_IMG" -fi - -if [ -f "$DISK_IMG" ]; then - DISK_ARGS=( - -drive "file=$DISK_IMG,format=raw,if=none,id=disk" - -device ide-hd,drive=disk,bus=ide.0 - ) -else - DISK_ARGS=() -fi - exec qemu-system-x86_64 \ -bios "$OVMF" \ - "${DISK_ARGS[@]}" \ - -drive file=fat:rw:"$ESP_DIR",format=raw,if=none,id=esp \ - -device ide-hd,drive=esp,bus=ide.1 \ + -drive "file=$SYSTEM_IMG,format=raw,if=none,id=disk" \ + -device ide-hd,drive=disk,bus=ide.0 \ -serial stdio \ -m "$MEM" \ -machine q35 \ -- cgit v1.2.3