From 298528581d1a29032a1224600297316384d4e4f7 Mon Sep 17 00:00:00 2001 From: salmonik Date: Fri, 21 Aug 2026 19:13:52 +0200 Subject: image: single dd-able system.img replaces vvfat+data-disk pair MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mksystem.sh stages one FAT32 image: \bzImage + \initramfs.cpio.gz (rsbl paths), \EFI\BOOT\BOOTX64.EFI (kernel direct by default, --chain for rsboot), \etc\motd.txt, empty \bin\cli + \bin\gui, seed files at the root. --gpt wraps it in a partition table for real USB dd targets. Makefile: run/run-gui/debug attach only system.img on ide.0 (vvfat lines deleted); stamp-based 'system' target rebuilds only when the kernel is newer, so runtime writes survive reboots; system-fresh wipes; inspect lists via mtools. build-image.sh/mkdisk.sh removed. test-disk.sh boots system.img with a throwaway OVMF varstore — a stale NvVars makes the firmware skip the \EFI\BOOT fallback. sendkeys.py pacing 50ms->250ms/1.5s: keystroke loss under host load corrupted typed lines (guest-side PS/2 ring overflow). Gate: test-disk PASS (fsck clean, file survives poweroff). --- scripts/test-disk.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'scripts/test-disk.sh') diff --git a/scripts/test-disk.sh b/scripts/test-disk.sh index 0268fff..9ffb3c8 100755 --- a/scripts/test-disk.sh +++ b/scripts/test-disk.sh @@ -26,7 +26,7 @@ FRESH=0 OVMF="${OVMF:-/usr/share/edk2/x64/OVMF.4m.fd}" QEMU="${QEMU:-qemu-system-x86_64}" -IMG="${DISK_IMG:-/tmp/disk.img}" +IMG="${SYSTEM_IMG:-/tmp/system.img}" ESP_DIR="$PROJECT_DIR/esp" QPID=/tmp/rsdos-test-qpid SOCK=/tmp/rsdos-test-qmon.sock @@ -69,29 +69,29 @@ wait_qemu_exit() { echo "==> 1/6 build kernel (debug)" cargo build --package rsdos --target x86_64-unknown-uefi -echo "==> 2/6 deploy to ESP + ensure disk image" -mkdir -p "$ESP_DIR/EFI/BOOT" -cp target/x86_64-unknown-uefi/debug/rsdos.efi "$ESP_DIR/EFI/BOOT/BOOTX64.EFI" +echo "==> 2/6 ensure system image" if [ "$FRESH" -eq 1 ]; then - "$SCRIPT_DIR/mkdisk.sh" --fresh "$IMG" + "$SCRIPT_DIR/mksystem.sh" --force "$IMG" else - "$SCRIPT_DIR/mkdisk.sh" "$IMG" + "$SCRIPT_DIR/mksystem.sh" "$IMG" fi echo "==> 3/6 boot QEMU (headless)" kill "$(cat "$QPID" 2>/dev/null)" 2>/dev/null || true sleep 1 rm -f "$SOCK" "$LOG" -"$QEMU" -bios "$OVMF" \ +# Throwaway OVMF varstore: a stale/poisoned NvVars (e.g. left by the old +# vvfat setup) makes the firmware skip the \EFI\BOOT fallback entirely. +NV="/tmp/rsdos-test-ovmf-vars.fd" +rm -f "$NV" +cp /usr/share/edk2/x64/OVMF.4m.fd "$NV" +"$QEMU" -bios "$NV" \ -drive file="$IMG",format=raw,if=none,id=disk \ -device ide-hd,drive=disk,bus=ide.0 \ - -drive file=fat:rw:"$ESP_DIR",format=raw,if=none,id=esp \ - -device ide-hd,drive=esp,bus=ide.1 \ -serial file:"$LOG" \ -monitor unix:"$SOCK",server,nowait \ -m 256M -machine q35 -cpu qemu64 -no-reboot -display none \ >"$QLOG" 2>&1 & -echo $! >"$QPID" wait_log "$LOG" "boot: entering shell" 90 || fail "kernel never reached the shell" sleep 1 -- cgit v1.2.3