RTFM · Image Creator
Targets: pick a row, get a machine.
A target names a boot method, an init system and a profile. Assembly is common; only the partition plan, the bootloader invocation and the init preparation differ per target.

Target matrix
| Target | Boot | Init | Profile | Install to disk |
|---|---|---|---|---|
| bios-openrc | BIOS | OpenRC | minimal-openrc | Yes |
| bios-systemd | BIOS | systemd | minimal-systemd | Yes |
| bios-saphira | BIOS | OpenRC | saphira-openrc | Yes |
| bios-saphirad | BIOS | systemd | saphirad-systemd | Yes |
| uefi-openrc | UEFI | OpenRC | minimal-openrc | Yes |
| uefi-systemd | UEFI | systemd | minimal-systemd | Yes |
| uefi-saphira | UEFI | OpenRC | saphira-openrc | Yes |
| uefi-saphirad | UEFI | systemd | saphirad-systemd | Yes |
| usb-installer | Hybrid | systemd | usb-installer | Build only |
bios-openrc: Minimal Saphira image for BIOS machines.bios-systemd: Minimal SaphiraD image for BIOS machines.bios-saphira: Full Saphira product image for BIOS machines.bios-saphirad: Full SaphiraD product image for BIOS machines.uefi-openrc: Minimal Saphira image for UEFI machines.uefi-systemd: Minimal SaphiraD image for UEFI machines.uefi-saphira: Full Saphira product image for UEFI machines.uefi-saphirad: Full SaphiraD product image for UEFI machines; the profile demonstrated on physical hardware.usb-installer: Installer medium, not an installed system: boots BIOS and UEFI into a text-menu installer. Build only; install-to-disk refuses it.
saphira-image list-targetsThe matrix
Eight matrix targets cover both boot methods, both init systems and both the minimal and product profiles, plus one installer-media target. saphira-image list-targets prints this table on any machine, with no privileges needed:
saphira-image list-targets
# TARGET BOOT INIT PROFILE
# bios-openrc bios openrc minimal-openrc
# bios-systemd bios systemd minimal-systemd
# bios-saphira bios openrc saphira-openrc
# bios-saphirad bios systemd saphirad-systemd
# uefi-openrc uefi openrc minimal-openrc
# uefi-systemd uefi systemd minimal-systemd
# uefi-saphira uefi openrc saphira-openrc
# uefi-saphirad uefi systemd saphirad-systemd
# usb-installer hybrid systemd usb-installerminimal-*profiles carry exactly what a bootable, manageable machine needs; each entry is justified in the profile file itself.saphira-openrcandsaphirad-systemdare the full product profiles, the Saphira and SaphiraD seeds.usb-installeris installer media, not an installed system: one hybrid medium (BIOS boot block plus ESP plus installer root) boots both firmwares into the installer menu. The installed machine's init is chosen in the menu, never here. Build-only:install-to-diskrefuses it outright.
Three axes in every name
Target names are self-descriptive. The boot half tells you the firmware: bios, uefi and hybrid. The init half tells you what manages services once the machine is up: openrc or systemd. And the profile behind the row tells you how much machine you are getting: minimal rows carry exactly what boots and stays manageable, while saphira-* and saphirad-* rows build the full product images. Saphira is the OpenRC offering and SaphiraD is its systemd counterpart; the pairing is a choice, not an accident of characters.
Which row is yours?
- A modern machine or a virtual machine: anything with UEFI firmware wants a
uefi-*row, and most x86_64 hardware and hypervisors qualify. - An older x86_64 board that starts only in BIOS mode wants a
bios-*row. - An Arm machine, such as a single-board computer:
uefi-*with--arch aarch64; BIOS targets are refused on aarch64. - An installer key to hand to someone:
usb-installer, built once, boots on both firmwares, and installs whichever init the person at the menu chooses. - Not sure at all: build
uefi-saphiradfirst; it is the row that has been installed and booted end to end on real hardware in this documentation.
Init is a choice, never a detection
The init system is an explicit operator choice carried by the target. Packages ship both init definitions unconditionally: unit files are inert where systemd is not installed and OpenRC scripts are inert where it is. What differs between an -openrc and a -systemd image is which set is enabled and whether the boot path is consistent with what is on disk. Nothing infers the active init from installed files.
- OpenRC targets:
/etc/inittabis checked to select/sbin/openrc, and enabled services are written as/etc/runlevels/defaultsymlinks rather than by invokingrc-update, which expects a running init. - systemd targets:
default.targetpoints atmulti-user.target, and services are enabled offline withsystemctl --root=/ enable. Nothing is ever started: an image has no running init, and enabling records intent. - Upstream
systemd-firstbootis masked on SaphiraD targets so it can never prompt on the same console as Saphira's own first-boot wizard. Locale and timezone are post-install concerns; the hostname is baked at build.
Architectures
Targets build for x86_64 and aarch64. The architecture selects the repository's architecture, the packages installed into the image, and the bootloader target platform. BIOS is an x86 firmware concept, so BIOS targets are refused on aarch64 rather than silently producing something unbootable; the hybrid layout carries a BIOS boot partition and is refused there for the same reason.
saphira-image build --target uefi-saphirad --arch aarch64 --size 4G --output saphirad-arm64.raw