| your Linux construction kit
Source

kldload Editions

kldload comes in two editions. Both install ZFS on root with ZFSBootMenu. The difference is what comes on top.


kldload-core

The kernel and ZFS. Nothing else.

kldload-core solves the hard problem: getting ZFS on root working properly on CentOS or Debian. 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 CentOS Stream 9 or Debian Trixie (your choice at install time)
  • ZFS on root with proper DKMS module, built against the installed kernel
  • Deterministic dataset layout (separate /home, /var/log, /var/cache, /srv)
  • ZFSBootMenu bootloader with boot environment support
  • EFI partition, Secure Boot chain (shim + GRUB), MOK key generation
  • 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.


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.


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 (Debian)
Desktop customizations Stock GNOME Tuned GNOME (dark theme, no screensaver, Firefox to web UI)
ISO size ~1.5 GB (estimated) ~4–5 GB (includes darksites)
Target audience Experienced ZFS users Everyone

Building each edition

# kldload-free (current default)
EDITION=free PROFILE=desktop ./deploy.sh build

# kldload-core (planned)
EDITION=core PROFILE=server ./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.