Installation on FreeBSD
OpenZFS is available pre-packaged as:
the zfs-2.0-release branch, in the FreeBSD base system from FreeBSD 13.0-CURRENT forward
the master branch, in the FreeBSD ports tree as sysutils/openzfs and sysutils/openzfs-kmod from FreeBSD 12.1 forward
The rest of this document describes the use of OpenZFS either from ports/pkg or built manually from sources for development.
The ZFS utilities will be installed in /usr/local/sbin/, so make sure your PATH gets adjusted accordingly.
To load the module at boot, put
/boot/loader.conf, and remove
zfs_load="YES" if migrating a ZFS
Beware that the FreeBSD boot loader does not allow booting from root pools with encryption active (even if it is not in use), so do not try encryption on a pool you boot from.
Development on FreeBSD
The following dependencies are required to build OpenZFS on FreeBSD:
FreeBSD sources in /usr/src or elsewhere specified by SYSDIR in env. If you don’t have the sources installed you can install them with git.
Install source For FreeBSD 12:
git clone -b stable/12 https://git.FreeBSD.org/src.git /usr/src
Install source for FreeBSD Current:
git clone https://git.FreeBSD.org/src.git /usr/src
Packages for build:
pkg install \ autoconf \ automake \ autotools \ git \ gmake
Optional packages for build:
pkg install python pkg install devel/py-sysctl # needed for arcstat, arc_summary, dbufstat
Packages for checks and tests:
pkg install \ base64 \ bash \ checkbashisms \ fio \ hs-ShellCheck \ ksh93 \ pamtester \ devel/py-flake8 \ sudo
Your preferred python version may be substituted. The user for running tests must have NOPASSWD sudo permission.
To build and install:
# as user
git clone https://github.com/openzfs/zfs
env MAKE=gmake ./configure
gmake -j`sysctl -n hw.ncpu`
# as root
To use the OpenZFS kernel module when FreeBSD starts, edit
Replace the line:
The stock FreeBSD ZFS binaries are installed in /sbin. OpenZFS binaries are installed to /usr/local/sbin when installed form ports/pkg or manually from the source. To use OpenZFS binaries, adjust your path so /usr/local/sbin is listed before /sbin. Otherwise the native ZFS binaries will be used.
For example, make changes to ~/.profile ~/.bashrc ~/.cshrc from this:
For rapid development it can be convenient to do a UFS install instead of ZFS when setting up the work environment. That way the module can be unloaded and loaded without rebooting.
Though not required,
WITHOUT_ZFS is a useful build option in FreeBSD
to avoid building and installing the legacy zfs tools and kmod - see
Some tests require fdescfs to be mount on /dev/fd. This can be done temporarily with:
mount -t fdescfs fdescfs /dev/fd
or an entry can be added to /etc/fstab.
fdescfs /dev/fd fdescfs rw 0 0