#!/bin/bash set -euo pipefail IMG="boot.img" IMG_SIZE_KB=4096 TARGET="riscv64gc-unknown-none-elf" BUILD_DIR="target/${TARGET}/release" echo "=== Creating k-os boot disk image ===" dd if=/dev/zero of="${IMG}" bs=1K count=${IMG_SIZE_KB} 2>/dev/null mformat -i "${IMG}" -t 8 -h 2 -s 32 -r 16 -c 1 -M 512 :: echo "Created and formatted ${IMG} (${IMG_SIZE_KB}KB, FAT16)" # Copy with 8.3 names (no long filenames, no tilde mangling) copy() { local src="$1" dst="$2" if [ -f "${BUILD_DIR}/${src}" ]; then mcopy -i "${IMG}" "${BUILD_DIR}/${src}" "::${dst}" echo " ${dst}" fi } copy init "init.elf" copy echo "echo.elf" copy snake "snake.elf" copy display-qemu "display.elf" copy input-server "input.elf" copy log-server "log.elf" copy permission-manager "permis.elf" copy storage-qemu "storage.elf" copy session-server "session.elf" echo "" echo "Disk contents:" mdir -i "${IMG}" :: echo "=== Done: ${IMG} ==="