Files
LithosAnanake/kernel/include/starkernel/v4/sk_v4_identity.h
T
rajamesandClaude Opus 5.5 1e8a6fed34 feat(kernel): Artemis and Zuse from one disk -- the stick; virtio Artemis leaves v4
sk_v4_identity.c: a USB drive is this system's stick if its GPT has both StarshipOS partitions and
it is the disk the loader booted from (BootDisk's DiskGUID), or, when the boot was not from a
stick, the first such disk while none is attached. Then: its Artemis partition must carry a good
artemis_sig ('Artemis: the stick's signature is bad -- not used' otherwise), is attached first --
the first disk slot -- ('Artemis: the stick's partition attached'), Zuse's key is read from its
genesis marker, and its identity partition is checked and attached as before. Any other drive,
raw or GPT: 'USB: a drive that is not this system's stick -- not used'. On a pull the identity
partition is detached, then Artemis. sk_v4_identity_boot / sk_v4_run take the loader's BootDisk.
kernel_main.c: no virtio Artemis on the v4 path. kernel/Makefile: ARTDISK= attaches no virtio disk
(every QEMU target); ARTDISK stays for system=v3.

STICK.md 4 amended as ruled (R2): on v4 only this system's stick is used; users' drives minted by
this system's Zuse come with the users design after INSTALL. BRINGUP.md: Secure Boot off on every
PC (ruled 2026-10-28), RDRAND in QEMU, the SER5 smoke-test stick, A4 not on v4.

Tests: new stick_artemis (x3, no virtio disk), stick_zuse, two_sticks (replaces datastick),
artemis_unsigned, raw_ident; changed stick_boot, gpt_zuse, gpt_hotplug, midpull (replug) -- all
failed before, pass after (two test defects found and fixed: the signature's offset, the 63-char
log cut). Regression 20/20. 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 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 16:10:33 -04:00

39 lines
1.6 KiB
C

/* sk_v4_identity.h -- the identity gate for the v4 boot: no identity drive,
* headless; Zuse's minted thumbdrive, a console.
* docs/v4.0.0/plans/2026-10-26-engine-step4-identity-gate.md.
*
* Built only with STARFORTH_V4=1 (Kconfig.kernel).
*/
#ifndef STARKERNEL_V4_SK_V4_IDENTITY_H
#define STARKERNEL_V4_SK_V4_IDENTITY_H
#include "uefi.h" /* BootDisk */
/* After POST and the block chain: every xHCI controller brought up, and the
* heartbeat started, as the v3 path does before its headless wait. `boot_disk`
* is the loader's (uefi_loader.c): a USB disk is this system's stick if it is
* that disk, or -- when the boot disk is not a stick -- the first USB disk
* with both StarshipOS partitions. Zuse's public key is read once the stick's
* Artemis partition is attached (docs/v4.0.0/plans/2026-10-27-stick-4-one-disk.md,
* Task 4). */
void sk_v4_identity_boot(const BootDisk *boot_disk);
/* 1 while Zuse's session holds: her drive is attached and checked. */
int sk_v4_identity_present(void);
/* Service the heartbeat and, once a second, the USB drives that have arrived
* or left (v3's idle beat, its USB part). Called while waiting for a key
* with nothing typed. */
void sk_v4_identity_beat(void);
/* The USB drives that have arrived or left, now, not waiting for the next
* beat: before each prompt, so that a drive pulled while the last line ran
* is seen before a prompt is shown. */
void sk_v4_identity_check_now(void);
/* Headless: no prompt, and what is typed is read and dropped, until Zuse's
* session begins (v3's sk_repl_headless_wait()). */
void sk_v4_identity_wait(void);
#endif /* STARKERNEL_V4_SK_V4_IDENTITY_H */