Skip to content

Building the DuDuClaw OS image

Moved (2026-09). The OS image is no longer built from this repository. The Yocto layer, the release pipeline, and the frozen Debian/mkosi appliance recipe that this page used to describe all live in the standalone DuDuClaw-OS repo. This page stays as the stable entry point from the platform docs and tells you where to go.

DuDuClaw OS is the bootable image that turns a small x86-64 PC into a headless DuDuClaw box (see the appliance feature overview for what the finished product looks like from a user’s side). The platform repo you are reading holds the Rust workspace that the OS vendors as a trimmed snapshot; the OS itself has its own repo, its own release line, and its own changelog.


Two routes:

  • Download a signed release. Each release on DuDuClaw-OS Releases publishes, per machine, a whole-disk image (duduclaw-os-<machine>-v<ver>.wic.zst) and two live installer ISOs — the base image (duduclaw-os-installer-<machine>-v<ver>.iso) and the desktop edition (duduclaw-os-installer-desktop-<machine>-v<ver>.iso) — each with a .sha256 and a minisign .minisig. Verify before flashing; the public key and the exact commands are on the OS README and SECURITY notes on the docs site (“快速開始” / “Quick start”).
  • Build from source. Clone DuDuClaw-OS next to this repo and follow its README (“從原始碼建置” / “Build from source”) and meta-duduclaw/README.md (“Usage”): a Docker builder container, kas build, and the scripts/release-os.sh build → smoke → package → publish pipeline. A sibling checkout of this platform repo is needed only to refresh the vendored Rust snapshot.

The shipping image is duduclaw-image-appliance from the meta-duduclaw/ Yocto layer (Yocto 6.0 “wrynose”, kernel 6.18) — the desktop edition: an A/B dual-slot layout with atomic update and rollback, a read-only root, DuDuClaw’s own desktop (compositor + shell) with the gateway + dashboard, preloaded apps, and the app compatibility layer. Secure Boot signing, dm-verity root verification and TPM2 key sealing exist in the layer as build-time overlays (kas/sb-signing.yml, kas/tpm-luks.yml) but are still not enabled as of the current v0.4.0 release (embedding platform v1.73.4), which continues to boot with Secure Boot off: release-os.sh adds one release overlay per build (serial1.yml by default, release-linux-builder.yml for v0.3.0), and neither of those turns on signing, verity or TPM. From v0.4.0 the gateway runs as a non-root user, containers run on rootless Podman, and SSH is off by default; a device that has booted v0.4.0 cannot roll back to v0.3.0 or earlier. The installer ISO writes the base image duduclaw-image-ab (same layout, desktop shell and, from v0.4.0, firewall, without the app layer); the desktop-edition installer ISO (duduclaw-os-installer-desktop-…) has shipped alongside it since v0.1.0 (2026-09-04). Two machines are defined: duduclaw-qemux86-64 (QEMU bring-up target, boot-verified) and duduclaw-genericx86-64 (real x86-64 hardware, config-audited; a real hardware boot is still the open validation item). The per-image roles and the partition/boot chain are documented in the OS repo, not duplicated here.

The appliance/ recipe this page originally documented (Debian 13 + mkosi, self-installing USB image) is frozen: it is kept under appliance/ in the DuDuClaw-OS repo as a reference and transition artifact, is not shipped, and does not receive fixes. Its own README there still carries the full boot sequence and open points for anyone reading the history.