Como compilar o módulo DKMS para várias versões de imagens do kernel no Debian?

10

Eu tenho as versões 3.16 e 4.0 do linux-imagepacote instaladas. Durante o login, posso selecionar qual kernel quero inicializar no item de menu "opções avançadas". No entanto, quando instalo um módulo DKMS, ele é compilado apenas para a versão mais recente:

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

Pacotes relevantes ( linux-headers, linux-kbuild, linux-compiler-gcc) são instalados para 3,16 também.

Por que o pacote não é compilado para a imagem antiga do kernel? Posso configurar algo para que seja compilado?

doublep
fonte
2
Talvez já exista?
0xC0000022L
No momento, não tenho acesso a esse computador para verificar, mas recebi a mesma mensagem tentando reinstalar o pacote DKMS. Então, provavelmente não.
doublep
Não, não foi instalado. No entanto, agora uma versão mais recente desse pacote ficou disponível e, uma vez que eu atualizei, ele foi criado automaticamente para os dois kernels. Portanto, pode ter havido algum problema no pacote também. Por outro lado, eu realizei a atualização enquanto inicializado na 3.16, então talvez ele sempre seja desenvolvido para o kernel atual e para os mais novos instalados ?
doublep 22/05

Respostas:

4

Você pode usar o comando de instalação do DKMS (Ref . man dkms:) para reconstruir e instalar o módulo para o kernel específico. Abaixo um exemplo criado pela remoção de módulos de caixa virtual para uma versão do 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
fonte
1
Ótimo, isso funciona. E para saber quais módulos e versões são conhecidos pelo DKMS, use o dkms statuscomando
Ruslan