diff options
| author | salmonik <salmonik@tuta.io> | 2026-07-31 21:29:49 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-07-31 21:29:49 +0200 |
| commit | 3997ec4d2d7d6f69b08d0c04ce8de0df03c52a45 (patch) | |
| tree | 60c5b079103e74d919a32b24276c536e69ce82f7 /scripts/qemu.sh | |
| parent | ahci: SATA driver + FAT32 persistent disk mounted at /disk (diff) | |
| download | rs-dos-3997ec4d2d7d6f69b08d0c04ce8de0df03c52a45.tar.gz rs-dos-3997ec4d2d7d6f69b08d0c04ce8de0df03c52a45.zip | |
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
Diffstat (limited to '')
| -rwxr-xr-x | scripts/qemu.sh | 4 |
1 files changed, 2 insertions, 2 deletions
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 | |||
| 41 | --image | -i) | 41 | --image | -i) |
| 42 | _img_file="$(printf -- '-drive file=%s,format=raw,if=none,id=hd' "$2")" | 42 | _img_file="$(printf -- '-drive file=%s,format=raw,if=none,id=hd' "$2")" |
| 43 | # Explicit buses: data disk -> ide.0 (port 0), ESP -> ide.1. | 43 | # Explicit buses: data disk -> ide.0 (port 0), ESP -> ide.1. |
| 44 | DRIVE_ARGS=("$_img_file" '-device' 'ide-hd,drive=hd,bus=ide.0' \ | 44 | DRIVE_ARGS=("$_img_file" '-device' 'ide-hd,drive=hd,bus=ide.0' |
| 45 | '-drive' 'file=fat:rw:esp,format=raw,if=none,id=esp' \ | 45 | '-drive' 'file=fat:rw:esp,format=raw,if=none,id=esp' |
| 46 | '-device' 'ide-hd,drive=esp,bus=ide.1') | 46 | '-device' 'ide-hd,drive=esp,bus=ide.1') |
| 47 | shift 2 | 47 | shift 2 |
| 48 | ;; | 48 | ;; |
