flatcar-packages
July 30, 2026 ยท View on GitHub
Extra command-line tools for Flatcar Container Linux, shipped as a
systemd-sysext image. Flatcar's /usr is read-only and its base
image deliberately minimal, so extra tools ship as a sysext rather than
installed packages.
What's in the tools sysext
emacs-nox: text editornano: small editorncdu: disk usage browserhtop: process viewerrsync: file transfer, also what Ansible's synchronize needs on the host
How hosts consume it
Provision the sysext at first boot with Ignition and keep it current with
systemd-sysupdate. A worked example is in
examples/tools-sysext.bu; the mechanics are
explained in docs/provisioning.md.
Released images live on the rolling tools GitHub release; hosts
pull from there directly.
How it's built
build/build.sh <arch> <version> installs the Debian packages in a container
and bundles each binary with its libraries and dynamic loader using
flix. Debian's glibc binaries run on Flatcar's glibc userland, so once
the sysext is merged the tools run as ordinary host processes โ full host
filesystem, host /etc, host identity. The result is packed into a squashfs
sysext image.
build/build.sh x86-64 0.0.1
build/smoke.sh tools-0.0.1-x86-64.raw
Updates
- The
releaseworkflow rebuilds weekly (Fridays) and on changes tomain. It publishes a new rolling release only when the resolved Debian package set actually changed. - Dependabot bumps the GitHub Actions and the Debian base image every Friday; non-major bumps auto-merge once CI is green.
Adding a tool
Edit extensions/tools/packages (Debian package
names). Put the binary you want on PATH in
extensions/tools/binaries (absolute path, or
path=name to rename it), and any runtime data it needs (lisp, dumps) in
extensions/tools/resources. Open a PR; the build
workflow validates it.
License
Apache-2.0. build/flix.sh is vendored from the Flatcar sysext-bakery; see
NOTICE.