| pick your distro, get ZFS on root
kldload — your platform, your way, free
Source

kldload Editions

kldload comes in two editions and three install profiles. Both editions install ZFS on root with ZFSBootMenu across all nine supported operating systems. The difference is what comes on top.

The editions exist because different people want different things. Some want ZFS on root with nothing else — they have their own tools, their own automation, their own opinions. That's core. Others want the full experience — boot environments, automatic snapshots, cross-distro tools, web UI, offline mirrors. That's free. Both produce a stock vendor distro with ZFS on root. The only difference is the convenience layer on top.

The profiles (desktop, server, core) determine the package set and UI. Desktop gets GNOME + Firefox + all tools. Server gets headless SSH + all tools. Core gets ZFS on root and nothing else — no k-tools, no sanoid, no web UI, no darksites. Core profile on the free edition is the "Packer base image" use case: ZFS on root as a foundation for your own automation.


kldload-core

The kernel and ZFS. Nothing else.

kldload-core solves the hard problem: getting ZFS on root working properly on any supported distro. That’s it. No tools, no web UI, no darksites, no wrappers. You get a stock distro with ZFS on root and boot environments, and you take it from there.

What’s in core

  • Stock distro of your choice — CentOS, Debian, Ubuntu, Fedora, Rocky, RHEL, Arch, FreeBSD, or OpenBSD
  • ZFS on root with kernel module compiled and signed at image build time
  • Deterministic dataset layout (separate /home, /var/log, /var/cache, /srv)
  • ZFSBootMenu bootloader with boot environment support
  • EFI partition, Secure Boot chain, per-build MOK key signing
  • Hostid configuration (zgenhostid)
  • Initramfs with ZFS support (dracut)
  • That’s it

What’s NOT in core

  • No k* tools (kpkg, ksnap, kbe, kst, kdf, kdir, kclone, kexport, kupgrade, krecovery)
  • No web UI
  • No offline package mirrors (darksites)
  • No sanoid (automatic snapshots)
  • No desktop customizations
  • No Firefox autostart
  • No kldload-webui service
  • No installer libraries beyond the base bootstrap

Who it’s for

  • People who already know ZFS and want to manage it themselves
  • Experienced sysadmins who have their own tooling and automation
  • Minimalists who want the smallest possible footprint
  • Anyone who looked at kldload-free and thought “I just want the ZFS part”

Using core

After install, you have a standard Linux system. Use the native tools:

# Package management
dnf install nginx              # CentOS/RHEL
apt install nginx              # Debian

# ZFS
zfs snapshot rpool/home@backup
zfs list -t snapshot
zfs rollback rpool/home@backup
zpool status

# Boot environments (manual)
zfs snapshot rpool/ROOT/default@before-upgrade
zfs clone rpool/ROOT/default@before-upgrade rpool/ROOT/rollback-point
zpool set bootfs=rpool/ROOT/rollback-point rpool

# Upgrades
dnf upgrade                    # CentOS
apt dist-upgrade               # Debian
# (no automatic snapshot — manage your own)

Everything ZFS gives you is available. Boot environments work through ZFSBootMenu. You just manage it all yourself with zfs and zpool directly.

Core is the re-packer's re-packer. It's the base image for Packer pipelines, Terraform deployments, and custom automation. You get ZFS on root with production-grade defaults — ashift=12, compression=lz4, acltype=posixacl, xattr=sa, proper dataset hierarchy — and then it's your machine. No opinions. No tools. No services you didn't ask for. Feed it to Packer, add your application layer, stamp out copies with Terraform. The foundation is solid. What you build on it is yours.

Core is also for the person who looked at the k-tools and thought "I can do this better." Good. That's the point. The source code for every k-tool is readable bash. Read it. Understand what it does. Write your own version. Or use zfs and zpool directly — they're the real tools. The k-tools are training wheels. Core removes the training wheels.


kldload-free

The full experience. ZFS made automatic and seamless.

kldload-free starts with everything in core and adds a layer of optional tooling designed to make ZFS on root effortless — especially for people who haven’t used ZFS before.

What free adds on top of core

Addition What it does
kpkg Universal package manager wrapper (calls apt or dnf underneath, adds automatic ZFS snapshot)
ksnap Simplified snapshot management
kbe Boot environment management
kst One-command system health dashboard
kdf ZFS-aware disk usage
kdir Create ZFS datasets instead of directories
kclone Instant CoW cloning
kexport Export to qcow2/VHD/VMDK/OVA/raw
kupgrade Safe system upgrade with automatic boot environment snapshot + DKMS verification
krecovery Disaster recovery tool
Web UI Python-based installer and management interface on port 8080
Darksites Complete offline RPM + APT package mirrors baked into the ISO
Sanoid Automatic snapshot rotation (hourly/daily/weekly/monthly)
WireGuard wireguard-tools pre-installed
eBPF bpftrace, bpfcc-tools, bpftool, linux-perf (Debian)
Desktop GNOME with dark theme, Firefox, screensaver disabled (desktop profile)

Who it’s for

  • People who want ZFS on root without having to learn ZFS administration first
  • Teams deploying both CentOS and Debian who want consistent tooling
  • Air-gapped environments that need offline installs
  • Home labbers who want boot environments and instant rollbacks
  • Anyone who’s tired of reinstalling Linux because an upgrade broke something

The key point

Nothing in free replaces or modifies the base distro. Every k* tool is optional. apt and dnf work exactly as they do on a stock install. The k* tools wrap the native commands, add sensible defaults, and take automatic snapshots. If you uninstalled every k* tool and removed the web UI, you’d have exactly what core gives you.

Free is core with guard rails and shortcuts. Core is free without them. The underlying OS is identical.

The choice is about operational maturity, not capability.

A senior ZFS admin picks core. They know zfs snapshot -r rpool@$(date +%Y%m%d) and don't need ksnap. They have their own monitoring. They have their own automation. Core gives them the hard part (ZFS on root, properly configured) and stays out of their way.

A team deploying their first ZFS system picks free. They want automatic snapshots without setting up sanoid. They want kpkg install to snapshot before every package change without remembering. They want kupgrade to handle the DKMS rebuild and initramfs update. They want a web UI to see pool health without learning zpool status output format. Free is the path to understanding ZFS. Core is where you go once you understand it.

Both produce the same ZFS pool. Both produce the same boot environments. Both produce the same kernel module. The difference is whether you manage it yourself or let the k-tools manage it for you. You can start with free and graduate to core by uninstalling the k-tools. Nothing changes underneath.


Comparison

Feature kldload-core kldload-free
ZFS on root Yes Yes
ZFSBootMenu Yes Yes
Boot environments Yes (manual) Yes (manual + kbe)
Snapshots Yes (manual zfs snapshot) Yes (manual + ksnap + automatic via sanoid)
Package management Native (apt/dnf) Native + optional kpkg wrapper
Upgrades Native (apt dist-upgrade/dnf upgrade) Native + optional kupgrade with auto-snapshot
Offline install Internet required for packages Complete offline mirrors baked in
Web UI No Yes (port 8080)
Export to images Manual (qemu-img) kexport qcow2/vhd/vmdk/ova/raw
Disaster recovery Manual (zpool import, chroot) krecovery guided tool
WireGuard Install it yourself Pre-installed
eBPF tools Install them yourself Pre-installed (optional, all distros)
Desktop customizations Stock GNOME Tuned GNOME (dark theme, no screensaver, Firefox to web UI)
ISO size ~2 GB (no darksites) ~8.4 GB (includes RPM + APT + pacman + apk darksites)
Target audience Experienced ZFS users Everyone

Building each edition

# kldload-free with desktop profile (full experience)
EDITION=free PROFILE=desktop ./deploy.sh build

# kldload-free with server profile (headless, all tools)
EDITION=free PROFILE=server ./deploy.sh build

# kldload-core (ZFS on root, nothing else)
EDITION=core PROFILE=core ./deploy.sh build

The EDITION variable controls which components are included in the ISO. Core skips the k* tools, web UI, darksites, sanoid, and desktop customizations. The build pipeline, container infrastructure, and ZFS/bootloader setup are shared.


Upgrading from core to free

If you start with core and later want the k* tools:

# Clone the kldload repo
git clone https://github.com/kldload/kldload.git /opt/kldload

# Copy the tools
cp /opt/kldload/live-build/config/includes.chroot/usr/local/bin/k* /usr/local/bin/
cp -r /opt/kldload/live-build/config/includes.chroot/usr/lib/kldload-installer /usr/lib/
for tool in kbe krecovery kupgrade; do
  ln -sf /usr/lib/kldload-installer/backend/bin/$tool /usr/local/bin/$tool
done
chmod +x /usr/local/bin/k*

# Install sanoid for automatic snapshots
curl -sL https://github.com/jimsalterjrs/sanoid/archive/refs/tags/v2.2.0.tar.gz | tar xz -C /tmp
cp /tmp/sanoid-2.2.0/{sanoid,syncoid,findoid} /usr/local/sbin/
chmod +x /usr/local/sbin/{sanoid,syncoid,findoid}

Or just rebuild with EDITION=free next time.


Philosophy

The core edition exists because the hardest part of running ZFS on Linux has always been the initial setup — partitioning, DKMS builds, initramfs, bootloader. That’s a 2-hour manual process with many opportunities to brick the install. kldload-core automates that one-time pain and then gets out of the way.

The free edition exists because most people don’t just want ZFS on root — they want the benefits of ZFS (snapshots, boot environments, compression, cloning) without having to learn the zfs and zpool command syntax. The k* tools make those benefits accessible to people who’ve never touched ZFS before, while leaving the native tools untouched for people who have.

Both editions produce the same underlying OS. The difference is how much hand-holding ships on the ISO.