September 3Sep 3 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 September 3Sep 3 by Gunwoo Gim specify kernel package (current-meson64)
September 3Sep 3 22 minutes ago, Gunwoo Gim said: *** This kernel does not include the required loadable module *** support! This is very odd. https://github.com/armbian/build/blob/d125240213f85f5776a3256fc73f9d984aa12851/config/kernel/linux-meson64-current.config#L89
September 24Sep 24 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?
Thursday at 07:38 AM3 days @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.