SepiaOS v2026.9.0
Pre-releaseA complete SepiaOS card for Pi Zero 2 W, Pi 3, Pi 4, CM4, Pi 5 and
CM5: the boot partition, and a root filesystem of musl and busybox
with the kernel modules that match the shipped kernel — and an LLVM
toolchain, so the card compiles for itself.
| Branch | rel-2026.9.0 |
| Commit | e4e4b4626f812d1385a5ed6f3fc00fac4d007de5 |
| Boot partition | v2026.8.0 |
| Raspberry Pi firmware | 1.20260521 |
| Kernels | 6.18.32-v8+ 6.18.32-v8-16k+ |
| musl | 1.2.6 |
| LLVM | 23.1.0 (v23.1.0 from Sepia-OS/llvm) |
Booted to a login prompt under QEMU as a Pi Zero 2 W, a Pi 3, a Pi 4
and a CM4 before publishing.
Compiling on the card
clang, clang++, lld and the LLVM binutils equivalents are in
/usr/bin, with libc++, libc++abi, libunwind, compiler-rt's builtins
and the GNUstep Objective-C runtime beside them. musl's headers and
its link-time objects are on the card too, which is what makes
clang hello.c work rather than only clang -c, and
/usr/bin/ld points at lld so the driver's default linker name
resolves. Clang defaults to compiler-rt, libc++ and libunwind through
a configuration file in /usr/lib/clang-config, so no flags are
needed.
Two honest caveats. First, nothing has run clang on this card:
QEMU's serial console is output-only, so what CI checks is that every
shipped binary is aarch64, asks for the musl loader, and has its
shared-library dependencies satisfied. That is a layout proof, not a
behavioural one. Second, every shared library the toolchain names is
satisfied on this card, which CI asserts — but that is a statement
about the dynamic linker, not about the compiler working.
Logging in
Log in as root with the password sepiaos. It is good for
exactly one login: the first thing the shell does is make you choose
a new one.
First boot
The image is small on purpose. On its first boot it grows the root
filesystem to fill the card, adds a swap partition (1, 2 or 4 GiB
depending on the card's size) and reboots once - so the first boot
takes a little longer than the ones after it.
Flashing
Verify the download, then write it - on Linux:
sha256sum -c SHA256SUMS
xz -d sepiaos-v2026.9.0.img.xz
sudo dd if=sepiaos-v2026.9.0.img of=/dev/sdX bs=4M conv=fsync status=progressOn macOS the device is /dev/rdiskN and the block size is spelled
bs=4m; shasum -a 256 -c SHA256SUMS replaces sha256sum.
The sources this was built from are the archives below, and the
rel-2026.9.0 branch.