Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

zfs-dkms module build has been unsuccessful for a while

Featured Replies

Hi, `zfs-dkms` package's module-building process on Armbian-ubuntu-noble has been unsuccessful with recent versions of the linux-current-meson64 kernel/headers/dtb that is higher than `26.5.1` (I'm not sure if `26.5.1` is the highest version that works with `zfs-dkms`; there might be a working version higher than `26.5.1`, but my fail-safe version has been this one.)

 

Can someone help me keep updating linux kernel without breaking zfs-dkms?

 

I attach the output of `apt` just in case:

```sh

$ sudo apt install linux-image-current-meson64
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
linux-image-current-meson64 is already the newest version (26.8.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Setting up zfs-dkms (2.4.4-1arter97~ubuntu24.04.1) ...
Removing old zfs-2.4.4 DKMS files...
Deleting module zfs-2.4.4 completely from the DKMS tree.
Loading new zfs-2.4.4 DKMS files...
It is likely that 6.18.34-current-meson64 belongs to a chroot's host
Building for 6.18.44-current-meson64
Building initial module for 6.18.44-current-meson64
configure: error: 
                *** This kernel does not include the required loadable module
                *** support!
                ***
                *** To build OpenZFS as a loadable Linux kernel module
                *** enable loadable module support by setting
                *** `CONFIG_MODULES=y` in the kernel configuration and run
                *** `make modules_prepare` in the Linux source tree.
                ***
                *** If you don't intend to enable loadable kernel module
                *** support, please compile OpenZFS as a Linux kernel built-in.
                ***
                *** Prepare the Linux source tree by running `make prepare`,
                *** use the OpenZFS `--enable-linux-builtin` configure option,
                *** copy the OpenZFS sources into the Linux source tree using
                *** `./copy-builtin <linux source directory>`,
                *** set `CONFIG_ZFS=y` in the kernel configuration and compile
                *** kernel as usual.
                        
Error! Bad return status for module build on kernel: 6.18.44-current-meson64 (aarch64)
Consult /var/lib/dkms/zfs/2.4.4/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 linux-image-current-meson64 (26.8.3) ...
Armbian 'linux-image-current-meson64' for '6.18.44-current-meson64': 'postinst' starting.
 * dkms: running auto installation service for kernel 6.18.44-current-meson64
The kernel is be built without module signing facility, modules won't be signed

Running the pre_build script:
checking for gawk... gawk
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 race-free mkdir -p... /usr/bin/mkdir -p
checking whether make sets $(MAKE)... yes
checking how to create a pax tar archive... gnutar
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 the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... none
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 file... file
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 for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.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 the compiler supports GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to enable C11 features... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) none
checking whether ln -s works... yes
checking for pkg-config... no
checking dependency style of gcc... none
checking whether to build with code coverage support... no
checking how to create a pax tar archive... (cached) 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... kernel
checking the number of available CPUs... 4
checking whether gcc supports -Wno-clobbered... yes
checking whether gcc supports -Winfinite-recursion... yes
checking whether gcc supports -Winfinite-recursion... yes
checking whether gcc supports -Wno-atomic-alignment... yes
checking whether gcc supports -Wimplicit-fallthrough... yes
checking whether gcc supports -Wframe-larger-than=<size>... yes
checking whether gcc supports -Wno-format-truncation... yes
checking whether gcc supports -Wno-format-zero-length... yes
checking whether gcc supports -Wno-format-zero-length... yes
checking whether gcc supports -Wformat-overflow... yes
checking whether gcc supports -fno-omit-frame-pointer... yes
checking whether gcc supports -fno-ipa-sra... yes
checking whether gcc supports -fno-ipa-sra... yes
checking whether to build with -fsanitize=address support... no
checking whether to build with -fsanitize=undefined support... no
checking whether assembler supports .cfi_negate_ra_state... yes
checking for system type (linux-gnu)... Linux
checking for conflicting environment variables... done
checking for python3... python3
checking for python version... 3.12
checking for python platform... linux
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.12/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.12/site-packages
configure: Disabling pyzfs for kernel/srpm config
checking whether to enable pyzfs: ... no
checking for sed --in-place... --in-place
checking for cppcheck... no
checking for shellcheck... no
checking for checkbashisms... no
checking for parallel... no
checking kernel source and build directories... done

checking kernel source directory... /lib/modules/6.18.44-current-meson64/build
checking kernel build directory... /lib/modules/6.18.44-current-meson64/build
checking kernel source version... 6.18.44-current-meson64
checking for kernel config option compatibility... done
checking whether CONFIG_MODULES is defined... no
configure: error: 
                *** This kernel does not include the required loadable module
                *** support!
                ***
                *** To build OpenZFS as a loadable Linux kernel module
                *** enable loadable module support by setting
                *** `CONFIG_MODULES=y` in the kernel configuration and run
                *** `make modules_prepare` in the Linux source tree.
                ***
                *** If you don't intend to enable loadable kernel module
                *** support, please compile OpenZFS as a Linux kernel built-in.
                ***
                *** Prepare the Linux source tree by running `make prepare`,
                *** use the OpenZFS `--enable-linux-builtin` configure option,
                *** copy the OpenZFS sources into the Linux source tree using
                *** `./copy-builtin <linux source directory>`,
                *** set `CONFIG_ZFS=y` in the kernel configuration and compile
                *** kernel as usual.
                        

Building module:
Cleaning build area...(bad exit status: 2)
make -j4 KERNELRELEASE=6.18.44-current-meson64...(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.18.44-current-meson64 (aarch64)
Consult /var/lib/dkms/zfs/2.4.4/build/make.log for more information.
dkms autoinstall on 6.18.44-current-meson64/aarch64 failed for zfs(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
 * dkms: autoinstall for kernel 6.18.44-current-meson64                                                                                                 [fail] 
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
update-initramfs: Generating /boot/initrd.img-6.18.44-current-meson64
update-initramfs: Armbian: Converting to u-boot format: /boot/uInitrd-6.18.44-current-meson64
Image Name:   uInitrd
Created:      Thu Sep  3 20:09:09 2026
Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)
Data Size:    29057340 Bytes = 28376.31 KiB = 27.71 MiB
Load Address: 00000000
Entry Point:  00000000
update-initramfs: Armbian: Symlinking /boot/uInitrd-6.18.44-current-meson64 to /boot/uInitrd
'/boot/uInitrd' -> 'uInitrd-6.18.44-current-meson64'
update-initramfs: Armbian: done.
dpkg: error processing package linux-image-current-meson64 (--configure):
 installed linux-image-current-meson64 package post-installation script subprocess returned error exit status 11
Processing triggers for initramfs-tools (0.142ubuntu25.8) ...
update-initramfs: Generating /boot/initrd.img-6.18.44-current-meson64
update-initramfs: Armbian: Converting to u-boot format: /boot/uInitrd-6.18.44-current-meson64
Image Name:   uInitrd
Created:      Thu Sep  3 20:09:40 2026
Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)
Data Size:    29056210 Bytes = 28375.21 KiB = 27.71 MiB
Load Address: 00000000
Entry Point:  00000000
update-initramfs: Armbian: Symlinking /boot/uInitrd-6.18.44-current-meson64 to /boot/uInitrd
'/boot/uInitrd' -> 'uInitrd-6.18.44-current-meson64'
update-initramfs: Armbian: done.
Errors were encountered while processing:
 zfs-dkms
 linux-image-current-meson64
E: Sub-process /usr/bin/dpkg returned an error code (1)

```

 

Best Regards,

Gunwoo Gim

Edited by Gunwoo Gim
specify kernel package (current-meson64)

I have been experiencing the same issue building zfs-dkms with 26.8 noble. I have done some testing and have some observations which may be helpful to someone with better knowledge of the kernel build/packaging/publishing system.

 

I believe the error message to be misleading, as CONFIG_MODULES is set in .config as @Wernerpoints out, and is likely masking some other toolchain issue relating to the configure process.

 

If I use armbian-config to install the 26.8.3 kernel 6.18.44 (or 26.8.1/6.18.43) package, the dkms build fails. It appears those packages are built with GCC 14 on Debian, where older versions have been built with GCC 13 on Ubuntu. 

CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0"
 

Spoiler
--- .config.old 2026-08-15 22:12:33.000000000 +0000
+++ .config     2026-09-24 08:19:16.197060781 +0000
@@ -2,27 +2,25 @@
 # Automatically generated file; DO NOT EDIT.
 # Linux/arm64 6.18.44 Kernel Configuration
 #
-CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0"
+CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"
 CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=140200
+CONFIG_GCC_VERSION=130300
 CONFIG_CLANG_VERSION=0
 CONFIG_AS_IS_GNU=y
-CONFIG_AS_VERSION=24400
+CONFIG_AS_VERSION=24200
 CONFIG_LD_IS_BFD=y
-CONFIG_LD_VERSION=24400
+CONFIG_LD_VERSION=24200
 CONFIG_LLD_VERSION=0
-CONFIG_RUSTC_VERSION=108500
-CONFIG_RUSTC_LLVM_VERSION=190107
+CONFIG_RUSTC_VERSION=0
+CONFIG_RUSTC_LLVM_VERSION=0
 CONFIG_CC_CAN_LINK=y
 CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
 CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
-CONFIG_TOOLS_SUPPORT_RELR=y
 CONFIG_CC_HAS_ASM_INLINE=y
 CONFIG_CC_HAS_ASSUME=y
 CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
 CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY=y
-CONFIG_RUSTC_HAS_COERCE_POINTEE=y
-CONFIG_PAHOLE_VERSION=130
+CONFIG_PAHOLE_VERSION=125
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_TABLE_SORT=y
 CONFIG_THREAD_INFO_IN_TASK=y
@@ -875,7 +873,6 @@
 CONFIG_ARCH_USE_MEMREMAP_PROT=y
 # CONFIG_LOCK_EVENT_COUNTS is not set
 CONFIG_ARCH_HAS_RELR=y
-CONFIG_RELR=y
 CONFIG_ARCH_HAS_MEM_ENCRYPT=y
 CONFIG_ARCH_HAS_CC_PLATFORM=y
 CONFIG_HAVE_PREEMPT_DYNAMIC=y
@@ -899,8 +896,6 @@
 CONFIG_FUNCTION_ALIGNMENT_4B=y
 CONFIG_FUNCTION_ALIGNMENT_8B=y
 CONFIG_FUNCTION_ALIGNMENT=8
-CONFIG_CC_HAS_MIN_FUNCTION_ALIGNMENT=y
-CONFIG_CC_HAS_SANE_FUNCTION_ALIGNMENT=y
 # end of General architecture-dependent options
 
 CONFIG_RT_MUTEXES=y

 

 

If I use the armbian build framework (with docker) on the v26.08 branch (or v26.8.0-trunk.X tags) to build the kernel packages myself (with ARTIFACT_IGNORE_CACHE=yes to avoid using the pre-built package), and install those, the dkms build succeeds. The diff in this case looks similar to the 26.5.1 diff.

 

Spoiler
--- .config.old 2026-09-24 05:03:41.000000000 +0000
+++ .config     2026-09-24 08:25:33.278177066 +0000
@@ -2,7 +2,7 @@
 # Automatically generated file; DO NOT EDIT.
 # Linux/arm64 6.18.44 Kernel Configuration
 #
-CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"
+CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"
 CONFIG_CC_IS_GCC=y
 CONFIG_GCC_VERSION=130300
 CONFIG_CLANG_VERSION=0
@@ -11,8 +11,8 @@
 CONFIG_LD_IS_BFD=y
 CONFIG_LD_VERSION=24200
 CONFIG_LLD_VERSION=0
-CONFIG_RUSTC_VERSION=107500
-CONFIG_RUSTC_LLVM_VERSION=170006
+CONFIG_RUSTC_VERSION=0
+CONFIG_RUSTC_LLVM_VERSION=0
 CONFIG_CC_CAN_LINK=y
 CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
 CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y

 

 

Is it perhaps a matter of the build platform being used for the pre-built kernel packages?

@Gunwoo Gim as a workaround, I have found that forcing it to use gcc-14 allows dkms to successfully build the zfs modules against the kernel packages from the repo. I had trouble finding a working way to configure dkms to use a specific compiler, but replacing the global /usr/bin/gcc symlink got things working.

# The gcc-14 packages likely got installed as a dependency, but double-check before replacing
ls /usr/bin/gcc-14 && sudo ln -sf /usr/bin/gcc-14 /usr/bin/gcc

 

This appears to confirm my theory that this is a build chain issue relating to how the CI system is building packages for the apt repo. It isn't just the kernel packages/configs that are built against gcc-14, as much of the system depends on the gcc-14-base package.

 

I only had a quick peek, but it looks like there was some significant work on the CI package build system between 26.5 and 26.8, and the July commits in https://github.com/armbian/ci/commits/main/userpatches strike me as suspicious in this context, but if it were just that I would expect the issue to be more widespread than it seems to be.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.