debian10编译内核5.8.9 dkms出错

最大的社区版本,Ubuntu的发源地
回复
pang15975386
帖子: 193
注册时间: 2011-05-16 18:00

debian10编译内核5.8.9 dkms出错

#1

帖子 pang15975386 » 2020-09-15 15:44

debian10编译内核5.8.9出错

$ uname -a
Linux 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux

linux-headers-4.19.0-10-amd64已经安装过

.congfig中已注释掉
#CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/debian-uefi-certs.pem"

make install时出现下面错误:
Error! The dkms.conf for this module includes a BUILD_EXCLUSIVE directive which
does not match this kernel/arch. This indicates that it should not be built.

编译内核5.7.8也出现这个问题,是内核配置问题还是dkms整合到内核的问题
安装nvidia-driver也出问题,提示没安装到5.8.9中
现在怎么解决?
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: debian10编译内核5.8.9 dkms出错

#2

帖子 careone » 2020-09-15 22:25

------------------
http://kernel.ubuntu.com/~kernel-ppa/mainline/v5.8.9/
description=20200912

linux-headers-5.8.9-050809_5.8.9-050809.202009120936_all.deb
linux-headers-5.8.9-050809-generic_5.8.9-050809.202009120936_amd64.deb

linux-image-unsigned-5.8.9-050809-generic_5.8.9-050809.202009120936_amd64.deb

linux-modules-5.8.9-050809-generic_5.8.9-050809.202009120936_amd64.deb

------------------
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
pang15975386
帖子: 193
注册时间: 2011-05-16 18:00

Re: debian10编译内核5.8.9 dkms出错

#3

帖子 pang15975386 » 2020-09-16 7:53

虽然也是一种解决办法,但不是我想要的,根源还是没找到,不过还是谢谢哈!
头像
astolia
论坛版主
帖子: 6445
注册时间: 2008-09-18 13:11

Re: debian10编译内核5.8.9 dkms出错

#4

帖子 astolia » 2020-09-16 18:59

你没有明白内核和dkms的机制,误解了很多东西

内核已经在之前的make步骤编译完成了,make install这是在进行安装。make install的时候,会去检查是否存在~/bin/和/sbin下是否存在installkernel程序,有的话就执行它。在debian系的系统中,由debianutils包提供了/sbin/installkernel这么一个shell脚本程序,它里面又会去执行/etc/kernel/postinst.d下面的程序。

dkms就是利用了这个机制,在/etc/kernel/postinst.d中放置了自己的脚本,以实现在内核安装完毕后执行相关程序去编译内核模块的功能。

到这里就可以解答你第一个问题了
pang15975386 写了: 2020-09-15 15:44 是内核配置问题还是dkms整合到内核的问题
内核已经编译完毕,所以不是配置的问题。内核安装后已经成功触发dkms去编译相关的内核模块,所以dkms和内核的配合机制也没有问题。
还有就是,即使dkms出错,也不影响make install的后续安装。所以内核的编译和安装都已经完成了的,只是相关内核模块失败了。

现在回答你第二个问题
pang15975386 写了: 2020-09-15 15:44 现在怎么解决?
引发出错的原因已经在错误信息里说明了
pang15975386 写了: 2020-09-15 15:44Error! The dkms.conf for this module includes a BUILD_EXCLUSIVE directive which
does not match this kernel/arch. This indicates that it should not be built.
由于不同模块的编译需求都不一样,所以dkms要求在每个待编译的模块源码目录下面都要放置一个dkms.conf文件,在其中做好各项配置。
这个错误正是由于某个模块的dkms.conf中的BUILD_EXCLUSIVE项引发的。运行man dkms可以查看BUILD_EXCLUSIVE的具体说明,有两项BUILD_EXCLUSIVE_KERNEL和BUILD_EXCLUSIVE_ARCH。后者是定义在哪些平台上进行编译的,既然能在当前内核上完成编译,就不是它的问题。而前者定义了在那些内核版本上进行编译,问题只可能在它了。

这么一来根源就找到了。某个模块自身在dkms.conf中定义了BUILD_EXCLUSIVE_KERNEL,指明只支持低版本的内核。你要在5.8.9/5.7.8内核上用dkms编译它,自然被dkms拒绝了。你可以尝试自己去修改/usr/src/*/dkms.conf,把BUILD_EXCLUSIVE_KERNEL改掉,看它能否在新内核上编译成功

还有就是make install只是安装内核和配置到/boot,相关的独立模块、头文件都没有安装到系统上。而dkms为新内核编译模块时,需要的是新内核的头文件,你安装linux-headers-4.19.0-10-amd64是没用的

最后说明一下,make install不是debian系系统推荐的安装自编译内核方式。debian上推荐是把做成deb包进行安装,这样受到系统上的包管理系统的管理,不出现依赖问题
pang15975386
帖子: 193
注册时间: 2011-05-16 18:00

Re: debian10编译内核5.8.9 dkms出错

#5

帖子 pang15975386 » 2020-09-16 20:56

# dkms status
aufs, 4.19+20190211, 4.19.0-10-amd64, x86_64: installed
nvidia-current, 418.152.00, 4.19.0-10-amd64, x86_64: installed
显示的上面内容,原先我只是在/var/lib/dkms/*/dkms.conf注释了“BUILD_EXCLUSIVE_KERNEL”,没有在/usr/src/*/dkms.conf注释

# make deb-pkg
Error! Bad return status for module build on kernel: 5.8.9 (x86_64)
Consult /var/lib/dkms/aufs/4.19+20190211/build/make.log for more information.
Error! Bad return status for module build on kernel: 5.8.9 (x86_64)
Consult /var/lib/dkms/nvidia-current/418.152.00/build/make.log for more information.
生成deb包则显示上面内容,
根据版主你的解说,再尝试看看,谢谢!
回复