Dynamic Kernel Module Support (Français)
Traduit de Wikipedia :
- Dynamic Kernel Module Support (DKMS) est un programme/framework qui permet de générer des modules du noyau Linux dont les sources résident généralement en dehors de l'arbre des sources du noyau. Le concept est de reconstruire automatiquement les modules DKMS lorsqu'un nouveau noyau est installé.
Cela signifie qu'un utilisateur n'a pas à attendre qu'une entreprise, un projet ou un mainteneur de paquet publie une nouvelle version du module. Depuis l'introduction des pacman hooks, la reconstruction des modules est gérée automatiquement lorsqu'un noyau est mis à jour.
Installation
Installez le paquet dkms et les en-têtes pour le ou les noyaux cibles. Par exemple, pour le noyau linux par défaut, ce sera linux-headers. Les autres noyaux ont leurs propres paquets d'en-têtes respectifs.
Un bon nombre de modules qui se trouvent en dehors de l'arbre des sources du noyau ont une variante de DKMS ; quelques-uns sont hébergés dans les dépôts officiels, la plupart se trouvent dans AUR.
Mises à jour
Bien que la reconstruction des modules DKMS soit généralement transparente lors d'une mise à jour du noyau, il peut arriver que la reconstruction échoue. Vous devez prêter une attention particulière à la sortie de pacman. Cela s'applique en particulier si le système dépend du module DKMS pour démarrer correctement et/ou si vous utilisez DKMS avec un noyau personnalisé qui ne se trouve pas dans les dépôts officiels.
Pour faire face aux changements du noyau, corriger les bogues ou ajouter des fonctionnalités nécessaires, pensez à mettre à jour le paquet DKMS avant de redémarrer.
Utilisation
Utilisation pour invoquer DKMS manuellement.
La complétion par tabulation est disponible en faisant :
# source /usr/share/bash-completion/completions/dkms
Liste des modules
Pour lister l'état actuel des modules, versions et noyaux dans l'arbre :
# dkms status
Reconstruction des modules
Reconstruire tous les modules pour le noyau en cours d'exécution :
# dkms autoinstall
ou pour un noyau spécifique :
# dkms autoinstall -k 3.16.4-1-ARCH
Pour construire un module spécifique pour le noyau en cours d'exécution :
# dkms install -m nvidia -v 334.21
ou simplement :
# dkms install nvidia/334.21
Pour construire un module pour tous les noyaux :
# dkms install nvidia/334.21 --all
Supprimer des modules
Pour supprimer un module (les anciens modules ne sont pas automatiquement supprimés) :
# dkms remove -m nvidia -v 331.49 --all
ou simplement :
# dkms remove nvidia/331.49 --all
Si le paquet dkms est supprimé, les informations concernant les fichiers de construction des modules précédents sont perdues. Si c'est le cas, parcourez /usr/lib/modules/kernel_release
et /var/lib/dkms/package_name
et supprimez tous les fichiers et répertoires qui ne sont plus utilisés.
Création de paquets DKMS
Consultez les Directives pour les paquets DKMS.
Ramdisk initial
Si vous avez installé des modules de noyau via DKMS qui sont utilisés dans le ramdisk initial, par exemple zfs-dkmsAUR, vous pouvez écrire un hook pacman pour automatiser le processus de régénération des images initramfs.
Par exemple, si vous utilisez linux et mkinitcpio, pour mettre à jour le module ZFS après chaque mise à jour de zfs-dkmsAUR,
/etc/pacman.d/hooks/90-mkinitcpio-dkms-linux.hook
[Trigger] Operation=Install Operation=Upgrade Operation=Remove Type=Package Target=zfs-dkms Target=linux [Action] Description=Update dkms modules in Linux initcpio Depends=mkinitcpio When=PostTransaction NeedsTargets Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -p linux'
Vous pouvez ajouter d'autres cibles au hook et faire des copies supplémentaires du hook si vous avez installé d'autres noyaux. Notez que le préfixe 90-
est nécessaire pour s'assurer qu'il s'exécute après les hooks DKMS.