feat(kernel): screen=boot keeps the console on the screen until login -- for watching a PC boot
KernelArgs gains screen_boot; cmdline.c parses screen=boot (with or without --; any other value: off). With it, the v4 boot keeps the console mirrored to the framebuffer after POST, with the TTF font, and says 'Screen: the console stays on until login (screen=boot)'; login and logout work as without it, and nothing can be typed without Zuse. Without it, unchanged. For the SER5, which has no known serial port (ruled 2026-10-28). BRINGUP.md: the smoke test's stick and starforth.cfg. Tests: screen_boot (new) failed on amd64 and aarch64 before, passes on all three ISAs after; screen_dark_until_login, screen_dark_after_logout, zuse pass. Acceptance: amd64, aarch64, riscv64 to [zuse@Hera] ok>, POST 538/538, dict_hash 0xfec8c47cfc6f437f; v4 suite and test-32 0 failures. Plan: docs/v4.0.0/plans/2026-10-27-stick-4-one-disk.md, Task 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
1e8a6fed34
commit
954b4d5f70
+15
-1
@@ -58,6 +58,9 @@ the stick's, plan 2026-10-26-stick-1-screen-and-keyboard.md):
|
||||
artemis_unsigned the Zuse stick with its Artemis signature zeroed: "signature is bad -- not
|
||||
used", nothing attached, headless
|
||||
raw_ident Zuse's raw identity image, no GPT: "not this system's stick -- not used", headless
|
||||
screen_boot KERNEL_ARGS=screen=boot, no drive: "Screen: the console stays on until login
|
||||
(screen=boot)"; 30 s after POST the screen is not black; no ok> (plan
|
||||
2026-10-27-stick-4-one-disk.md, Task 5)
|
||||
stick_v3 --target qemu-stick, system=v3 in the stick's starforth.cfg: "Boot disk: a StarshipOS
|
||||
stick", the refusal, then v4's POST; no v3 (plan 2026-10-27-stick-4-one-disk.md, Task 3)
|
||||
entropy after "System: StarForth v4", the entropy backend -- rdrand on amd64 (qemu and
|
||||
@@ -85,7 +88,7 @@ NO_ZUSE_MODES = {"gpt_zuse", "gpt_hotplug", "gpt_foreign", "gpt_bad_crc", "gpt_b
|
||||
"gpt_read_error", "headless", "hotplug", "midpull", "waitpull", "typeahead", "emergency",
|
||||
"alttab_after_logout", "alttab_before_pull", "emergency_pull",
|
||||
"screen_dark_until_login", "screen_console_after_login", "screen_dark_after_logout",
|
||||
"kbd_typeahead", "stick_boot", "stick_v3", "stick_zuse"}
|
||||
"kbd_typeahead", "stick_boot", "stick_v3", "stick_zuse", "screen_boot"}
|
||||
label = a.label or f"{a.mode}-{a.arch}"
|
||||
work = os.path.join(ROOT, "build", "qemu-session", label)
|
||||
shutil.rmtree(work, ignore_errors=True)
|
||||
@@ -121,6 +124,8 @@ make_args = ["make", "-f", "kernel/Makefile", f"ARCH={a.arch}", "clean", a.targe
|
||||
f"ZUSEDISK={zdrive if attach_zuse else ''}"] + shlex.split(a.make)
|
||||
if a.mode in ("v3_keys", "stick_v3"):
|
||||
make_args.append("KERNEL_ARGS=system=v3")
|
||||
if a.mode == "screen_boot":
|
||||
make_args.append("KERNEL_ARGS=screen=boot")
|
||||
if a.mode == "stick_zuse":
|
||||
make_args.append(f"STICK_PAIR={work}") # the PC stick with this session's copy of the pair
|
||||
start = time.time()
|
||||
@@ -496,6 +501,15 @@ elif m == "screen_dark_until_login":
|
||||
w, h, lit, _ = screen()
|
||||
check(f"the screen ({w}x{h}) is all black before login ({lit} lit)", lit == 0)
|
||||
|
||||
elif m == "screen_boot":
|
||||
check("Screen: the console stays on until login (screen=boot)",
|
||||
wait_for(r"Screen: the console stays on until login \(screen=boot\)", 60))
|
||||
time.sleep(30)
|
||||
w, h, lit, _ = screen()
|
||||
check(f"the screen ({w}x{h}) shows the console before login ({lit} lit)", lit >= 500)
|
||||
check("no ok> (no one is logged in)", not wait_for(ANYPROMPT, 5))
|
||||
check("no fault", count(r"EXCEPTION|PANIC|panic") == 0)
|
||||
|
||||
elif m in ("screen_console_after_login", "screen_dark_after_logout"):
|
||||
add_zuse(1)
|
||||
check("[zuse@Hera] ok> after attach", wait_for(PROMPT, 120))
|
||||
|
||||
Reference in New Issue
Block a user