web-dev-qa-db-fra.com

Que fait DKMS? Comment puis-je l'utiliser?

J'ai récemment vu quelques mentions sur DKMS, mais on ne sait pas vraiment ce que cela fait réellement sur mon système.

Que fait DKMS et comment l'utiliser?

22
user238204

DKMS (package de prise en charge du module de noyau dynamique) ( http://linux.Dell.com/dkms/ ) fournit support pour l'installation de versions supplémentaires des modules du noyau. Le paquet est compilé et installé dans l'arborescence du noyau. La désinstallation restaure les modules précédents. Par défaut, l’installation se trouve dans l’arborescence actuelle du noyau, mais toute arborescence 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’image de noyau Ubuntu. Par conséquent, les modules ajoutés à DKMS seront automatiquement acheminés lors des mises à jour.

Vue d'ensemble

Pour utiliser un module avec DKMS, on place les fichiers d’installation du module (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 qu’il en va. nom est. Dans des scénarios plus avancés, les instructions de construction conditionnelles et les correctifs peuvent être effectués par le système dkms, mais ce n'est peut-être pas nécessaire dans votre cas.

Visite virtuelle

Supposons que vous souhaitiez installer un module pour votre "adaptateur génial". Vous recevez un code source tarball awesome-20091211-v1.1.tgz.

Avec DKMS, nous indiquons à DKMS comment le faire pour vous en créant un fichier dkms.conf avec les entrées appropriées. Par exemple, après avoir décompressé l'archive:

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

Dans 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 sont relatifs à l'emplacement du fichier dkms.conf. Cela dit à DKMS

  1. La commande pour construire le module (lance make dans le répertoire src /).
  2. La commande pour nettoyer l’arborescence des sources (exécutez make clean dans le répertoire src /).
  3. Le 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 construit.
  5. Le nom et la version que DKMS doit associer au (x) module (s).
  6. Pour refaire l'image initrd après avoir installé le module.

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

Ensuite, nous installons le module dans DKMS en copiant les fichiers d’installation du module dans l’arborescence du noyau/usr/src/- et en informant 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 tout! DKMS a maintenant ajouté notre module à sa liste de modules à construire pour les futures installations du noyau. Pour vous assurer que cela 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é pour une utilisation avec DKMS. Ce n'est pas une documentation complète, mais cela répondra à beaucoup de questions. Il peut être utile de noter les exemples suivants, même si les modules utilisés ne sont pas ceux que vous souhaitez configurer:

  • RocketRaid - Deux exemples d’installation du Highpoint RocketRaid pilotes RR26xx et RR62x avec DKMS.

De: help.ubuntu.com

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

25
Rinzwind