From 3997ec4d2d7d6f69b08d0c04ce8de0df03c52a45 Mon Sep 17 00:00:00 2001 From: salmonik Date: Fri, 31 Jul 2026 21:29:49 +0200 Subject: ahci: scan all ports; fat: mount first valid FAT32 disk The kernel previously started only AHCI port 0, so any launch where the firmware/QEMU put something else on port 0 (e.g. the ESP from an implicit -drive file=fat:rw:esp) left the real disk unnoticed: 'unsupported sector size 0' and no mount. - ahci.rs: enumerate CAP.NP/PI ports, start every port that links up (empty ports settle at DET=0 and are skipped quickly), keep up to 8 disks, and expose disk_count()/select() for the filesystem - fat.rs: try each disk in port order and mount the first valid FAT32 volume; non-FAT disks are logged and skipped - scripts/boot.sh: attach the data disk on ide.0 and the ESP on ide.1 (DISK_IMG env var, default /tmp/disk.img), matching the Makefile - Verified with the disk on port 0 (Makefile style), port 5 (old-style command line), and with the ESP on port 0; fsck.fat stays clean --- scripts/qemu.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts/qemu.sh') diff --git a/scripts/qemu.sh b/scripts/qemu.sh index 123d9d0..b8997ba 100755 --- a/scripts/qemu.sh +++ b/scripts/qemu.sh @@ -41,8 +41,8 @@ while [ $# -gt 0 ]; do --image | -i) _img_file="$(printf -- '-drive file=%s,format=raw,if=none,id=hd' "$2")" # Explicit buses: data disk -> ide.0 (port 0), ESP -> ide.1. - DRIVE_ARGS=("$_img_file" '-device' 'ide-hd,drive=hd,bus=ide.0' \ - '-drive' 'file=fat:rw:esp,format=raw,if=none,id=esp' \ + DRIVE_ARGS=("$_img_file" '-device' 'ide-hd,drive=hd,bus=ide.0' + '-drive' 'file=fat:rw:esp,format=raw,if=none,id=esp' '-device' 'ide-hd,drive=esp,bus=ide.1') shift 2 ;; -- cgit v1.2.3