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/build-image.sh | 99 -------------------------------------------------- 1 file changed, 99 deletions(-) delete mode 100755 scripts/build-image.sh (limited to 'scripts/build-image.sh') diff --git a/scripts/build-image.sh b/scripts/build-image.sh deleted file mode 100755 index 02672ad..0000000 --- a/scripts/build-image.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bash -# -# scripts/build-image.sh — assemble a bootable rs-dos disk image (UEFI/GPT) -# -# Layout: -# Partition 1: ESP (FAT32) — rsboot bootloader + kernel -# -# Output: -# rs-dos.img (or custom path) — bootable raw disk image for UEFI -# -# Usage: -# ./scripts/build-image.sh [output.img] -# -set -euo pipefail - -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PROJECT_DIR="$(dirname "$SCRIPT_DIR")" - -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=debug -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 --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 - -# 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 - -# 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 "" -echo "=== Done: $IMAGE ===" -ls -lh "$IMAGE" -echo "" -echo "Boot with: ./scripts/boot-image.sh" -echo "USB: sudo dd if=$IMAGE of=/dev/sdX bs=4M status=progress" -- cgit v1.2.3