I use the “O=” option when building my kernel so that the output directory is different from the source directory. In Linux < 6.6 using --kernel-name and --kernel-output-path was enough when running the installer. With Linux 6.6.y I also had to add --kernel-source-path=/lib/modules/$KVER/build/source for the installer to successfully run. However, I’ve now discovered DKMS no longer builds the modules for a new kernel due to the missing /lib/modules/$KVER/source symlink.
I think the Makefile (kernel/Makefile and kernel-open/Makefile) needs to additionally check for $(KERNEL_MODLIB)/build/source around line 31:
ifdef SYSSRC
KERNEL_SOURCES := $(SYSSRC)
else
KERNEL_UNAME ?= $(shell uname -r)
KERNEL_MODLIB := /lib/modules/$(KERNEL_UNAME)
KERNEL_SOURCES := $(shell test -d $(KERNEL_MODLIB)/source && echo $(KERNEL_MODLIB)/source || echo $(KERNEL_MODLIB)/build)
endif
KERNEL_OUTPUT := $(KERNEL_SOURCES)
KBUILD_PARAMS :=
ifdef SYSOUT
ifneq ($(SYSOUT), $(KERNEL_SOURCES))
KERNEL_OUTPUT := $(SYSOUT)
KBUILD_PARAMS := KBUILD_OUTPUT=$(KERNEL_OUTPUT)
endif
else
KERNEL_UNAME ?= $(shell uname -r)
KERNEL_MODLIB := /lib/modules/$(KERNEL_UNAME)
ifeq ($(KERNEL_SOURCES), $(KERNEL_MODLIB)/source)
KERNEL_OUTPUT := $(KERNEL_MODLIB)/build
KBUILD_PARAMS := KBUILD_OUTPUT=$(KERNEL_OUTPUT)
endif
endif
The kernel patch that caused this is d8131c2965d5ee59bfa4d548641e52a13cbe17c9.
Here are the contents of my $KERNEL_MODLIB :
$ ls -l /lib/modules/6.6.2-etr2/
total 6032
lrwxrwxrwx 1 root root 41 Nov 22 10:07 build -> /usr/src/linux-src/build/linux-6.6.2-etr2/
drwxr-xr-x 12 root root 4096 Nov 22 10:07 kernel/
drwxr-xr-x 3 root root 4096 Nov 22 10:08 updates/
-rw-r--r-- 1 root root 1421865 Nov 22 10:08 modules.alias
-rw-r--r-- 1 root root 1379687 Nov 22 10:08 modules.alias.bin
-rw-r--r-- 1 root root 12922 Nov 22 10:07 modules.builtin
-rw-r--r-- 1 root root 40249 Nov 22 10:08 modules.builtin.alias.bin
-rw-r--r-- 1 root root 17130 Nov 22 10:08 modules.builtin.bin
-rw-r--r-- 1 root root 107144 Nov 22 10:07 modules.builtin.modinfo
-rw-r--r-- 1 root root 671126 Nov 22 10:08 modules.dep
-rw-r--r-- 1 root root 888479 Nov 22 10:08 modules.dep.bin
-rw-r--r-- 1 root root 440 Nov 22 10:08 modules.devname
-rw-r--r-- 1 root root 201056 Nov 22 10:07 modules.order
-rw-r--r-- 1 root root 1702 Nov 22 10:08 modules.softdep
-rw-r--r-- 1 root root 630909 Nov 22 10:08 modules.symbols
-rw-r--r-- 1 root root 763369 Nov 22 10:08 modules.symbols.bin
$ ls -l /lib/modules/6.6.2-etr2/build/
total 179988
drwxr-xr-x 3 erich erich 4096 Nov 22 09:58 Documentation/
drwxr-xr-x 4 erich erich 4096 Nov 22 09:58 arch/
drwxr-xr-x 3 erich erich 4096 Nov 22 09:53 block/
drwxr-xr-x 2 erich erich 4096 Nov 22 09:52 certs/
drwxr-xr-x 4 erich erich 20480 Nov 22 09:58 crypto/
drwxr-xr-x 111 erich erich 4096 Nov 22 09:58 drivers/
drwxr-xr-x 77 erich erich 12288 Nov 22 09:58 fs/
drwxr-xr-x 4 erich erich 4096 Nov 22 09:31 include/
drwxr-xr-x 2 erich erich 4096 Nov 22 09:58 init/
drwxr-xr-x 2 erich erich 4096 Nov 22 09:53 io_uring/
drwxr-xr-x 2 erich erich 4096 Nov 22 09:52 ipc/
drwxr-xr-x 18 erich erich 12288 Nov 22 09:58 kernel/
drwxr-xr-x 17 erich erich 20480 Nov 22 09:58 lib/
drwxr-xr-x 2 erich erich 12288 Nov 22 09:58 mm/
drwxr-xr-x 61 erich erich 4096 Nov 22 09:56 net/
drwxr-xr-x 6 erich erich 4096 Nov 22 09:52 scripts/
drwxr-xr-x 4 erich erich 4096 Nov 22 09:53 security/
drwxr-xr-x 24 erich erich 4096 Nov 22 09:58 sound/
lrwxrwxrwx 1 erich erich 30 Nov 22 09:52 source -> /usr/src/linux-src/linux-6.6.2/
drwxr-xr-x 3 erich erich 4096 Nov 22 09:52 tools/
drwxr-xr-x 2 erich erich 4096 Nov 22 09:52 usr/
drwxr-xr-x 4 erich erich 4096 Nov 22 09:53 virt/
-rw-r--r-- 1 erich erich 129 Nov 22 09:52 Makefile
-rw-r--r-- 1 erich erich 1841179 Nov 22 09:58 Module.symvers
-rw-r--r-- 1 erich erich 8873466 Nov 22 09:58 System.map
-rw-r--r-- 1 erich erich 6346 Nov 22 10:04 build.docs.error.log
-rw-r--r-- 1 erich erich 452 Nov 22 10:13 build.docs.log
-rw-r--r-- 1 erich erich 0 Nov 22 09:52 build.error.log
-rw-r--r-- 1 root root 13 Nov 22 10:07 build.install.error.log
-rw-r--r-- 1 root root 373617 Nov 22 10:07 build.install.log
-rw-r--r-- 1 erich erich 1244650 Nov 22 09:58 build.log
-rw-r--r-- 1 erich erich 265456 Nov 22 09:58 built-in.a
-rw-r--r-- 1 erich erich 260164 Nov 20 12:34 config-generic-6.6.2.x64
-rw-r--r-- 1 erich erich 12922 Nov 22 09:58 modules.builtin
-rw-r--r-- 1 erich erich 107144 Nov 22 09:58 modules.builtin.modinfo
-rw-r--r-- 1 erich erich 161576 Nov 22 09:58 modules.order
-rwxr-xr-x 1 erich erich 70484544 Nov 22 09:58 vmlinux*
-rw-r--r-- 1 erich erich 270982 Nov 22 09:58 vmlinux.a
-rw-r--r-- 1 erich erich 100213168 Nov 22 09:58 vmlinux.o
Note the absence of /lib/modules/6.6.2-etr2/source.