1. Disable Secure Boot. ZFS modules can not be loaded if Secure Boot is enabled.

  2. Download latest Arch Linux live image and boot from it.

  3. Connect to the Internet.

  4. Set root password or /root/.ssh/authorized_keys.

  5. Start SSH server:

    systemctl restart sshd
  6. Connect from another computer:

    ssh root@
  7. Use bash shell. Other shell not tested:

  8. Target disk

    List available disks with:

    ls /dev/disk/by-id/*

    If using virtio as disk bus, use /dev/disk/by-path/*.

    Declare disk array:

    DISK='/dev/disk/by-id/ata-FOO /dev/disk/by-id/nvme-BAR'

    For single disk installation, use:

  9. Set partition size:

    Set swap size. It’s recommended to setup a swap partition. If you intend to use hibernation, the minimum should be no less than RAM size. Skip if swap is not needed:


    Root pool size, use all remaining disk space if not set:

  10. Add ZFS repo:

    curl -L |  pacman-key -a -
    pacman-key --lsign-key $(curl -L
    curl -L > /etc/pacman.d/mirrorlist-archzfs
    tee -a /etc/pacman.conf <<- 'EOF'
    #Include = /etc/pacman.d/mirrorlist-archzfs
    Include = /etc/pacman.d/mirrorlist-archzfs
  11. Check kernel version:

    uname -r
  12. Find a ZFS package compatible with the kernel:

    Search kernel version string (e.g. 5.18.7) in both pages:

    Result: https/…/archive_archzfs/zfs-linux-2.1.5_5.18.7.arch1.1-1-x86_64.pkg.tar.zst

  13. Find compatible zfs-utils package:

    Search ZFS version string (e.g. 2.1.5) in both pages above.

    Result: https/…/archzfs/x86_64/zfs-utils-2.1.5-2-x86_64.pkg.tar.zst

  14. Download both then install:

    pacman -U link-to-zfs.zst link-to-utils.zst
  15. Load kernel modules:

    modprobe zfs