Preparation

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

  2. Download a variant of Fedora live image and boot from it.

  3. Connect to the Internet.

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

  5. Start SSH server:

    echo PermitRootLogin yes >> /etc/ssh/sshd_config
    systemctl restart sshd
    
  6. Connect from another computer:

    ssh root@192.168.1.19
    
  7. 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:

    DISK='/dev/disk/by-id/disk1'
    
  8. 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:

    INST_PARTSIZE_SWAP=8
    

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

    INST_PARTSIZE_RPOOL=
    
  9. Temporarily set SELinux to permissive in live environment:

    setenforce 0
    

    SELinux will be enabled on the installed system.

  10. Add ZFS repo:

    dnf install -y https://zfsonlinux.org/fedora/zfs-release-2-2$(rpm --eval "%{dist}").noarch.rpm
    
  11. Check available repos:

    dnf repolist --all
    
  12. Install ZFS packages:

    rpm -e --nodeps zfs-fuse
    dnf install -y https://dl.fedoraproject.org/pub/fedora/linux/releases/$(source /etc/os-release; echo $VERSION_ID)/Everything/x86_64/os/Packages/k/kernel-devel-$(uname -r).rpm
    dnf install -y zfs
    
  13. Load kernel modules:

    modprobe zfs
    
  14. Install partition tool:

    dnf install -y gdisk dosfstools