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 editor
  • nano: small editor
  • ncdu: disk usage browser
  • htop: process viewer
  • rsync: 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 release workflow rebuilds weekly (Fridays) and on changes to main. 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.