Jak skompilować moduł DKMS dla wielu wersji obrazu jądra w Debianie?

10

Mam linux-imagezainstalowane wersje 3.16 i 4.0 pakietu. Podczas logowania mogę wybrać jądro, które chcę uruchomić w menu „Opcje zaawansowane”. Jednak gdy instaluję moduł DKMS, jest on kompilowany tylko dla nowszej wersji:

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

Odpowiednie pakiety ( linux-headers, linux-kbuild, linux-compiler-gcc) są zainstalowane na 3,16 zbyt.

Dlaczego pakiet nie jest kompilowany dla starego obrazu jądra? Czy mogę skonfigurować coś, aby zostało skompilowane?

doublelep
źródło
2
Może już istnieje?
0xC0000022L
Nie mam teraz dostępu do tego komputera, aby to sprawdzić, ale otrzymałem ten sam komunikat, próbując ponownie zainstalować ten pakiet DKMS. Więc prawdopodobnie nie.
doublelep
Nie, nie został zainstalowany. Jednak teraz dostępna jest nowsza wersja tego pakietu, a kiedy go zaktualizowałem, został on automatycznie zbudowany dla obu jąder. Może to być także problem w pakiecie. Z drugiej strony przeprowadziłem aktualizację podczas uruchamiania w wersji 3.16, więc może zawsze kompiluje się dla bieżącego jądra i innych zainstalowanych nowszych ?
doublelep

Odpowiedzi:

5

Możesz użyć polecenia instalacji DKMS (Ref:), man dkmsaby przebudować i zainstalować moduł dla określonego jądra. Poniżej przykład utworzony przez usunięcie modułów virtualbox dla jednej wersji jądra.

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
źródło
1
Świetnie, to działa. Aby dowiedzieć się, które moduły i wersje są znane DKMS, użyj dkms statuspolecenia.
Ruslan