Mini-howto Modules

rhw@bigfoot.com

date ?
Vendredi 14 janvier 1998. traduit par Frédéric Gacquer gacquer@neuronnexion.fr

1. But de ce document

Les documents existants sur linux et les modules n'ont pas réussi à me fournir une explication satisfaisante comme par exmple la façon d'installer linux avec succès avec les modules configurés et opérationnels. La procédure expliquée dans ce document a été utilisée avec succès plusieurs fois, aussi bien sur mon propre système que sur Internet pour donner des indications à quelqu'un essayant de faire fontionner un élément qui requiert un driver fourni seulement sous forme de module.

Mon prope système a été installé à partir d'une distribution linux Redhat 4.1, et ce fut lors de cette installation que j'ai développé cette procédure. Je l'ai installée depuis avec succès sur plusieurs systèmes avec la distribution slackware, et sur un système avec une distribution Debian. La procédure qui permet de configurer correctement les modules sous linux pour ces trois distributions est dans ce document.

2. AVERTISSEMENT

J'ai récemment utilisé la même procédure avec la RedHat 4.2, mais avec des résultats contradictoires sur des systèmes apparement identiques. Je n'ai PAS encore déterminé quel est le problème, et ne peut donc PAS garantir aujourd'hui que cela va ou non fonctionner sur votre système.

3. Prérequis

Avant d'appliquer les étapes de ce document, le lecteur DOIT avoir installé linux pour que l'on puisse se connecter en tant que root, car la majorité des étapes impliquées ne peuvent être entreprises que par le dit utilisateur.

Le noyau existant peut être compilé soit pour utiliser les modules soit pour ne pas les utiliser. Il peut même afficher des messages d'erreurs pendant le démarrage du système signalent les modules configurés qui ne sont pas disponible pour l'instant, pourvu que la condition ci-dessus soit remplie.

L'emplacement du source du noyau en cours est supposée se trouver à la racine /usr/src/linux qui est supposé être le répertoire courant, au travers de ce document, de n'importe quelle commande qui en est issue.

4. Accélérer la compilation

Si votre machine a 16 méga ou plus de RAM, on peut accélérer utilement les choses en permettant de compiler plusieurs modules en parallèle. Cela augmentera la charge cpu de la machine pendant la recompilation du noyau mais réduira le temps pendant lequel la compilation s'effectuera.

Avant d'utiliser cette méthode, vous devez vérifier la quantité de RAM présente dans votre machine, car si vous l'avez estimée trop grande, la compilation va en fait être moins rapide. L'expérience a montrée que la valeur optimum dépend de la quantité de RAM dans votre système selon la formule suivante, au moins pour les systèmes qui ont jusqu'à 32 Mo de RAM, même si elle est applicable aux systèmes avec une plus grande quantité de RAM:

N= [RAM en Mo] / 8 + 1

Pour ceux qui n'aime pas les maths, les valeurs pour les quantités courante de RAM sont :

La valeur à utiliser avec

Quand vous avez choisi la valeur correcte, éditer le fichier /usr/src/linux/Makefile et trouver la ligne :

MAKE=make

La remplacer par:

MAKE=make -j N

où N est le nombre calculé précédemment.

5. Recompiler le noyau avec les modules

Le noyau peut être reconfiguré pour utiliser les modules pour tout sauf le système de fichier monté root (dans la plupart des cas, c'est le système de fichier ext2).

Cependant, il y a certains éléments qui semble difficle à installer proprement en tant que modules, aussi je propose de compiler dans le noyau:

D'autre part, il y a certaines combinaisons de pilotes qui ne fonctionne QUE comme module, particulièrement la combinaison d'un ou plusieurs des groupes suivants :

Vous aurez à décider de ce qui sera compilé dans le noyau, ou comme module, en prenant en compte les points cités ci-dessus. Les vrais choix seront fait durant la compilation, au moment de la séquence d'instructions suivante :

   cd /usr/src/linux
   make menuconfig
   make dep clean modules modules_install zImage

Après cela, les dépendances de modules doivent être référencées. C'est accompli par les commandes suivantes:

   depmod -a

Maintenant le nouveau noyau a besoin d'être inséré dans la séquence d'initialisation du boot. Je vais supposer que le lecteur utilise LILO dans ce but, puisque c'est le seul gestionnaire de boot que j'ai utilisé.

Je recommande que le nouveau noyau ne soit pas inséré comme étant le noyau linux par défaut car s'il plante, il sera extrêmement difficile de récupérer le setup linux sans refaire une complète réinstallation, ce qui n'est pas recommandé. Pour cette raison, j'ai les entrées suivantes dans mon fichier /etc/lilo.conf :

   image=/usr/src/linux/arch/i386/boot/zImage
      label=new
      alias=n
      read-only
      vga=ask
      optional

Cette entrée indique qu'il y a une OPTION de boot (ignorée si l'image en question n'existe pas) qui charge le fichier /boot/newlinux s'il est sélectionné, et permet de sélectionner le mode vidéo dans lequel il sera exécuté.

Supposant l'existence de l'entrée ci-dessus dans /etc/lilo.conf le noyau modifié est sauvegardé au bon endroit à la fin de la compilation, et il peut être installé via les commandes suivantes:

   lilo

Ayant fait cela, le lecteur a besoin de suivre les étapes suivantes qui dépendent de la distribution choisie :

5.1 Configurer Debian ou la Redhat pour les modules

Avant la prise en compte des opérations décrites ici, celles listées dans "Recompiler le noyau" pour les modules sont supposées réalisées.

La distribution Debian et la Redhat ont des procédures de boot identiques, et ont aussi des procédures identiques pour configurer les modules inclus.

1. vous étant connecté root, utiliser votre éditeur de texte favori pour créer un nouveau fichier appelé /etc/rc.d/init.d/modules.init avec le contenu suivant :

   # Initialisation des modules
   #
   # Démarrer démon d'auto-chargement des modules
   /sbin/kerneld

   # Monter toutes les partitions courantes auto-montables non montées
   /sbin/mount -a

2. Ayant créé le fichier ci-dessus, exécuter les étapes suivantes alors que vous êtes connecté root:

   cd /etc/rc.d
   chmod 755 init.d/*
   cd rc3.d
   ln -s ../init.d/modules.init 05modules.init

Le système peut être relancé, les modules sont alors implémentés.

5.2 Configurer la Slackware pour les modules

Avant la prise en compte des opérations décrites ici, celles listées dans "Recompiler le noyau" pour les modules sont supposées réalisées.

1- Le fichier /etc/rc.d/rc.M doit être éditer comme suit :

Quand ces changements ont été fait, sauver le fichier. Aucun changement supplémentaire n'est requis pour la Slackware.

5.3 Configurer les autres distributions pour les modules

Avant la prise en compte des opérations décrites ici, celles listées dans "Recompiler le noyau" pour les modules sont supposées réalisées.

La procédure précise pour les autres distributions n'a pas été déterminée, mais il s'agit probablement d'une de celle citées plus haut. Pour déterminer laquelle, afficher le contenu du répertoire /etc/rc.d, comme suit:

   cd /etc/rc.d
   ls -l *.d rc.*

A partir du résultat, vous pouvez choisir une des trois options suivantes:

6. Copyright et Loi

Ce document est couvert par les termes de la Licence Générale Publique GNU (GPL), dont tous les termes et limitations s'appliquent.

L'auteur peut être contacté par email à rhw@bigfoot.com