diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-01 01:56:12 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-01 01:56:12 +0200 |
| commit | 4ea992c71dd0cdcffe0f74216e748256bd700a31 (patch) | |
| tree | 2992b0063f08fbf79586d35ad481539fd7ee9af4 /rsnix/src | |
| parent | ahci: skip ATAPI ports and fast-fail on device abort (diff) | |
| download | rs-dos-4ea992c71dd0cdcffe0f74216e748256bd700a31.tar.gz rs-dos-4ea992c71dd0cdcffe0f74216e748256bd700a31.zip | |
scripts: automate the data-disk workflow (mkdisk / sendkeys / test-disk)
- scripts/mkdisk.sh: create the FAT32 disk with mkfs.fat -C (the flag
that actually creates the file — plain mkfs.fat fails on a missing
path), accept M/G/K sizes, seed seed/ files via mtools; --fresh
re-formats, --no-seed skips seeding
- scripts/sendkeys.py: type lines into the guest via the QEMU monitor
(US layout). Punctuation must use QEMU's named keys (minus, slash,
dot, ...) — bare '-', '.', '/' are not valid sendkey names, and '-'
is the modifier separator, so they were silently dropped before
- scripts/test-disk.sh: full automated round trip — build, deploy,
ensure image, boot headless QEMU, drive the shell (ls /disk, mkdir,
echo >, cat, poweroff), then verify with fsck.fat (must be clean)
and mtype (file content must have survived poweroff)
- Makefile: make disk / disk-fresh / inspect / test-disk; run, run-gui
and debug now auto-create a missing DISK_IMG; fix the stale comment
(mkfs.fat without -C)
- scripts/boot.sh: auto-create a missing DISK_IMG via mkdisk.sh
- seed/: motd.txt + lines.txt seeded onto fresh images
- Verified end to end: ./scripts/test-disk.sh --fresh passes
Diffstat (limited to 'rsnix/src')
| -rw-r--r-- | rsnix/src/ahci.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/rsnix/src/ahci.rs b/rsnix/src/ahci.rs index 2efe3b4..427345d 100644 --- a/rsnix/src/ahci.rs +++ b/rsnix/src/ahci.rs | |||
| @@ -182,7 +182,10 @@ fn start_port(abar: usize, port_idx: u32) -> Option<Disk> { | |||
| 182 | }; | 182 | }; |
| 183 | // IDENTIFY DEVICE as a sanity check + to learn the capacity. | 183 | // IDENTIFY DEVICE as a sanity check + to learn the capacity. |
| 184 | if issue(&d, ATA_IDENTIFY, 0, 1, false).is_err() { | 184 | if issue(&d, ATA_IDENTIFY, 0, 1, false).is_err() { |
| 185 | crate::serial_println!("ahci: IDENTIFY failed on port {} (not an ATA disk?)", port_idx); | 185 | crate::serial_println!( |
| 186 | "ahci: IDENTIFY failed on port {} (not an ATA disk?)", | ||
| 187 | port_idx | ||
| 188 | ); | ||
| 186 | return None; | 189 | return None; |
| 187 | } | 190 | } |
| 188 | let id = unsafe { core::slice::from_raw_parts(d.buf as *const u16, 256) }; | 191 | let id = unsafe { core::slice::from_raw_parts(d.buf as *const u16, 256) }; |
