Preparation

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

  2. Download a variant of AlmaLinux Minimal Live ISO 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/epel/zfs-release-el-2-1.noarch.rpm
    
  11. Check available repos:

    dnf repolist --all
    
  12. Install ZFS packages:

    dnf config-manager --disable zfs
    dnf config-manager --enable zfs-kmod
    dnf install -y zfs
    #  if gpg import fails, add --nogpgcheck
    
  13. Load kernel modules:

    modprobe zfs
    
  14. Install partition tool:

    dnf install -y gdisk dosfstools