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 101 — build onix-branding

At a glance

FieldValue
Phase familyPhase 1 — first stones
Run commandmake phase 101
Underlying make target/scriptvm/phase1/build-branding-stone.sh
Runs onguest over SSH
Main proof/artifactBuilds and verifies the onix-branding stone.

Builds the recipe at:

recipes/onix-branding/stone.yaml

inside the forge, then verifies:

  • the .stone passes moss inspect --check
  • /usr/lib/os-info.json exists
  • Moss generates /usr/lib/os-release from that metadata during install
  • /usr/share/onix/branding/logo.txt contains the plain terminal ONIX logo
  • /usr/share/onix/branding/logo.ansi contains the ANSI-colored terminal logo
  • default /etc text lives under /usr/share/defaults/etc/
  • installing into a disposable target root works

Boulder currently ignores non-/usr payload files in this layout. That means onix-branding ships the canonical input metadata at /usr/lib/os-info.json. Moss uses that to generate /usr/lib/os-release during install. Later image assembly or first-boot glue creates the compatibility symlink:

/etc/os-release -> ../usr/lib/os-release

The branding colors come from the real ONIX logo assets:

orange: #e7590f  /  38;2;231;89;15
blue:   #4f6e91  /  38;2;79;110;145

ANSI_COLOR in os-release uses the ONIX blue. The default MOTD includes the terminal logo with orange on the left and blue on the right.

Why defaults under /usr/share/defaults/etc?

The final ONIX contract is:

moss owns the machine plane
local admin/user changes live outside the immutable package payload

So for mutable configuration text like issue and motd, the package ships defaults under:

/usr/share/defaults/etc/

Later boot/install glue can copy or merge those into /etc if needed. The package still ships the canonical /usr/lib/os-info.json; Moss generates /usr/lib/os-release, and image assembly creates the standard /etc/os-release compatibility symlink outside the .stone.