console linux

Compilation de module noyau IGB avec DKMS

Il arrive parfois que le module noyau pour un périphérique n’est pas encore intégré au noyau de notre distribution. Il est donc nécessaire de compiler le driver du périphérique en tant que module noyau. Mais à chaque installation d’un nouveau noyau, il faut recompiler ce module noyau… Pour remédier à cela, on va utiliser DKMS. Il va nous permettre de recompiler automatiquement les sources d’un module noyau lors de la mise à jour du noyau.

Driver réseau compilé par DKMS

Dans mon cas, un problème de carte réseau non reconnue est apparue avec le matériel. Pourtant c’est une carte réseau Intel… Et Intel est très libre avec ces drivers habituellement. Cette carte réseau doit utiliser le driver IGB qui doit être compilé à la main au moment où j’en ai eu besoin. Actuellement, depuis Debian Wheezy 7.5 le driver a été intégré au noyau. Mais cet exemple est bon pour montrer l’utilisation de DKMS.

Installation manuelle du driver IGB

Installation des paquets de base :

Prendre les paquets suivants à la main dans mon cas vu que je n’ai pas de carte réseau :

  • cpp4.6
  • cpp4.7
  • make

Faire un lien de gcc pour utiliser la version 4.6 et pas 4.7 :

Compiler le module noyau :

Supprimer le lien créé plus haut après que la compilation ait réussie.

Redémarrer !

Ensuite installation de gcc-4.7 :

Gérer les modules noyau compilés via DKMS

Cela permet de compiler automatique les sources de modules noyau nouvellement installés. Cela réduit le risque d’erreur en cas de mise à jour noyau et lors de la compilation de ses modules. Le module réseau IGB devant être compilé à chaque nouvelle mise à jour du noyau, il est préférable de gérer la compilation par DKMS.

Création du fichier « dkms.conf » dans ce répertoire /usr/src/igb-5.0.6 :

Les lignes à modifier sont :

  • BUILD_MODULE_NAME[0] : le nom du module
  • PACKAGE_NAME : le même nom
  • PACKAGE_VERSION : la version du module
  • DEST_MODULE_NAME[0] : le nom du module qui sera placé dans /lib/modules/$(uname -r)
  • DEST_MODULE_LOCATION[0] : le sous répertoire approprié pour le module

On ajoute ce module dans DKMS pour le gérer :

Ensuite un build et install :

Voilà c’est tout. A la prochaine mise à jour du noyau, les sources du noyau seront automatiquement recompilés.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">