Why this
If you want to install Archlinux on ZFS, you need to deal with the ZFS licensing problem. The kernel module isn't included in the default archiso image, you need to include it into a custom archiso image to be able to install ZFS.
I wrote an article about archiso netbooting.
This script lets you include the zfs kernel module on any archiso image without creating a custom one.
Archzfs
The Archzfs unofficial user repository offers multiple ways to install the ZFS kernel module.
We can install precompiled module with zfs-linux
package or compile the zfs module using DKMS method.
In order to build the module, DKMS needs the linux-headers
package for the running kernel.
How does it work
It extracts running kernel version and try to find a matching ZFS module in Archzfs
repositories.
If it doesn't, it fallbacks to the DKMS build of the ZFS module.
In that case, the script uses Arch Linux Archive to install the linux-headers
and base-devel
packages required for DKMS. You need at least ~6Gb RAM to use that method to be able to store packages in cowspace.
In some very specific cases, you won't be able to get ZFS module working for a specific archiso version.
In that case, just switch to the previous month iso.
How to use
Boot on any archiso system, and run:
$ curl -s https://raw.githubusercontent.com/eoli3n/archiso-zfs/master/init | bash
Debug
By default, command outputs are redirected to /dev/null. To run the script in verbose mode, use:
$ curl -s https://raw.githubusercontent.com/eoli3n/archiso-zfs/master/init | bash -s -- -v
Running the script produces a debug.log
file in the current directory.
To upload this easily, you can
$ pacman -Syy pastebinit
$ pastebinit -b sprunge.us debug.log
And then paste me the url in your issue.
Dev
To easily generate a VM with the latest archiso, to test the script in, on your host with qemu/libvirt and vagrant installed : Use https://github.com/eoli3n/arch-config/tree/master/vagrant.