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/build-image-release.sh | 91 +++++------------------------------------- 1 file changed, 11 insertions(+), 80 deletions(-) (limited to 'scripts/build-image-release.sh') diff --git a/scripts/build-image-release.sh b/scripts/build-image-release.sh index 32f8f91..e4c5250 100755 --- a/scripts/build-image-release.sh +++ b/scripts/build-image-release.sh @@ -1,99 +1,30 @@ #!/usr/bin/env bash # -# scripts/build-image.sh — assemble a bootable rs-dos disk image (UEFI/GPT) +# scripts/build-image-release.sh — build the release GPT disk image # -# Layout: -# Partition 1: ESP (FAT32) — rsboot bootloader + kernel -# -# Output: -# rs-dos.img (or custom path) — bootable raw disk image for UEFI +# Produces a single dd-able system image with the release build of +# the kernel, rsboot bootloader, and all binaries in /bin/. # # Usage: -# ./scripts/build-image.sh [output.img] +# ./scripts/build-image-release.sh [output.img] # set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PROJECT_DIR="$(dirname "$SCRIPT_DIR")" - +PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" cd "$PROJECT_DIR" -BUILD_DIR="$PROJECT_DIR/build" -ESP_DIR="$PROJECT_DIR/esp" - -IMAGE="${1:-$PROJECT_DIR/rs-dos.img}" -TARGET=x86_64-unknown-uefi -PROFILE=release -OUT_DIR="target/${TARGET}/${PROFILE}" - -BOOTLOADER="$BUILD_DIR/bootloader/BOOTX64.EFI" -KERNEL="$OUT_DIR/rsdos.efi" -BZIMAGE="$ESP_DIR/bzImage" -INITRD="$ESP_DIR/initramfs.cpio.gz" -BOOT_EFI="$ESP_DIR/EFI/BOOT/BOOTX64.EFI" - -ESP_START=2048 # 1 MiB offset (standard alignment) -ESP_SIZE_MB=64 - -IMAGE_SIZE_MB=$((ESP_SIZE_MB + 2)) # ESP + GPT gap + backup - -# ---- checks ---- -for cmd in sfdisk mkfs.vfat mcopy truncate dd; do - if ! command -v "$cmd" &>/dev/null; then - echo "Error: $cmd not found" - exit 1 - fi -done - -# ---- build kernel ---- -echo "[1/4] Building kernel..." -cargo build --release --package rsdos --target x86_64-unknown-uefi ${CARGO_FLAGS:-} - -# ---- build bootloader ---- -echo "[2/4] Building bootloader..." -if [ ! -f "$BOOTLOADER" ]; then - "$SCRIPT_DIR/build-bootloader.sh" -fi - -# ---- assemble ESP ---- -echo "[3/4] Assembling ESP..." -mkdir -p "$ESP_DIR/EFI/BOOT" -cp "$KERNEL" "$BZIMAGE" -cp "$BOOTLOADER" "$BOOT_EFI" -if [ ! -f "$INITRD" ]; then - printf '' | gzip >"$INITRD" -fi - -# ---- create disk image ---- -echo "[4/4] Writing disk image..." -rm -f "$IMAGE" -truncate -s "${IMAGE_SIZE_MB}M" "$IMAGE" - -# GPT partition table: single EFI System partition -sfdisk --quiet "$IMAGE" </dev/null 2>&1 +IMAGE="${1:-rs-dos.img}" -# Copy files into FAT -mmd -i "$ESP_IMG" ::/EFI 2>/dev/null || true -mmd -i "$ESP_IMG" ::/EFI/BOOT 2>/dev/null || true -mcopy -i "$ESP_IMG" "$BOOT_EFI" ::/EFI/BOOT/BOOTX64.EFI -mcopy -i "$ESP_IMG" "$BZIMAGE" ::/bzImage 2>/dev/null || true -mcopy -i "$ESP_IMG" "$INITRD" ::/initramfs.cpio.gz 2>/dev/null || true +echo "=== Building release kernel ===" +cargo build --release --package rsdos --target x86_64-unknown-uefi -# Inject FAT into image at partition offset -dd if="$ESP_IMG" of="$IMAGE" bs=512 seek="$ESP_START" conv=notrunc 2>/dev/null -rm -f "$ESP_IMG" +echo "=== Building system image (chain + GPT) ===" +"$SCRIPT_DIR/mksystem.sh" --chain --gpt "$IMAGE" echo "" echo "=== Done: $IMAGE ===" ls -lh "$IMAGE" echo "" -echo "Boot with: ./scripts/boot-image.sh" +echo "Boot with: ./scripts/boot-image.sh --gui" echo "USB: sudo dd if=$IMAGE of=/dev/sdX bs=4M status=progress" -- cgit v1.2.3