diff options
Diffstat (limited to '')
| -rwxr-xr-x | scripts/test-disk.sh | 20 |
1 files changed, 10 insertions, 10 deletions
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 | |||
| 26 | 26 | ||
| 27 | OVMF="${OVMF:-/usr/share/edk2/x64/OVMF.4m.fd}" | 27 | OVMF="${OVMF:-/usr/share/edk2/x64/OVMF.4m.fd}" |
| 28 | QEMU="${QEMU:-qemu-system-x86_64}" | 28 | QEMU="${QEMU:-qemu-system-x86_64}" |
| 29 | IMG="${DISK_IMG:-/tmp/disk.img}" | 29 | IMG="${SYSTEM_IMG:-/tmp/system.img}" |
| 30 | ESP_DIR="$PROJECT_DIR/esp" | 30 | ESP_DIR="$PROJECT_DIR/esp" |
| 31 | QPID=/tmp/rsdos-test-qpid | 31 | QPID=/tmp/rsdos-test-qpid |
| 32 | SOCK=/tmp/rsdos-test-qmon.sock | 32 | SOCK=/tmp/rsdos-test-qmon.sock |
| @@ -69,29 +69,29 @@ wait_qemu_exit() { | |||
| 69 | echo "==> 1/6 build kernel (debug)" | 69 | echo "==> 1/6 build kernel (debug)" |
| 70 | cargo build --package rsdos --target x86_64-unknown-uefi | 70 | cargo build --package rsdos --target x86_64-unknown-uefi |
| 71 | 71 | ||
| 72 | echo "==> 2/6 deploy to ESP + ensure disk image" | 72 | echo "==> 2/6 ensure system image" |
| 73 | mkdir -p "$ESP_DIR/EFI/BOOT" | ||
| 74 | cp target/x86_64-unknown-uefi/debug/rsdos.efi "$ESP_DIR/EFI/BOOT/BOOTX64.EFI" | ||
| 75 | if [ "$FRESH" -eq 1 ]; then | 73 | if [ "$FRESH" -eq 1 ]; then |
| 76 | "$SCRIPT_DIR/mkdisk.sh" --fresh "$IMG" | 74 | "$SCRIPT_DIR/mksystem.sh" --force "$IMG" |
| 77 | else | 75 | else |
| 78 | "$SCRIPT_DIR/mkdisk.sh" "$IMG" | 76 | "$SCRIPT_DIR/mksystem.sh" "$IMG" |
| 79 | fi | 77 | fi |
| 80 | 78 | ||
| 81 | echo "==> 3/6 boot QEMU (headless)" | 79 | echo "==> 3/6 boot QEMU (headless)" |
| 82 | kill "$(cat "$QPID" 2>/dev/null)" 2>/dev/null || true | 80 | kill "$(cat "$QPID" 2>/dev/null)" 2>/dev/null || true |
| 83 | sleep 1 | 81 | sleep 1 |
| 84 | rm -f "$SOCK" "$LOG" | 82 | rm -f "$SOCK" "$LOG" |
| 85 | "$QEMU" -bios "$OVMF" \ | 83 | # Throwaway OVMF varstore: a stale/poisoned NvVars (e.g. left by the old |
| 84 | # vvfat setup) makes the firmware skip the \EFI\BOOT fallback entirely. | ||
| 85 | NV="/tmp/rsdos-test-ovmf-vars.fd" | ||
| 86 | rm -f "$NV" | ||
| 87 | cp /usr/share/edk2/x64/OVMF.4m.fd "$NV" | ||
| 88 | "$QEMU" -bios "$NV" \ | ||
| 86 | -drive file="$IMG",format=raw,if=none,id=disk \ | 89 | -drive file="$IMG",format=raw,if=none,id=disk \ |
| 87 | -device ide-hd,drive=disk,bus=ide.0 \ | 90 | -device ide-hd,drive=disk,bus=ide.0 \ |
| 88 | -drive file=fat:rw:"$ESP_DIR",format=raw,if=none,id=esp \ | ||
| 89 | -device ide-hd,drive=esp,bus=ide.1 \ | ||
| 90 | -serial file:"$LOG" \ | 91 | -serial file:"$LOG" \ |
| 91 | -monitor unix:"$SOCK",server,nowait \ | 92 | -monitor unix:"$SOCK",server,nowait \ |
| 92 | -m 256M -machine q35 -cpu qemu64 -no-reboot -display none \ | 93 | -m 256M -machine q35 -cpu qemu64 -no-reboot -display none \ |
| 93 | >"$QLOG" 2>&1 & | 94 | >"$QLOG" 2>&1 & |
| 94 | echo $! >"$QPID" | ||
| 95 | 95 | ||
| 96 | wait_log "$LOG" "boot: entering shell" 90 || fail "kernel never reached the shell" | 96 | wait_log "$LOG" "boot: entering shell" 90 || fail "kernel never reached the shell" |
| 97 | sleep 1 | 97 | sleep 1 |
