Skip to content

The Kiln Linux distribution

Kiln is an independent Linux distribution, built from source with no parent distro underneath. Every package on the system comes from a recipe in the Kiln tree, and kiln, its own package manager written in Rust, builds, installs and tracks it.

Kiln runs on x86_64. It boots in QEMU from a UEFI disk image to a login prompt, gets an address over DHCP and shuts down cleanly. It doesn’t have a live ISO to run the installer from, BIOS boot or a desktop yet, so you build it yourself.

The source code, recipes and bootstrap scripts are on GitHub. Follow the commit history to see what changed.

Read the documentation to learn how Kiln fits together. To help, write recipes or improve the docs: start with the contributing guide.


Independent

Kiln is built from upstream source. It isn’t a respin of another distribution and doesn’t borrow its packages.

The bootstrap follows Linux From Scratch 12.2 to build a cross toolchain. Then kiln rebuilds every package from a recipe, so the whole system is made of packages.

Shell recipes

Each package is a short shell file: a name, version, source URL and sha256, with optional build and package functions. 152 recipes make up the base system.

A recipe can define post_install, which runs on the installed system after each install or upgrade. Read writing recipes.

runit

Kiln uses runit 2.1.2 as its init system and service supervisor, with eudev for devices.

runit starts the system in three short stages and supervises each service. dhcpcd ships with a runit service, so a fresh system gets an address on boot.

Base system

Kiln is built on the GNU C library, glibc 2.40, compiled with GCC 14.2.0 and binutils 2.43.1.

It boots through UEFI with GRUB 2.12 into Linux 6.10.5, with no initramfs. /bin, /lib and /sbin link into /usr.

kiln

kiln 0.1.0 is the native package manager, written from scratch in Rust. It installs packages by name from a repository, with their dependencies, or from local .kpkg files.

kiln refuses to overwrite files another package owns, and renames each file into place, so running programs never see a half-written file. See package management.

Clean builds

Builds run in a fixed container as an unprivileged user, so nothing from your host system leaks in.

kiln build-all builds the whole system in order, and skips what’s already installed, so a rerun after a failure picks up where it stopped.


Recent commits

Packages

kiln commands

  • kiln build build a recipe directory into a .kpkg package
  • kiln fetch download and verify sources, without building
  • kiln build-all build and install every recipe in an order file (default recipes/order), in order, skipping ones already installed
  • kiln install install or upgrade packages by name, with their dependencies, or from .kpkg files
  • kiln remove remove installed packages
  • kiln sync download the package index from each repository
  • kiln upgrade upgrade installed packages to the repositories’ versions
  • kiln search search the repositories by name and summary
  • kiln index write index.toml for a directory of packages, making it a repository
  • kiln list list installed packages
  • kiln info show an installed package’s metadata
  • kiln files list the files an installed package owns
  • kiln owner show which package owns a path