Phase 400 — booted-base readiness
| Item | Value |
|---|---|
| Command | make phase 400 |
| Underlying make target | vm/phase4/Makefile, target readiness |
| Mutates disk/image? | No |
| Boots QEMU? | No |
| Main proof | Phase 4 direction is explicit before we start changing the booted image. |
What this phase does
Phase 400 is the Phase 4 doorway.
It does not install packages, edit the image, or boot QEMU. It prints the direction for the next implementation lane.
That matters because Phase 4 starts after a big milestone:
ONIX now boots to systemd multi-user mode.
A booting system is exciting, but it is still not a usable system.
What we have at the start of Phase 4
From Phase 2:
- an ONIX raw disk image
- GPT partitions with ONIX labels
- systemd-boot/BLS boot menu
- borrowed Alpine virt kernel/initramfs payload
- first musl systemd userspace payload
- matching kmod/module payload
- successful QEMU boot probe
The important proof from Phase 212 after Phase 214:
/boot mounted
/efi mounted
/persist mounted
/home mounted
/nix mounted
systemd reached Multi-User System
That is enough to start base userspace work.
What is still missing
The image can boot, but it is still thin.
Examples of missing or early-stage areas:
- live
/etcis mostly assembled by image scripts, not a clear ONIX policy yet - users and login policy are not a proper ONIX base story yet
- serial console access needs to become an intentional proof, not an accident
- networking is not yet an ONIX-owned base behavior
- remote inspection is not yet a stable interface
- base service units are still mostly inherited from the temporary systemd payload
Those are Phase 4 problems.
Why /etc comes first
Most real Linux behavior eventually touches /etc.
Examples:
/etc/os-release
/etc/fstab
/etc/passwd
/etc/group
/etc/shadow
/etc/shells
/etc/hostname
/etc/systemd/system
/etc/ssh
ONIX wants package-owned defaults under:
/usr/share/defaults
and live machine configuration under:
/etc
Phase 4 should make that relationship explicit.
The first real implementation after Phase 400 is Phase 401:
materialize live /etc from /usr/share/defaults
What success looks like
Run:
make phase 400
Expected result:
Phase 4 starts from the Phase 2 boot proof.
...
Kernel ownership remains reserved for Phase 3.
Then we can begin designing 401 as the first real booted-base mutation.
Reminder
Phase 4 does not remove the Alpine kernel payload.
That replacement belongs to Phase 3 later. Phase 4 keeps using the borrowed payload so we can focus on userspace.