Installing archzfs

Using the archzfs repository is highly recommended for effortless updates.

Warning: The ZFS packages are tied to the kernel version they were built against. This means it will not be possible to perform kernel updates until new packages (or package sources) are released by the ZFS package maintainer.

Install and configure the Arch Linux installation

Note: ZFS auto mounts its own partitions, so we do not need ZFS partitions in fstab file.

If installing on a UEFI system, you will need to load the efivars kernel module before chrooting into the installation:

# modprobe efivars

Chroot into the installation

# arch-chroot /mnt /bin/bash

Next, follow the Beginners' Guide from the "Locale" section to the "Configure Pacman Section". Once done, edit pacman.conf, add the archzfs repo (change it to [demz-repo-core] now if you were using [demz-repo-archiso] earlier), and update the pacman database,

Re-create the initramfs, edit /etc/mkinitcpio.conf and add zfs before filesystems. Also, move keyboard hook before zfs so you can type in console if something goes wrong. You may also remove fsck. Your HOOKS line should look something like this:

/etc/mkinitcpio.conf

HOOKS="base udev autodetect modconf block keyboard zfs filesystems"

Regenerate the initramfs with the command:

# mkinitcpio -p linux

Finally, set root password and add a regular user.

Setup the bootloader

UEFI systems

Use EFISTUB and rEFInd for the UEFI boot loader. See Beginners' Guide#For UEFI motherboards. The kernel parameters in refind_linux.conf for zfs should include "zfs=bootfs", or "zfs=zroot", so the system can boot from ZFS. The 'root' and 'rootfstype' parameters aren't needed.

Troubleshooting

Once inside the chroot environment, load the ZFS module and force import the zpool,

# zpool import -a -f

now export the pool:

# zpool export <pool>

To see your available pools, use,

# zpool status

It is necessary to export a pool because of the way ZFS uses the hostid to track the system the zpool was created on. The hostid is generated partly based on your network setup. During the installation in the archiso your network configuration could be different generating a different hostid than the one contained in your new installation. Once the zfs filesystem is exported and then re-imported in the new installation, the hostid is reset. See Re: Howto zpool import/export automatically? - msg#00227.

If ZFS complains about "pool may be in use" after every reboot, you should properly export pool as described above, and then rebuild ramdisk in normally booted system: