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
- Add kiln-installer, a Void-style text installer for the base edition
- Add package repositories: kiln sync, install by name, upgrade, search
- Boot through UEFI and GRUB
- Add networking: dhcpcd with a runit service, and post-install hooks
- First boot: kernel, base files, image script, runit fixes
- Extract sources without restoring tarball owners
- Add 44 base system recipes (chapter 8, part 2) with eudev and runit
- Drop the shared info index and .la files from packages
- Add kiln fetch/build-all and the core chapter 8 recipes
- Initial Kiln Linux: bootstrap, kiln package manager, runit
Packages
kiln commands
kiln buildbuild a recipe directory into a .kpkg packagekiln fetchdownload and verify sources, without buildingkiln build-allbuild and install every recipe in an order file (default recipes/order), in order, skipping ones already installedkiln installinstall or upgrade packages by name, with their dependencies, or from .kpkg fileskiln removeremove installed packageskiln syncdownload the package index from each repositorykiln upgradeupgrade installed packages to the repositories’ versionskiln searchsearch the repositories by name and summarykiln indexwrite index.toml for a directory of packages, making it a repositorykiln listlist installed packageskiln infoshow an installed package’s metadatakiln fileslist the files an installed package ownskiln ownershow which package owns a path