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:

    find /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, set to 1 if you don’t want swap to take up too much space:

    INST_PARTSIZE_SWAP=4
    

    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 and install ZFS inside live system:

    dnf install -y https://zfsonlinux.org/epel/zfs-release-2-2$(rpm --eval "%{dist}").noarch.rpm
    rpm -e --nodeps zfs-fuse || true
    source /etc/os-release
    export VERSION_ID
    dnf config-manager --disable zfs
    dnf config-manager --enable zfs-kmod
    dnf install -y zfs
    modprobe zfs
    
  11. Install partition tool and arch-install-scripts:

    dnf install -y epel-release
    dnf install -y gdisk dosfstools cryptsetup
    dnf download arch-install-scripts
    rpm -i --nodeps arch-install-scripts*.rpm
    dnf remove -y epel-release