Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Phase 400 — booted-base readiness

ItemValue
Commandmake phase 400
Underlying make targetvm/phase4/Makefile, target readiness
Mutates disk/image?No
Boots QEMU?No
Main proofPhase 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 /etc is 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.