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中
现在怎么解决?
debian10编译内核5.8.9 dkms出错
-
- 帖子: 193
- 注册时间: 2011-05-16 18:00
- careone
- 帖子: 839
- 注册时间: 2007-12-17 21:41
Re: debian10编译内核5.8.9 dkms出错
------------------
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
------------------
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/
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
-
- 帖子: 193
- 注册时间: 2011-05-16 18:00
Re: debian10编译内核5.8.9 dkms出错
虽然也是一种解决办法,但不是我想要的,根源还是没找到,不过还是谢谢哈!
- astolia
- 论坛版主
- 帖子: 6499
- 注册时间: 2008-09-18 13:11
Re: debian10编译内核5.8.9 dkms出错
你没有明白内核和dkms的机制,误解了很多东西
内核已经在之前的make步骤编译完成了,make install这是在进行安装。make install的时候,会去检查是否存在~/bin/和/sbin下是否存在installkernel程序,有的话就执行它。在debian系的系统中,由debianutils包提供了/sbin/installkernel这么一个shell脚本程序,它里面又会去执行/etc/kernel/postinst.d下面的程序。
dkms就是利用了这个机制,在/etc/kernel/postinst.d中放置了自己的脚本,以实现在内核安装完毕后执行相关程序去编译内核模块的功能。
到这里就可以解答你第一个问题了
还有就是,即使dkms出错,也不影响make install的后续安装。所以内核的编译和安装都已经完成了的,只是相关内核模块失败了。
现在回答你第二个问题
这个错误正是由于某个模块的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包进行安装,这样受到系统上的包管理系统的管理,不出现依赖问题
内核已经在之前的make步骤编译完成了,make install这是在进行安装。make install的时候,会去检查是否存在~/bin/和/sbin下是否存在installkernel程序,有的话就执行它。在debian系的系统中,由debianutils包提供了/sbin/installkernel这么一个shell脚本程序,它里面又会去执行/etc/kernel/postinst.d下面的程序。
dkms就是利用了这个机制,在/etc/kernel/postinst.d中放置了自己的脚本,以实现在内核安装完毕后执行相关程序去编译内核模块的功能。
到这里就可以解答你第一个问题了
内核已经编译完毕,所以不是配置的问题。内核安装后已经成功触发dkms去编译相关的内核模块,所以dkms和内核的配合机制也没有问题。
还有就是,即使dkms出错,也不影响make install的后续安装。所以内核的编译和安装都已经完成了的,只是相关内核模块失败了。
现在回答你第二个问题
引发出错的原因已经在错误信息里说明了
由于不同模块的编译需求都不一样,所以dkms要求在每个待编译的模块源码目录下面都要放置一个dkms.conf文件,在其中做好各项配置。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.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包进行安装,这样受到系统上的包管理系统的管理,不出现依赖问题
-
- 帖子: 193
- 注册时间: 2011-05-16 18:00
Re: debian10编译内核5.8.9 dkms出错
# 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包则显示上面内容,
根据版主你的解说,再尝试看看,谢谢!
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包则显示上面内容,
根据版主你的解说,再尝试看看,谢谢!