Que fait DKMS? Comment est-ce que je l'utilise?

23

J'ai vu quelques mentions à propos de DKMS récemment, mais il n'est pas clair ce qu'il fait réellement sur mon système.

Que fait DKMS et comment l'utiliser?

user238204
la source

Réponses:

25

Le package DKMS (Dynamic Kernel Module Support) ( http://linux.dell.com/dkms/ ) prend en charge l'installation de versions supplémentaires des modules du noyau. Le package se compile et s'installe dans l'arborescence du noyau. La désinstallation restaure les modules précédents. Par défaut, l'installation se fait dans l'arborescence actuelle du noyau, mais n'importe quelle arborescence du noyau peut être sélectionnée avec des options de ligne de commande. De plus, DKMS est appelé automatiquement lors de l'installation de nouveaux packages d'images de noyau Ubuntu, et donc les modules ajoutés à DKMS seront automatiquement transportés lors des mises à jour.

Présentation

Pour utiliser un module avec DKMS, on place les fichiers d'installation du module (pourrait être du code source ou binaire) dans / usr / src / -, ainsi qu'un fichier de configuration dkms.conf qui indique à DKMS comment construire / configurer le module et ce que son nom est. Dans des scénarios plus avancés, des instructions de construction conditionnelles et des correctifs peuvent être effectués par le système dkms, mais compte tenu de votre cas, cela peut ne pas être nécessaire.

Procédure pas à pas

Imaginons que vous souhaitiez installer un module pour votre "adaptateur génial". On vous donne une source tarball awesome-20091211-v1.1.tgz.

Avec DKMS, nous expliquons à DKMS comment procéder à votre place en créant un fichier dkms.conf avec les entrées appropriées. Par exemple, après avoir déballé l'archive tar:

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

A l'intérieur dkms.conf, nous pourrions ajouter les lignes:

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes

Tous les répertoires concernent l'emplacement du fichier dkms.conf. Cela indique à DKMS

  1. La commande pour construire le module (exécutez make dans le répertoire src /).
  2. La commande pour nettoyer l'arborescence source (exécutez make clean dans le répertoire src /).
  3. Nom du module sans l'extension .o ou .ko. Cela peut en fait être un tableau de modules si plusieurs modules sont construits, voir man dkms.
  4. Où DKMS peut trouver le module intégré.
  5. Le nom et la version DKMS doivent être associés aux modules.
  6. Pour refaire l'image initrd après l'installation du module.

Vous pouvez également ajouter des options pour appeler des scripts avant ou après la construction ou l'installation, fournir des commandes make supplémentaires (conditionnelles), des commandes de patch, etc. si nécessaire. Ces options et plus sont décrites dans la section dkms.conf dans man dkms.

Ensuite, nous installons le module dans DKMS en copiant les fichiers d'installation du module dans l'arborescence des sources du noyau / usr / src / - et informons DKMS du nouveau module:

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...

C'est ça! DKMS a maintenant ajouté notre module à sa liste de modules à construire pour les futures installations du noyau. Pour vous assurer qu'il fonctionne et pour installer le module dans notre noyau actuel, nous pouvons demander à dkms de construire et d'installer le module:

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree

Avec un peu de chance, votre module sera installé et réinstallé dans les futures mises à jour du noyau.

Exemples

La page de manuel DKMS contient des informations utiles sur la configuration de votre module de noyau préféré à utiliser avec DKMS. Il ne s'agit pas d'une documentation complète, mais elle répondra à de nombreuses questions. Cela peut vous aider à noter les exemples suivants, même si les modules utilisés ne sont pas ceux que vous souhaitez configurer:

  • RocketRaid - Deux exemples sur la façon de configurer les pilotes Highpoint RocketRaid RR26xx et RR62x avec DKMS.

De: help.ubuntu.com

Plus d'informations peuvent être trouvées ici:

Rinzwind
la source
2
FWIW, le projet DKMS a une nouvelle maison sur Github github.com/dell/dkms
DDay