User Tools

This is an old revision of the document!


Install arch linux with zfs root

  1. Obtain latest ISO from archlinux.org and burn it to an ISO
  2. Boot up and change / size \
    1. mount a swap partition
    2. mount -o remount,size=16G /run/archiso/cowspace
  3. Add zfs support
    1. curl -s https://archzfs.leibelt.de/media/setup/init | bash
    2. zgenhostid -f 0x00bab10c
  4. Partition Disk(s)
    1. Create EFI partition
      sgdisk -n "1:1m:+512m" -t "1:ef00" /dev/sda
    2. I suggest a swap partition large enough to hold RAM (my system has 16g) contents if you intend to use hibernate
      sgdisk -n "2:0:+16g" -t "2:8200" /dev/sda
    3. Allocate the remainder to the ZFS pool
      sgdisk -n "3:0:-10m" -t "3:bf00" /dev/sda
  5. Create the ZFS pool
    1. I suggest using the partition UUID for the device name.
      root@archiso ~ # ls -l /dev/disk/by-partuuid|grep sda3 
      lrwxrwxrwx 1 root root 10 Sep  2 10:21 1aea6cc8-8333-4d5c-a9e6-e0a51296391d -> ../../sda3
    2. We will be using zfsbootmenu which is currently using OpenZFS 2.3
      zpool create -f -o ashift=12 \
       -O compression=lz4 \
       -O acltype=posixacl \
       -O xattr=sa \
       -O relatime=on \
       -o autotrim=on \
       -o compatibility=openzfs-2.3-linux \
       -m none zroot /dev/disk/by-partuuid/1aea6cc8-8333-4d5c-a9e6-e0a51296391d
  6. Export / Import the ZFS pool
    zpool export zroot && zpool import -NR /mnt zroot
  7. Create the ZFS file systems including the home directory for the normal user account.
    zfs create -o mountpoint=none zroot/ROOT
    zfs create -o mountpoint=/ -o canmount=noauto zroot/ROOT/arch
    zfs mount zroot/ROOT/arch
    zfs create -o mountpoint=none zroot/homes
    zfs create -o mountpoint=/root zroot/homes/root
    zfs create -o mountpoint=/home/USER zroot/homes/USER
    zfs umount zroot/homes/root
    zfs umount zroot/homes/USER
    
    zfs mount
    zroot/ROOT/arch                 /mnt
  8. Set up EFI and swap partitions
    mkfs.vfat -F32 /dev/sda1
    mkswap /dev/sda2
  9. Install the system
    pacstrap /mnt linux linux-headers linux-firmware base vim amd-ucode networkmanager sudo openssh rsync
  10. Populate the fstab
    echo "$(blkid /dev/sda1|cut -d\  -f2) /boot/efi vfat defaults 0 2" >> /mnt/etc/fstab
    echo "$(blkid /dev/sda2|cut -d\  -f2) none swap sw 0 0" >> /mnt/etc/fstab
  11. Move into the install
    1. arch-chroot /mnt
  12. Set up arch system
    1. Time
      ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
      hwclock --systohc
    2. locale
      sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen
      locale-gen
      echo "LANG=en_US.UTF-8" > /etc/locale.conf
    3. vconsole
      1. echo -e "KEYMAP=us\n#FONT=latarcyrheb-sun32" > /etc/vconsole.conf
    4. hostname/hosts
      1. echo tas > /etc/hostname
    5. set root password
      passwd root
  13. Create a normal user and add to sudoers/wheel group
    1. useradd -G wheel some_user
      passwd some_user
    2. edit sudoers with visudo to uncomment one of the wheel stanzas
      EDITOR=vim visudo
    3. create home for some_user
      mkdir -p ~some_user && chown some_user ~some_user
    4. su - some_user
  14. Install paru
    sudo pacman -S --needed base-devel git
    git clone https://aur.archlinux.org/paru.git
    cd paru
    makepkg -si
    cd ..
    rm -rf .cargo/ paru/
  15. Install zfs support
    paru -S zfs-utils
    paru -S zfs-dkms
    rm -rf .cache/ .gnupg/ .local/
    1. exit to root
  16. finish setup
    1. zgenhostid -f 0x00bab10c
    2. edit /etc/mkinitcpio.conf and modify the HOOKS line
      1. remove fsck, add zfs resume
      2. mkinitcpio -P
    3. set up services
      systemctl disable zfs-import-cache.service
      systemctl mask zfs-import-cache.service
      systemctl enable zfs-import-scan.service zfs-mount.service zfs.target zfs-volumes.target zfs-import.target zfs-zed.service NetworkManager

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information