feat(build): QEMU boots the stick; the data stick over USB

qemu-stick boots the amd64 stick image (build/boards/pc/lithos-pc.img,
copied per run) as a USB drive on q35, exactly as hardware would.
DATASTICK=1 adds the data stick to any qemu run as a second USB drive.
qemu_session.py gains --target and the stick_boot and datastick modes.

Checks: stick_boot (the stick's own identity partition attaches, headless
on a blank identity); datastick on amd64/aarch64/riscv64 (both drives
found, the data stick's 500 MiB identity attaches); the seven GPT modes,
the identity-gate and increment 1 sessions, emergency; the suite; three
acceptance boots to [zuse@Hera] ok> with POST 538/538 and
dict_hash=0xfec8c47cfc6f437f; test-32 0 failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-27 16:31:27 -04:00
co-authored by Claude Opus 5.5
parent e177c5c6b3
commit c416c805cb
66 changed files with 5147 additions and 5 deletions
+4 -1
View File
@@ -254,7 +254,10 @@ first and seen to fail:
2. **The GPT reader** and partition block devices, every ISA (§4); raw devices still read as now.
3. **The images:** the stick (three partitions) and the data stick (two), Artemis formatted and
signed at build (§4); QEMU boots the stick as a USB stick, and every `clean qemu` boot attaches
the data stick (§9).
the data stick (§9). **Amended (Captain Bob, 2026-10-27):** the data stick is wired into the
`qemu` targets behind `DATASTICK=1`, off by default -- until increments 4 and 5 the kernel cannot
take Artemis from it or mint Zuse onto it, so as the default it would leave every acceptance boot
headless. Increment 5 turns it on and retires the scratch pair and the virtio disk.
4. **Artemis and Zuse from one disk:** the boot device from the loader, the partitions found and
attached, virtio Artemis off the v4 path; recognition of a minted stick; entropy on the v4 path;
`system=v3` refused on a stick (§4, §5).