Skip to content

SepiaOS v2026.9.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Sep 12:25
e4e4b46

A 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=progress

On 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.