Saphira Linux
Saphira Linux has a home of its own
Saphira Linux is AKADATA’s source-built, musl/OpenRC server distribution for self-hosted infrastructure. Development, downloads, documentation, packages and the Dragon feature sets now live on the dedicated Saphira Linux website.
Standards position
FHS conformance without a compatibility fiction
Target: conformant
Filesystem Hierarchy Standard 3.0
Akadata targets FHS 3.0 conformance. The root hierarchy contains the programs required while /usr, /var, and /opt are unavailable, together with their shared-library closure under /lib.
Profile: compatible
Linux Standard Base 5.0
Akadata provides an LSB 5.0 compatibility profile for applicable source, command, shell, filesystem, and behavioural interfaces. It is not presently LSB 5.0 AMD64 binary-ABI conformant.
The AMD64 LSB ABI specifies glibc-family loader and library names. Akadata uses /lib/ld-musl-x86_64.so.1 and does not create false libc.so.6 or ld-lsb-x86-64.so.3 aliases.
The hierarchy is an interface
Root is root; /usr and /usr/local retain distinct jobs
/bin, /sbin, /lib, and /usr are real directories. None is replaced by a usrmerge symlink. Early-boot OpenRC executables remain in /sbin, and service scripts continue to use #!/sbin/openrc-run.
/ Current image: /dev/vda1, ext4, read-write
├── bin Essential early-boot user commands
├── sbin System binaries — init, OpenRC, rescue tools
├── lib musl loader, essential shared libraries, kernel modules
└── usr Distribution-managed userland
├── bin Standard user commands and applications
├── sbin Non-essential administration programs and daemons
└── local First-party and administrator hierarchy
├── bin
├── sbin
├── lib
└── srcDirectory inventory
What lives where
/bin
Early‑boot userland
apk, the APK package manager, built from source alongside the distribution. kmod, the kernel module loader and utility. Essential shell utilities for bootstrapping the system before /usr is available.
/sbin
System administration
openrc (the init process), openrc-run (service script interpreter), and rc-update, rc-status, rc-service for service lifecycle. ldconfig builds the shared‑library cache. akadata-rescue provides the recovery shell, and akadata-network-config writes persistent network state.
/usr/bin
Managed userland
Every distribution‑built command lives here. The four runtimes: python3 (3.14.6), node (24.18.1), php (8.5.9), perl. Network tools: curl, ssh, scp, rsync. The reverse‑proxy binaries: nginx, haproxy. The compiler: gcc, g++. DNS tools: dig, nslookup. Utilities: htop, lsof, tree, jq, vim.
/usr/sbin
Daemons and administration
nginx (the daemon instance) and php-fpm (FastCGI process manager). Mail server daemons: postfix, dovecot. Anti‑spam: rspamd. Timekeeping: chronyd. Network control: ip, nft, iptables. Scheduled services: chronyd, crond. The SSH daemon: sshd.
/usr/local
Your space
Empty by default. Populated by the administrator with CPAN modules, pip virtual environments, npm global packages, compiled binaries, and site‑specific scripts. Mountable and portable. Moved between Saphira machines that share the same Akadata base, it is usable as‑is, because the base interpreter and standard library are identical. See the Stack guide for the walkthrough.
| Hierarchy | Policy | Examples |
|---|---|---|
/ | Essential boot, repair, configuration, and runtime foundations. | /bin, /sbin, /lib, /etc |
/usr | Distribution-managed secondary userland; it does not replace the root hierarchy. | Nginx, PHP-FPM, Python 3.14.6 and managed daemons |
/usr/local | Reserved for locally administered and first-party software outside the distribution package namespace. | Local automation, overrides, source and site-specific tools |
Immutable recovery topology
A planned mount design, not a Version 0 release claim
The current Stage3 image creates one ext4 partition at /dev/vda1, mounts it at /, and boots it read-write. Saphira does not yet ship separate read-only root and read-write userland partitions.
The proposed recovery topology preserves the already-enforced directory boundary while adding independent mount policy:
/ Proposed separate read-only recovery root
├── bin Rescue shell and essential early-boot tools
├── sbin init, OpenRC, filesystem and network recovery tools
└── lib musl loader and complete early-boot library closure
/usr Proposed separately mounted managed userland
├── bin Applications and standard userland
├── sbin Managed non-essential daemons and administration tools
└── local Local administrator and first-party overrides
├── bin
├── sbin
└── libBefore this can become a release guarantee, the image builder must create and identify the separate filesystems; /var, runtime state, package transactions, configuration writes, upgrades, and rollback must receive an explicit writable design; and boot acceptance must prove that the complete rescue closure works with /usr unavailable.
The recovery objective is credible only after destructive boot tests demonstrate it. The documentation will not promise flawless recovery or operation without rescue media before that evidence exists.
BSD lineage
Wheel, spokes, and the local hierarchy
Akadata keeps the BSD-derived wheel administrative convention. In the Stage4 account policy, wheel is GID 1, contains root, and is accompanied by the deliberately named spokes group at GID 2. The names express the relationship between privileged administration, delegated participation, and the root hub.
/usr/local carries the same respect for local administration: distribution packages own their declared system paths, while locally maintained programs and overrides have a stable hierarchy that automated package replacement does not need to occupy.
Auditable claims
Source contracts and target-root validation
The conformance position is maintained as matrices and executable validators rather than inferred from directory names.
| File | Purpose |
|---|---|
AUDIT-REPORT.md | Readable summary of the audited conformance and compatibility position. |
FHS-3.0-CONFORMANCE.md | Normative Akadata FHS position and audit entry points. |
LSB-5.0-COMPATIBILITY.md | Qualified LSB profile and explicit binary-ABI limitations. |
fhs-3.0-matrix.tsv | Requirement classifications, evidence, implementation, tests, and deviations. |
lsb-5.0-matrix.tsv | Profile-level LSB classifications and evidence. |
lsb-5.0-commands.tsv | Per-command LSB compatibility classifications. |
sources.tsv | Standards source references used by the audit. |
./build.sh fhs-audit --source-only
./build.sh lsb-audit --source-only
./build.sh fhs-audit
./build.sh lsb-audit- The FHS validator rejects usrmerge links and root-hierarchy executables resolving below
/usr. - The LSB validator checks compatible commands while rejecting misleading glibc loader and library aliases.
- Stage4 rejects packages that replace protected root directories or move essential root-hierarchy files into
/usr.
