ZFS for Debian Buster Desktop (Radxa Image)

Attempting to get ZFS installed on a RockPi 4C w/rockpi4c_debian_buster_xfce4_arm64_20210824_0245-gpt

Loading new zfs-2.0.3 DKMS files…
Building for 4.4.154-116-rockchip-g86a614bc15b3
Building initial module for 4.4.154-116-rockchip-g86a614bc15b3
configure: error:
*** Unable to build an empty module.

Error! Bad return status for module build on kernel: 4.4.154-116-rockchip-g86a614bc15b3 (aarch64)
Consult /var/lib/dkms/zfs/2.0.3/build/make.log for more information.
dpkg: error processing package zfs-dkms (–configure):
installed zfs-dkms package post-installation script subprocess returned error exit status 10
Setting up libsasl2-2:arm64 (2.1.27+dfsg-1+deb10u2) …
dpkg: dependency problems prevent configuration of zfs-zed:
zfs-zed depends on zfs-modules | zfs-dkms; however:
Package zfs-modules is not installed.
Package zfs-dkms which provides zfs-modules is not configured yet.
Package zfs-dkms is not configured yet.

dpkg: error processing package zfs-zed (–configure):
dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.28-10) …
Processing triggers for initramfs-tools (0.133+deb10u1) …
ln: failed to create hard link ‘/boot/initrd.img-4.4.154-116-rockchip-g86a614bc15b3.dpkg-bak’ => ‘/boot/initrd.img-4.4.154-116-rockchip-g86a614bc15b3’: Operation not permitted
update-initramfs: Generating /boot/initrd.img-4.4.154-116-rockchip-g86a614bc15b3
Errors were encountered while processing:
zfs-dkms
zfs-zed
E: Sub-process /usr/bin/dpkg returned an error code (1)

What am I missing?

HW manufacturer kernel is focused to present hardware functions - ZFS is far away and might have troubles with this old private kernel fork. Forget about in a combination with ZFS.

ZFS works well with Armbian Focal kernel 5.10.y - 5.15.y


Questions: https://docs.armbian.com/User-Guide_FAQ

Hi igorp,

Many thanks for the info. However the reason I have not used Focal with 5+ is because I am using the Penta SATA HAT with fan and display. To my understanding there is no support for it in the later kernel. That is the only reason I am attempting to use 4.4

I can’t win… I have a NAS that refuses to use ZFS on an older kernel. Which I am force to use if I need the fan and display.

cd /usr/src/linux-headers-`uname -r`
sudo make scripts

# cd  zfs-2.0.3
./configure
make deb-dkms deb-utils
for deb in *.deb; do sudo dpkg -i "$deb"; done
1 Like

rock@rockpi4c:/usr/src/linux-headers-4.4.154-116-rockchip-g86a614bc15b3$ sudo make scripts
/usr/bin/env: ‘python’: No such file or directory
CC scripts/mod/empty.o
/usr/bin/env: ‘python’: No such file or directory
make[2]: *** [scripts/Makefile.build:278: scripts/mod/empty.o] Error 127
make[1]: *** [scripts/Makefile.build:484: scripts/mod] Error 2
make: *** [Makefile:584: scripts] Error 2

rock@rockpi4c:/usr/src/linux-headers-4.4.154-116-rockchip-g86a614bc15b3$ sudo ln -s /usr/bin/python3 /usr/bin/python
rock@rockpi4c:/usr/src/linux-headers-4.4.154-116-rockchip-g86a614bc15b3$ sudo make scripts
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
CC scripts/mod/devicetable-offsets.s
CHK scripts/mod/devicetable-offsets.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
HOSTCC scripts/selinux/genheaders/genheaders
HOSTCC scripts/selinux/mdp/mdp
HOSTCC scripts/kallsyms
HOSTCC scripts/conmakehash
HOSTCC scripts/recordmcount
HOSTCC scripts/resource_tool
HOSTCC scripts/mkkrnlimg
HOSTCC scripts/sortextable
HOSTCC scripts/asn1_compiler
HOSTCC scripts/extract-cert
scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory
#include <openssl/bio.h>
^~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.host:91: scripts/extract-cert] Error 1
make: *** [Makefile:584: scripts] Error 2

rock@rockpi4c:~$ cd /zfs-2.0.7/
rock@rockpi4c:/zfs-2.0.7$ sudo ./configure
[sudo] password for rock:
checking for gawk… no
checking for mawk… mawk
checking metadata… META file
checking build system type… aarch64-unknown-linux-gnu
checking host system type… aarch64-unknown-linux-gnu
checking target system type… aarch64-unknown-linux-gnu
checking whether to enable maintainer-specific portions of Makefiles… no
checking whether make supports nested variables… yes
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for a thread-safe mkdir -p… /usr/bin/mkdir -p
checking whether make sets $(MAKE)… yes
checking how to print strings… printf
checking whether make supports the include directive… yes (GNU style)
checking for gcc… gcc
checking whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether gcc accepts -g… yes
checking for gcc option to accept ISO C89… none needed
checking whether gcc understands -c and -o together… yes
checking dependency style of gcc… gcc3
checking for a sed that does not truncate output… /usr/bin/sed
checking for grep that handles long lines and -e… /usr/bin/grep
checking for egrep… /usr/bin/grep -E
checking for fgrep… /usr/bin/grep -F
checking for ld used by gcc… /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld… yes
checking for BSD- or MS-compatible name lister (nm)… /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface… BSD nm
checking whether ln -s works… yes
checking the maximum length of command line arguments… 1572864
checking how to convert aarch64-unknown-linux-gnu file names to aarch64-unknown-linux-gnu format… func_convert_file_noop
checking how to convert aarch64-unknown-linux-gnu file names to toolchain format… func_convert_file_noop
checking for /usr/bin/ld option to reload object files… -r
checking for objdump… objdump
checking how to recognize dependent libraries… pass_all
checking for dlltool… no
checking how to associate runtime and link libraries… printf %s\n
checking for ar… ar
checking for archiver @FILE support… @
checking for strip… strip
checking for ranlib… ranlib
checking command to parse /usr/bin/nm -B output from gcc object… ok
checking for sysroot… no
checking for a working dd… /usr/bin/dd
checking how to truncate binary pipes… /usr/bin/dd bs=4096 count=1
checking for mt… mt
checking if mt is a manifest tool… no
checking how to run the C preprocessor… gcc -E
checking for ANSI C header files… yes
checking for sys/types.h… yes
checking for sys/stat.h… yes
checking for stdlib.h… yes
checking for string.h… yes
checking for memory.h… yes
checking for strings.h… yes
checking for inttypes.h… yes
checking for stdint.h… yes
checking for unistd.h… yes
checking for dlfcn.h… yes
checking for objdir… .libs
checking if gcc supports -fno-rtti -fno-exceptions… no
checking for gcc option to produce PIC… -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works… yes
checking if gcc static flag -static works… yes
checking if gcc supports -c -o file.o… yes
checking if gcc supports -c -o file.o… (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries… yes
checking whether -lc should be explicitly linked in… no
checking dynamic linker characteristics… GNU/Linux ld.so
checking how to hardcode library paths into programs… immediate
checking whether stripping libraries is possible… yes
checking if libtool supports shared libraries… yes
checking whether to build shared libraries… yes
checking whether to build static libraries… yes
checking for gcc… (cached) gcc
checking whether we are using the GNU C compiler… (cached) yes
checking whether gcc accepts -g… (cached) yes
checking for gcc option to accept ISO C89… (cached) none needed
checking whether gcc understands -c and -o together… (cached) yes
checking dependency style of gcc… (cached) gcc3
checking for pkg-config… no
checking dependency style of gcc… gcc3
checking whether to build with code coverage support… no
checking how to create a pax tar archive… gnutar
checking zfs author… OpenZFS
checking zfs license… CDDL
checking whether NLS is requested… yes
checking for msgfmt… no
checking for gmsgfmt… :
checking for xgettext… no
checking for msgmerge… no
checking for ld… /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld… yes
checking for shared library run path origin… done
checking 32-bit host C ABI… no
checking for the common suffixes of directories in the library search path… lib,lib
checking zfs config… all
checking the number of available CPUs… 6
checking whether gcc supports -Wno-unused-but-set-variable… yes
checking whether gcc supports -Wno-bool-compare… yes
checking whether gcc supports -Wimplicit-fallthrough… yes
checking whether gcc supports -Wframe-larger-than=… yes
checking whether gcc supports -Wno-format-truncation… yes
checking whether gcc supports -Wno-format-zero-length… yes
checking whether gcc supports -fno-omit-frame-pointer… yes
checking whether gcc supports -fno-ipa-sra… yes
checking whether to build with -fsanitize=address support… no
checking for system type (linux-gnu)… Linux
checking for python3… python3
checking for python version… 3.7
checking for python platform… linux
checking for python script directory… ${prefix}/lib/python3.7/site-packages
checking for python extension module directory… ${exec_prefix}/lib/python3.7/site-packages
checking for python3 module: packaging… no
checking for python3 module: distlib… no
checking whether to enable pyzfs: … no
checking for sed --in-place… --in-place
checking for cppcheck… no
checking for CFPreferencesCopyAppValue… no
checking for CFLocaleCopyCurrent… no
checking for CFLocaleCopyPreferredLanguages… no
checking for GNU gettext in libc… yes
checking whether to use NLS… yes
checking where the gettext function comes from… libc
checking for dracut directory… /usr/lib/dracut
checking for zlib… no
checking for zlib.h… yes
checking for compress2 in -lz… yes
checking for uncompress in -lz… yes
checking for crc32 in -lz… yes
checking for udev directories… /lib/udev;/lib/udev/rules.d
checking for systemd support… yes
checking for uuid… no
checking for uuid/uuid.h… no
checking for uuid/uuid.h… no
configure: WARNING: cannot find uuid via pkg-config or in the standard locations
configure: error: in /zfs-2.0.7': configure: error: *** libuuid-devel package required See config.log’ for more details

rock@rockpi4c:~$ sudo apt install uuid-dev libdevmapper-dev libpopt-dev libgcrypt20-dev alien libssl-dev

/usr/bin/env: ‘python’: No such file or directory

sudo apt-get install python