test(build): Zuse's minted pair as a stick -- the acceptance boots and the sessions use it
mkdiskimage.sh --starship-from IDENT ART lays a minted pair out as a StarshipOS stick: an identity partition holding IDENT's bytes and an Artemis partition holding ART's, each exactly its file's size (Artemis's signature and fence are placed from the volume's size). kernel/Makefile: a zusestick target, made fresh for every boot, is ZUSEDISK's default (ZUSE_PAIR names the pair); STICK_PAIR puts the pair in the PC stick. qemu_session.py's Zuse drive is the pair as a stick. check_images.sh checks both forms byte for byte against the pair (60 PASS). On today's kernel all 23 sessions pass on the Zuse stick, and acceptance: amd64, aarch64, riscv64 to [zuse@Hera] ok>, POST 538/538, dict_hash 0xfec8c47cfc6f437f; v4 suite and test-32 0 failures. The plan gains Task 5, screen=boot (ruled 2026-10-28). Plan: docs/v4.0.0/plans/2026-10-27-stick-4-one-disk.md, Task 1 (R1 as recommended). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b2278b6204
commit
38b2b9693a
+22
-5
@@ -162,7 +162,13 @@ XHCI_ARGS_SLOT4 := $(if $(strip $(XHCI_QEMU_ARGS)),$(XHCI_QEMU_ARGS),$(XHCI_D
|
||||
# xhci_poll_events() alone is purely hotplug-event-driven and would never
|
||||
# see a device present before controller reset. Override to "" (empty) to
|
||||
# boot without Zuse attached, e.g. `make -f kernel/Makefile qemu ZUSEDISK=`.
|
||||
ZUSEDISK ?= disk/zuse-scratch/zuse-thumb-ident.img
|
||||
# Since 2026-10-27 (docs/v4.0.0/plans/2026-10-27-stick-4-one-disk.md, R1) the default is the
|
||||
# Zuse stick: the minted pair in ZUSE_PAIR laid out as a StarshipOS stick (`zusestick`, made
|
||||
# fresh for every boot), identity and Artemis partitions on one disk, as STICK.md 4 has them.
|
||||
ZUSE_PAIR ?= disk/zuse-scratch
|
||||
ZUSESTICK_IMG = $(BUILD_DIR)/zusestick.img
|
||||
ZUSEDISK ?= $(ZUSESTICK_IMG)
|
||||
ZUSESTICK_DEP = $(if $(filter $(ZUSESTICK_IMG),$(ZUSEDISK)),zusestick)
|
||||
# Precomputed (not inlined as $(if ...,...)) because the drive/device specs
|
||||
# below are comma-heavy and GNU make's $(if) function splits its own
|
||||
# arguments on every top-level comma -- inlining it silently truncated the
|
||||
@@ -242,6 +248,9 @@ STICK_ESP_MIB := 64
|
||||
STICK_IDENT_MIB := 500
|
||||
DATASTICK_MIB := 1536
|
||||
DATASTICK_IMG = $(BUILD_DIR)/datastick.img
|
||||
# STICK_PAIR -- a minted pair (e.g. disk/zuse-scratch) whose identity and Artemis images become
|
||||
# the PC stick's partitions, byte for byte, instead of a blank identity and a fresh Artemis.
|
||||
STICK_PAIR ?=
|
||||
|
||||
# ==============================================================================
|
||||
# TOOLCHAIN
|
||||
@@ -781,6 +790,12 @@ datastick: $(MKARTEMIS_BIN)
|
||||
@bash scripts/mkdiskimage.sh --out $(DATASTICK_IMG) --table gpt --size-mib $(DATASTICK_MIB) \
|
||||
--label DATASTICK --starship $(STICK_IDENT_MIB) --mkartemis $(MKARTEMIS_BIN) --esp-mib 0
|
||||
|
||||
# zusestick -- Zuse's minted pair as a stick, fresh every time it is made (the ZUSEDISK default).
|
||||
.PHONY: zusestick
|
||||
zusestick:
|
||||
@bash scripts/mkdiskimage.sh --out $(ZUSESTICK_IMG) --table gpt --label ZUSESTICK --esp-mib 0 \
|
||||
--starship-from $(ZUSE_PAIR)/zuse-thumb-ident.img $(ZUSE_PAIR)/artemis.img
|
||||
|
||||
# Generate capsule_generated.c from capsules/
|
||||
CAPSULE_SRCS := $(shell find $(CAPSULES_DIR) -type f ! -name '.*' 2>/dev/null)
|
||||
$(CAPSULE_GENERATED): $(MKCAPSULE_BIN) $(CAPSULE_SRCS)
|
||||
@@ -1005,7 +1020,7 @@ QEMU_DISPLAY ?= gtk
|
||||
# above) to give real ports to Zuse plus every identity drive attached this way.
|
||||
QEMU_EXTRA ?=
|
||||
|
||||
qemu: all $(DATASTICK_DEP)
|
||||
qemu: all $(DATASTICK_DEP) $(ZUSESTICK_DEP)
|
||||
ifeq ($(ARCH),amd64)
|
||||
@echo "=== Building ISO (amd64) ==="
|
||||
@mkdir -p $(BUILD_DIR)/iso
|
||||
@@ -1370,7 +1385,7 @@ $(RPI5_NATIVE_IMG): $(RPI5_NATIVE_ELF)
|
||||
# everything else is the Pi 5 image. One QEMU, foreground, serial to
|
||||
# logs/<TS>/aarch64-rpi5/ (2026-10-14, FABRIC-3.md SXXXIX).
|
||||
.PHONY: rpi5-rehearsal
|
||||
rpi5-rehearsal:
|
||||
rpi5-rehearsal: $(ZUSESTICK_DEP)
|
||||
@if [ "$(ARCH)" != "aarch64" ] || [ "$(RPI5_NATIVE_BASE)" != "0x40080000" ]; then \
|
||||
echo "rpi5-rehearsal: ARCH=aarch64 RPI5_NATIVE_BASE=0x40080000"; exit 1; fi
|
||||
@rm -f $(RPI5_NATIVE_ELF) $(RPI5_NATIVE_IMG)
|
||||
@@ -1421,8 +1436,10 @@ boot_image: all $(if $(BOARD_STICK),$(MKARTEMIS_BIN))
|
||||
@# stick (A6); KERNEL_ARGS after it, and a later system= wins.
|
||||
@printf '%s\n' 'system=v4 $(KERNEL_ARGS)' > $(BOARD_OUT)/starforth.cfg
|
||||
@bash scripts/mkdiskimage.sh --out $(BOARD_OUT)/$(BOARD_IMAGE) --table gpt \
|
||||
$(if $(BOARD_STICK),--size-mib $(STICK_IMAGE_MIB) --starship $(STICK_IDENT_MIB) \
|
||||
--mkartemis $(MKARTEMIS_BIN) --esp-mib $(STICK_ESP_MIB),--size-mib $(BOOT_IMAGE_SIZE_MIB)) \
|
||||
$(if $(BOARD_STICK),$(if $(STICK_PAIR),--esp-mib $(STICK_ESP_MIB) --starship-from \
|
||||
$(STICK_PAIR)/zuse-thumb-ident.img $(STICK_PAIR)/artemis.img,--size-mib $(STICK_IMAGE_MIB) \
|
||||
--starship $(STICK_IDENT_MIB) --mkartemis $(MKARTEMIS_BIN) --esp-mib $(STICK_ESP_MIB)), \
|
||||
--size-mib $(BOOT_IMAGE_SIZE_MIB)) \
|
||||
--label LITHOS \
|
||||
$(LOADER_EFI):/EFI/BOOT/$(EFI_BOOTNAME) \
|
||||
$(BOARD_OUT)/startup.nsh:/startup.nsh \
|
||||
|
||||
Reference in New Issue
Block a user