<!doctype linuxdoc system>

<!--  Traduction du Mini-HOWTO MODULES
 -->

<article>

<!-- Title information -->

<title> Mini-howto Modules
<author><tt/rhw@bigfoot.com/
<date> date ?
<abstract>
Vendredi 14 janvier 1998.
traduit par Frédéric Gacquer <tt/gacquer@neuronnexion.fr/
</abstract>

<!-- Table of contents -->
<toc>

<!-- Begin the document -->

<sect>But de ce document
<p>
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.
<p>
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.

<sect>AVERTISSEMENT
<p>
 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.

<sect>Prérequis

<p>
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.

<p>
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.

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

<sect> Accélérer la compilation
<p>
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.
<p>
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:

<tscreen><verb>
N= [RAM en Mo] / 8 + 1
</verb></tscreen>

<p>
Pour ceux qui n'aime pas les maths, les valeurs pour
les quantités courante de RAM sont :
<p>
La valeur à utiliser avec 
<itemize>
 <item> 16 Mo 3 
 <item> 24 Mo 4 
 <item> 32 Mo 5 
 <item> 40 Mo 6
 <item> 48 Mo 7 
 <item> 56 Mo 8 
 <item> 64 Mo 9 
 <item> 80 Mo 11 
 <item> 96 Mo 13 
 <item> 112 Mo 15 
 <item> 128 Mo 17
</itemize>
<p>
Quand vous avez choisi la valeur correcte, éditer le fichier 
<tt>/usr/src/linux/Makefile</tt> et trouver la ligne :

<tscreen><verb>
MAKE=make
</verb></tscreen>

La remplacer par:

<tscreen><verb>
MAKE=make -j N
</verb></tscreen>

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

<sect> Recompiler le noyau avec les modules
<p>
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).
<p>
Cependant, il y a certains éléments qui semble difficle à installer
proprement en tant que modules, aussi je propose de 
compiler dans le noyau:

<itemize>
    <item> Les pilotes des cartes ethernet
    <item> Les pilotes des CDROMs SCSI.
</itemize>

<p>
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 :

<itemize>
    <item> L'imprimante parallèle
    <item> Un pilote de port parallèle, comme le lecteur Zip de IOMEGA ou le
      lecteur Jazz, ou le CDROM de chez BackPack, et
    <item> Le démon PLIP
</itemize>

<p>
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 :

<tscreen><verb>
   cd /usr/src/linux
   make menuconfig
   make dep clean modules modules_install zImage
</verb></tscreen>

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

<tscreen><verb>
   depmod -a
</verb></tscreen>

<p>
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é.

<p>
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 <tt>/etc/lilo.conf</tt> :


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

<p>
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
<tt>/boot/newlinux</tt> s'il est sélectionné, et permet de sélectionner le mode
vidéo dans lequel il sera exécuté.

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

<tscreen><verb>
   lilo
</verb></tscreen>

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

<itemize>
	<item> Configurer Debian ou la Redhat pour les modules
	<item> Configurer la Slackware pour les modules
	<item> Configurer les autres distributions pour les modules
</itemize>

<sect1>Configurer Debian ou la Redhat pour les modules

<p>
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. 

<p>
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.

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


<tscreen><verb>
   # 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
</verb></tscreen>

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


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

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


<sect1>Configurer la Slackware pour les modules
<p>
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 <tt>/etc/rc.d/rc.M</tt> doit être éditer comme suit :

<itemize>
	<item> Aux alentours de la ligne 18, il y a une section du style :
         
         <tscreen><verb>
   # Screen blanks after 15 minutes idle time.
   /bin/setterm -blank 15
         </verb></tscreen>
<p>
	Juste après, insérer le paragraphe suivant, avec les traditionnelles
       lignes blanches au dessus et en dessous:

         <tscreen><verb>
   # Charger le chargeur automatique de module noyau
   /sbin/kerneld
         </verb></tscreen>

	<item> A peut près 12 lignes plus loin il y a ce qui suit :

         <tscreen><verb>
   # if there is no /etc/HOSTNAME, fall back on this default:
   Immediately prior to this, insert the following paragraph, again
   with the usual blank lines either side of it:
            
   # Mount remaining unmounted auto-mount drives.
   /sbin/mount -a
         </verb></tscreen>
</itemize>

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


<sect1>Configurer les autres distributions pour les modules
<p>
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. 
<p>
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 <tt>/etc/rc.d</tt>,
comme suit:


<tscreen><verb>
   cd /etc/rc.d
   ls -l *.d rc.*
</verb></tscreen>

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

<itemize>
<item> Si cette liste inclu un répertoire nommé <tt>init.d</tt> et quelques 
répertoires dont les noms correspondent à <tt>rc?.d</tt> (où le point
d'interrogation remplace un caractère unique), et n'inclu
PAS un fichier nommé <tt>rc.M</tt>, cette distribution peut être
configurée pour les modules en suivant la procédure 
pour les distributions Debian et redhat.

<item> Si cette liste n'inclu pas un répertoires appelé <tt>init.d</tt> mais
inclu un fichier appelé <tt>rc.M</tt> alors la distribution peut être 
configurée pour les modules en suivant la procédure 
pour la distribution slackware.

<item> Si à cette liste ne correspond aucun des critères ci-dessus, 
la distribution à un script de boot qui n'est pas présenté dans cet 
Howto. Dans ce cas, vous êtes invités à contacter l'auteur de ce 
document pour conseils.
</itemize>


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

<p>
L'auteur peut être contacté par email à 
<tt><htmlurl url="mailto://rhw@bigfoot.com" name="rhw@bigfoot.com"></tt>


</article>
