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
DKMS Dynamic Kernel Module Support
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.
Vérifier le numéro de version du noyau courant
$ uname -r
4.14.0-0.bpo.3-amd64
Vérifier le dépôt d'installation du noyau linux :
$ 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
Installer à partir du même dépôt les paquets génériques du noyau et des en-têtes
# aptitude install -t stretch-backports linux-headers-amd64 linux-headers-amd64
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)
Pour installer un module dkms, par exemple nvidia-kernel-dkms, vérifier les dépôts disponibles
$ 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
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.