This is a tutorial for building and installing the latest release version (0.7.3 as of writing) of "ZFS on Linux" on a Raspberry Pi 3 running Raspbian Stretch. Specifically, we'll be building the
dkms version of ZoL, which saves you the hassle of re-compiling the kernel modules after every kernel update. Even though ZoL added support for building dkms packages for debian in version 0.7.3, the build process on a Raspberry Pi 3 is not quite straight-forward. Hopefully, these instructions will make it easier.
- Install the build dependencies.
$ sudo apt-get update $ sudo apt-get install build-essential autoconf libtool gawk alien fakeroot $ sudo apt-get install dkms zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev libssl-dev parted lsscsi wget ksh
You'll also need the kernel headers. Running apt-get upgrade will take care of both installation and upgradation.
$ sudo apt-get upgrade raspberrypi-kernel raspberrypi-kernel-headers
- Download the source.
Download the latest release tarballs for zfs and spl from this page and extract them.
$ wget https://github.com/zfsonlinux/zfs/releases/download/zfs-0.7.3/spl-0.7.3.tar.gz && tar -xzf spl-0.7.3.tar.gz $ wget https://github.com/zfsonlinux/zfs/releases/download/zfs-0.7.3/zfs-0.7.3.tar.gz && tar -xzf zfs-0.7.3.tar.gz
- Compile and install spl.
$ cd spl-0.7.3/ $ autoreconf --install --force $ ./configure
You need to make a small edit to the
Makefile generated by
configure before you proceed.
$ sed -E 's/(^RPMBUILD = rpmbuild.*)/\1 --target=armhf/' -i Makefile $ make pkg-utils deb-dkms $ for deb in *.deb; do sudo dpkg -i "$deb"; done
The final step will take some time as dkms builds spl modules for each kernel version installed in your system.
- Compile and install zfs.
The build process for zfs is the same as spl, albeit with an extra option
$ cd ../zfs-0.7.3/ $ autoreconf --install --force $ ./configure --with-config=srpm $ sed -E 's/(^RPMBUILD = rpmbuild.*)/\1 --target=armhf/' -i Makefile $ make pkg-utils deb-dkms $ for deb in *.deb; do sudo dpkg -i "$deb"; done
The zfs source is much bigger than spl's and hence the build time will also be much longer.
- Reboot and Enjoy. :)