Modules DKMS

Mise à jour : Debian 9.3

DKMS est un dispositif permettant de construire et d'inclure dans le noyau des modules à partir de leurs sources.

Les modules résultant de ce dispositif, appelés modules DKMS, ont une installation spécifique, ensuite l'utilisation est identique à celle des modules externes.

Les modules propriétaires nvidia, bbswitch, virtualbox, virtualbox-guest sont disponibles en version DKMS.

Terminologie

1 - Installation des En-têtes linux

Pour chaque architecture disponible (amd64, i686), installer les en-têtes linux (linux-headers-<architecture> de la même architecture, à partir des mêmes dépôts que le noyau courant.

$ uname -r
4.14.0-0.bpo.3-amd64
$ apt-cache policy linux-image-$(uname -r)
linux-image-4.14.0-0.bpo.3-amd64:
Installé : 4.14.13-1~bpo9+1
Candidat : 4.14.13-1~bpo9+1
Table de version :
*** 4.14.13-1~bpo9+1 100
100 http://deb.debian.org/debian stretch-backports/main amd64 Packages
100 /var/lib/dpkg/status

Dans le cas présent, le noyau a été installé à partir de stretch-backports

# aptitude install -t stretch-backports linux-headers-amd64 linux-headers-amd64

2 - Installation d'un module dkms

La documentation linux du périphérique à installer fournit généralement le nom du module dkms lorsqu'il existe. Il est néanmoins possible d'afficher la liste des modules dkms disponibles :

$ aptitude search dkms |grep -E "nvidia|bbswitch" 
p A bbswitch-dkms - interrupteur pour les cartes vidéo NVIDIA Optimus
p A nvidia-kernel-dkms - NVIDIA binary kernel module DKMS source
p nvidia-legacy-304xx-kernel-dkms - NVIDIA binary kernel module DKMS source (304xx legacy version)
p nvidia-legacy-340xx-kernel-dkms - NVIDIA binary kernel module DKMS source (340xx legacy version)
$ aptitude versions nvidia-kernel-dkms
p A 375.82-1~deb9u1 stable 500
p A 384.111-3~bpo9+1 stretch-backports 100

Installer le module. A noter que dans ce cas particulier, l'installation du module stable échoue dans le noyau backports, de même que l'installation du module backports échoue dans le noyau stable. Ici on installe le module backports (dans le noyau backports).

# aptitude install -t stretch-backports nvidia-kernel-dkms

3 - Vérification

On peut vérifier la liste des modules dkms installés :

# dkms status
bbswitch, 0.8, 4.14.0-0.bpo.3-amd64, x86_64: installed
bbswitch, 0.8, 4.9.0-6-amd64, x86_64: installed
nvidia-current, 384.111, 4.14.0-0.bpo.3-amd64, x86_64: installed

Ainsi que l'ajout du module nvidia-current dans la bibliothèque de modules pour la version courante du noyau :

$ locate nvidia-current |grep /lib/modules
/lib/modules/4.9.0-6-amd64/updates/dkms/nvidia-current-drm.ko
/lib/modules/4.9.0-6-amd64/updates/dkms/nvidia-current-modeset.ko
/lib/modules/4.9.0-6-amd64/updates/dkms/nvidia-current-uvm.ko
/lib/modules/4.9.0-6-amd64/updates/dkms/nvidia-current.ko

La recompilation du module sera effectuée à chaque nouveau noyau.