¿Cómo compilo el módulo DKMS para múltiples versiones de imágenes del núcleo en Debian?

10

Tengo linux-imageinstaladas las versiones 3.16 y 4.0 del paquete. Durante el inicio de sesión, puedo seleccionar qué núcleo quiero arrancar en el elemento del menú "opciones avanzadas". Sin embargo, cuando instalo un módulo DKMS, se compila solo para la versión más reciente:

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

Paquetes relevantes ( linux-headers, linux-kbuild, linux-compiler-gcc) se instalan de 3.16 también.

¿Por qué el paquete no se compila para la antigua imagen del núcleo? ¿Puedo configurar algo para que se compile?

doble
fuente
2
¿Ya existe, tal vez?
0xC0000022L
No tengo acceso a esa computadora en este momento para verificar, pero recibí el mismo mensaje tratando de reinstalar ese paquete DKMS. Entonces, probablemente no.
doublep
No, no fue instalado. Sin embargo, ahora está disponible una versión más nueva de ese paquete, y una vez que actualicé, se compiló automáticamente para ambos núcleos. Por lo tanto, podría haber sido un problema en el paquete también. Por otro lado, realicé la actualización mientras arrancaba en 3.16, por lo que ¿tal vez siempre se compila para el kernel actual y los nuevos instalados ?
doublep

Respuestas:

4

Puede usar el comando de instalación DKMS (Ref man dkms:) para reconstruir e instalar el módulo para un núcleo específico. A continuación se muestra un ejemplo creado al eliminar los módulos de virtualbox para una versión de kernel.

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
user.dz
fuente
1
Genial, esto funciona. Y para saber qué módulos y versiones conoce DKMS, use el dkms statuscomando.
Ruslan