make qemu: drop auto-kill/DOE-inject wait loop, run interactively

The qemu target used to poll the serial log for ok>/zuse)ok>, then
unconditionally kill the VM (optionally injecting EXEC-DOE first) — a
DoE-campaign automation shape that also fired during plain interactive
use, cutting the session out from under you the moment the prompt
appeared. All three arch branches (amd64/aarch64/riscv64) now just run
qemu-system-* in the foreground and block until it's closed manually;
serial logging to logs/ and DoE CSV extraction on exit are unchanged.

Also includes BLOCK_MAP.md/artemis.img/amd64.csv regenerated by the
qemu-esp test run, and that run's log/CSV artifacts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-12 16:56:35 -04:00
co-authored by Claude Sonnet 5
parent 59458a0a16
commit 2822e52ea8
6 changed files with 8724 additions and 111 deletions
+6 -72
View File
@@ -737,7 +737,7 @@ ifeq ($(ARCH),amd64)
SERIAL_SOCK=$(BUILD_DIR)/qemu-serial-amd64-$$TS.sock; \
echo "=== Launching QEMU (amd64) ==="; \
echo " Serial log: $$LOG"; \
echo " (exits when EXEC-DOE completes)"; \
echo " (interactive — close the window or QEMU monitor 'quit' to exit)"; \
echo ""; \
touch $$LOG; \
tail -n +1 -f $$LOG & TAILPID=$$!; \
@@ -754,29 +754,7 @@ ifeq ($(ARCH),amd64)
-chardev socket,id=cserial,path=$$SERIAL_SOCK,server=on,wait=off,logfile=$$LOG \
-serial chardev:cserial \
-display $(QEMU_DISPLAY) \
-no-reboot & QPID=$$!; \
DEADLINE=$$(( $$(date +%s) + 43200 )); \
echo " Waiting for ok> / zuse)ok> prompt..."; \
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
sleep 1; \
done; \
if grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; then \
if [ "$(DOE_INJECT)" = "1" ]; then \
echo " ok>/zuse)ok> detected — injecting EXEC-DOE..."; \
sleep 0.5; \
printf '$(DOE_SEED) $(DOE_REPS) EXEC-DOE\n' | socat - UNIX-CONNECT:$$SERIAL_SOCK 2>/dev/null || true; \
echo " Waiting for DoE to complete..."; \
DEADLINE2=$$(( $$(date +%s) + 14400 )); \
while [ "$$(grep -cE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null)" -lt 3 ]; do \
[ $$(date +%s) -ge $$DEADLINE2 ] && echo " TIMEOUT waiting for DoE" && break; \
sleep 1; \
done; \
else \
echo " ok>/zuse)ok> detected — DOE_INJECT=0, skipping EXEC-DOE injection."; \
fi; \
fi; \
kill $$QPID 2>/dev/null; wait $$QPID 2>/dev/null || true; \
-no-reboot; \
kill $$TAILPID 2>/dev/null; wait $$TAILPID 2>/dev/null || true; \
rm -f $$SERIAL_SOCK; \
echo ""; \
@@ -821,7 +799,7 @@ else ifeq ($(ARCH),aarch64)
echo "=== Launching QEMU (aarch64) ==="; \
echo " ISO: $(QEMU_ISO)"; \
echo " Serial log: $$LOG"; \
echo " (exits when EXEC-DOE completes)"; \
echo " (interactive — close the window or QEMU monitor 'quit' to exit)"; \
echo ""; \
touch $$LOG; \
tail -n +1 -f $$LOG & TAILPID=$$!; \
@@ -839,29 +817,7 @@ else ifeq ($(ARCH),aarch64)
-display $(QEMU_DISPLAY) \
-m 2048 \
-no-reboot \
-d guest_errors & QPID=$$!; \
DEADLINE=$$(( $$(date +%s) + 43200 )); \
echo " Waiting for ok> / zuse)ok> prompt..."; \
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
sleep 1; \
done; \
if grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; then \
if [ "$(DOE_INJECT)" = "1" ]; then \
echo " ok>/zuse)ok> detected — injecting EXEC-DOE..."; \
sleep 0.5; \
printf '$(DOE_SEED) $(DOE_REPS) EXEC-DOE\n' | socat - UNIX-CONNECT:$$SERIAL_SOCK 2>/dev/null || true; \
echo " Waiting for DoE to complete..."; \
DEADLINE2=$$(( $$(date +%s) + 14400 )); \
while [ "$$(grep -cE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null)" -lt 3 ]; do \
[ $$(date +%s) -ge $$DEADLINE2 ] && echo " TIMEOUT waiting for DoE" && break; \
sleep 1; \
done; \
else \
echo " ok>/zuse)ok> detected — DOE_INJECT=0, skipping EXEC-DOE injection."; \
fi; \
fi; \
kill $$QPID 2>/dev/null; wait $$QPID 2>/dev/null || true; \
-d guest_errors; \
kill $$TAILPID 2>/dev/null; wait $$TAILPID 2>/dev/null || true; \
rm -f $$SERIAL_SOCK; \
echo ""; \
@@ -920,7 +876,7 @@ else ifeq ($(ARCH),riscv64)
SERIAL_SOCK=$(BUILD_DIR)/qemu-serial-riscv64-$$TS.sock; \
echo "=== Launching QEMU (riscv64) ==="; \
echo " Serial log: $$LOG"; \
echo " (exits when EXEC-DOE completes)"; \
echo " (interactive — close the window or QEMU monitor 'quit' to exit)"; \
echo ""; \
touch $$LOG; \
tail -n +1 -f $$LOG & TAILPID=$$!; \
@@ -940,29 +896,7 @@ else ifeq ($(ARCH),riscv64)
-serial chardev:cserial \
-display $(QEMU_DISPLAY) \
-no-reboot \
-d guest_errors & QPID=$$!; \
DEADLINE=$$(( $$(date +%s) + 43200 )); \
echo " Waiting for ok> / zuse)ok> prompt..."; \
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
sleep 1; \
done; \
if grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; then \
if [ "$(DOE_INJECT)" = "1" ]; then \
echo " ok>/zuse)ok> detected — injecting EXEC-DOE..."; \
sleep 0.5; \
printf '$(DOE_SEED) $(DOE_REPS) EXEC-DOE\n' | socat - UNIX-CONNECT:$$SERIAL_SOCK 2>/dev/null || true; \
echo " Waiting for DoE to complete..."; \
DEADLINE2=$$(( $$(date +%s) + 14400 )); \
while [ "$$(grep -cE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null)" -lt 3 ]; do \
[ $$(date +%s) -ge $$DEADLINE2 ] && echo " TIMEOUT waiting for DoE" && break; \
sleep 1; \
done; \
else \
echo " ok>/zuse)ok> detected — DOE_INJECT=0, skipping EXEC-DOE injection."; \
fi; \
fi; \
kill $$QPID 2>/dev/null; wait $$QPID 2>/dev/null || true; \
-d guest_errors; \
kill $$TAILPID 2>/dev/null; wait $$TAILPID 2>/dev/null || true; \
rm -f $$SERIAL_SOCK; \
echo ""; \