如何在Debian中为多个内核映像版本编译DKMS模块?


10

我安装了3.16和4.0版本的linux-image软件包。登录期间,我可以在“高级选项”菜单项中选择要引导的内核。但是,当我安装DKMS模块时,它仅针对较新版本进行编译:

Setting up fglrx-modules-dkms (1:14.12-1) ...
Loading new fglrx-14.12 DKMS files...
Building only for 4.0.0-1-amd64

相关的包(linux-headerslinux-kbuildlinux-compiler-gcc)安装了3.16了。

为什么不为旧的内核映像编译软件包?我可以配置一些东西以便对其进行编译吗?


2
它是否已经存在?
0xC0000022L

我现在无法访问该计算机以进行检查,但是在尝试重新安装该DKMS软件包时收到了相同的消息。因此,可能不会。
2015年

不,它没有安装。但是,现在有了该软件包的较新版本,并且在我升级后,它会自动为两个内核构建。因此,包装中也可能存在一些问题。另一方面,我在3.16中启动时执行了升级,所以也许它总是针对当前内核以及任何已安装的较新版本构建的?
2015年

Answers:


5

您可以使用DKMS install命令(参考:)man dkms来重建和安装特定内核的模块。下面是通过删除一个内核版本的virtualbox模块创建的示例。

sudo dkms install <module-name>/<module-version> -k <kernel-version>

$ dkms status
vboxhost, 5.0.10, 4.2.0-21-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-22-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-23-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-25-generic, x86_64: installed

$ sudo dkms remove vboxhost/5.0.10 -k 4.2.0-22-generic
...

$ dkms status
vboxhost, 5.0.10, 4.2.0-21-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-23-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-25-generic, x86_64: installed


$ sudo dkms install vboxhost/5.0.10 -k 4.2.0-22-generic

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make KERNELRELEASE=4.2.0-22-generic -C /lib/modules/4.2.0-22-generic/build M=/var/lib/dkms/vboxhost/5.0.10/build...............
cleaning build area....

DKMS: build completed.

vboxdrv.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

vboxnetflt.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

vboxnetadp.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

vboxpci.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

depmod....

DKMS: install completed.

$ dkms status
vboxhost, 5.0.10, 4.2.0-21-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-22-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-23-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-25-generic, x86_64: installed

1
太好了,这可行。要了解DKMS已知哪些模块和版本,请使用dkms status命令。
Ruslan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.