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>
20 lines
790 B
C
20 lines
790 B
C
/* sk_v4.h -- StarForth v4 on bare metal: one host node at a prompt.
|
|
*
|
|
* Built only with STARFORTH_V4=1 (Kconfig.kernel).
|
|
*/
|
|
#ifndef STARKERNEL_V4_SK_V4_H
|
|
#define STARKERNEL_V4_SK_V4_H
|
|
|
|
#include "uefi.h" /* BootDisk */
|
|
|
|
/* Start one StarForth v4 host node from the capsule image linked into the
|
|
* kernel, with its console on the kernel's console, and run it. Does not
|
|
* return. */
|
|
/* `chain` sets the kernel's block chain up. It is called when the node has
|
|
* booted and passed POST, before the prompt: as on the v3 path, POST runs
|
|
* against block RAM of its own and the chain comes after it. `boot_disk` is
|
|
* the loader's: which disk it booted from (sk_v4_identity_boot()). */
|
|
void sk_v4_run(void (*chain)(void), const BootDisk *boot_disk);
|
|
|
|
#endif /* STARKERNEL_V4_SK_V4_H */
|