A boot is a chain of trust and a sequence of handoffs. swift-os keeps both short, and treats boot time as a product feature.
The chain
- Firmware — QEMU
virt, or a UEFI environment that loadsBOOTAA64.EFIand callsExitBootServices. - The kernel takes over at EL1, brings up an early UART console, builds translation tables, and enables the MMU.
- It initializes the GIC and the generic timer, then the scheduler and process substrate.
- It mounts the three storage tiers: a signed, read-only packed base, a RAM tmpfs at
/tmp, and — when a data disk is present — the persistent/datafilesystem (datafs). - It spawns
/bin/swos-init→/bin/console-login→ the shell.
Why determinism matters
Boot defers optional drivers, services, and diagnostics until after the first shell runs, and favors packed precomputed metadata over probing loops. Every boot starts from the same known-good, signed image — so a boot is reproducible, and /tmp being volatile is a feature, not a limitation. Both the direct -kernel path and the UEFI/GPT path are tested on every change, on 1 CPU and -smp 4.