Mini-howto Modules
[email protected]
date ?
Vendredi 14 janvier 1998. traduit par Frederic Gacquer gacquer@neu-
ronnexion.fr
11.. BBuutt ddee ccee ddooccuummeenntt
Les documents existants sur linux et les modules n'ont pas reussi a me
fournir une explication satisfaisante comme par exmple la facon
d'installer linux avec succes avec les modules configures et
operationnels. La procedure expliquee dans ce document a ete utilisee
avec succes plusieurs fois, aussi bien sur mon propre systeme que sur
Internet pour donner des indications a quelqu'un essayant de faire
fontionner un element qui requiert un driver fourni seulement sous
forme de module.
Mon prope systeme a ete installe a partir d'une distribution linux
Redhat 4.1, et ce fut lors de cette installation que j'ai developpe
cette procedure. Je l'ai installee depuis avec succes sur plusieurs
systemes avec la distribution slackware, et sur un systeme avec une
distribution Debian. La procedure qui permet de configurer
correctement les modules sous linux pour ces trois distributions est
dans ce document.
22.. AAVVEERRTTIISSSSEEMMEENNTT
J'ai recemment utilise la meme procedure avec la RedHat 4.2, mais avec
des resultats contradictoires sur des systemes apparement identiques.
Je n'ai PAS encore determine quel est le probleme, et ne peut donc PAS
garantir aujourd'hui que cela va ou non fonctionner sur votre systeme.
33.. PPrreerreeqquuiiss
Avant d'appliquer les etapes de ce document, le lecteur DOIT avoir
installe linux pour que l'on puisse se connecter en tant que root, car
la majorite des etapes impliquees ne peuvent etre entreprises que par
le dit utilisateur.
Le noyau existant peut etre compile soit pour utiliser les modules
soit pour ne pas les utiliser. Il peut meme afficher des messages
d'erreurs pendant le demarrage du systeme signalent les modules
configures 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 supposee se trouver a la
racine /usr/src/linux qui est suppose etre le repertoire courant, au
travers de ce document, de n'importe quelle commande qui en est issue.
44.. AAcccceelleerreerr llaa ccoommppiillaattiioonn
Si votre machine a 16 mega ou plus de RAM, on peut accelerer utilement
les choses en permettant de compiler plusieurs modules en parallele.
Cela augmentera la charge cpu de la machine pendant la recompilation
du noyau mais reduira le temps pendant lequel la compilation
s'effectuera.
Avant d'utiliser cette methode, vous devez verifier la quantite de RAM
presente dans votre machine, car si vous l'avez estimee trop grande,
la compilation va en fait etre moins rapide. L'experience a montree
que la valeur optimum depend de la quantite de RAM dans votre systeme
selon la formule suivante, au moins pour les systemes qui ont jusqu'a
32 Mo de RAM, meme si elle est applicable aux systemes avec une plus
grande quantite de RAM:
N= [RAM en Mo] / 8 + 1
Pour ceux qui n'aime pas les maths, les valeurs pour les quantites
courante de RAM sont :
La valeur a utiliser avec
+o 16 Mo 3
+o 24 Mo 4
+o 32 Mo 5
+o 40 Mo 6
+o 48 Mo 7
+o 56 Mo 8
+o 64 Mo 9
+o 80 Mo 11
+o 96 Mo 13
+o 112 Mo 15
+o 128 Mo 17
Quand vous avez choisi la valeur correcte, editer le fichier
/usr/src/linux/Makefile et trouver la ligne :
MAKE=make
La remplacer par:
MAKE=make -j N
ou N est le nombre calcule precedemment.
55.. RReeccoommppiilleerr llee nnooyyaauu aavveecc lleess mmoodduulleess
Le noyau peut etre reconfigure pour utiliser les modules pour tout
sauf le systeme de fichier monte root (dans la plupart des cas, c'est
le systeme de fichier ext2).
Cependant, il y a certains elements qui semble difficle a installer
proprement en tant que modules, aussi je propose de compiler dans le
noyau:
+o Les pilotes des cartes ethernet
+o Les pilotes des CDROMs SCSI.
D'autre part, il y a certaines combinaisons de pilotes qui ne
fonctionne QUE comme module, particulierement la combinaison d'un ou
plusieurs des groupes suivants :
+o L'imprimante parallele
+o Un pilote de port parallele, comme le lecteur Zip de IOMEGA ou le
lecteur Jazz, ou le CDROM de chez BackPack, et
+o Le demon PLIP
Vous aurez a decider de ce qui sera compile dans le noyau, ou comme
module, en prenant en compte les points cites ci-dessus. Les vrais
choix seront fait durant la compilation, au moment de la sequence
d'instructions suivante :
cd /usr/src/linux
make menuconfig
make dep clean modules modules_install zImage
Apres cela, les dependances de modules doivent etre referencees. C'est
accompli par les commandes suivantes:
depmod -a
Maintenant le nouveau noyau a besoin d'etre insere dans la sequence
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
utilise.
Je recommande que le nouveau noyau ne soit pas insere comme etant le
noyau linux par defaut car s'il plante, il sera extremement difficile
de recuperer le setup linux sans refaire une complete reinstallation,
ce qui n'est pas recommande. Pour cette raison, j'ai les entrees
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 entree indique qu'il y a une OPTION de boot (ignoree si l'image
en question n'existe pas) qui charge le fichier /boot/newlinux s'il
est selectionne, et permet de selectionner le mode video dans lequel
il sera execute.
Supposant l'existence de l'entree ci-dessus dans /etc/lilo.conf le
noyau modifie est sauvegarde au bon endroit a la fin de la
compilation, et il peut etre installe via les commandes suivantes:
lilo
Ayant fait cela, le lecteur a besoin de suivre les etapes suivantes
qui dependent de la distribution choisie :
+o Configurer Debian ou la Redhat pour les modules
+o Configurer la Slackware pour les modules
+o Configurer les autres distributions pour les modules
55..11.. CCoonnffiigguurreerr DDeebbiiaann oouu llaa RReeddhhaatt ppoouurr lleess mmoodduulleess
Avant la prise en compte des operations decrites ici, celles listees
dans "Recompiler le noyau" pour les modules sont supposees realisees.
La distribution Debian et la Redhat ont des procedures de boot
identiques, et ont aussi des procedures identiques pour configurer les
modules inclus.
1. vous etant connecte root, utiliser votre editeur de texte favori
pour creer un nouveau fichier appele /etc/rc.d/init.d/modules.init
avec le contenu suivant :
# Initialisation des modules
#
# Demarrer demon d'auto-chargement des modules
/sbin/kerneld
# Monter toutes les partitions courantes auto-montables non montees
/sbin/mount -a
2. Ayant cree le fichier ci-dessus, executer les etapes suivantes
alors que vous etes connecte root:
cd /etc/rc.d
chmod 755 init.d/*
cd rc3.d
ln -s ../init.d/modules.init 05modules.init
Le systeme peut etre relance, les modules sont alors implementes.
55..22.. CCoonnffiigguurreerr llaa SSllaacckkwwaarree ppoouurr lleess mmoodduulleess
Avant la prise en compte des operations decrites ici, celles listees
dans "Recompiler le noyau" pour les modules sont supposees realisees.
1- Le fichier /etc/rc.d/rc.M doit etre editer comme suit :
+o Aux alentours de la ligne 18, il y a une section du style :
# Screen blanks after 15 minutes idle time.
/bin/setterm -blank 15
Juste apres, inserer le paragraphe suivant, avec les traditionnelles
lignes blanches au dessus et en dessous:
# Charger le chargeur automatique de module noyau
/sbin/kerneld
+o A peut pres 12 lignes plus loin il y a ce qui suit :
# 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
Quand ces changements ont ete fait, sauver le fichier. Aucun
changement supplementaire n'est requis pour la Slackware.
55..33.. CCoonnffiigguurreerr lleess aauuttrreess ddiissttrriibbuuttiioonnss ppoouurr lleess mmoodduulleess
Avant la prise en compte des operations decrites ici, celles listees
dans "Recompiler le noyau" pour les modules sont supposees realisees.
La procedure precise pour les autres distributions n'a pas ete
determinee, mais il s'agit probablement d'une de celle citees plus
haut. Pour determiner laquelle, afficher le contenu du repertoire
/etc/rc.d, comme suit:
cd /etc/rc.d
ls -l *.d rc.*
A partir du resultat, vous pouvez choisir une des trois options
suivantes:
+o Si cette liste inclu un repertoire nomme init.d et quelques
repertoires dont les noms correspondent a rc?.d (ou le point
d'interrogation remplace un caractere unique), et n'inclu PAS un
fichier nomme rc.M, cette distribution peut etre configuree pour
les modules en suivant la procedure pour les distributions Debian
et redhat.
+o Si cette liste n'inclu pas un repertoires appele init.d mais inclu
un fichier appele rc.M alors la distribution peut etre configuree
pour les modules en suivant la procedure pour la distribution
slackware.
+o Si a cette liste ne correspond aucun des criteres ci-dessus, la
distribution a un script de boot qui n'est pas presente dans cet
Howto. Dans ce cas, vous etes invites a contacter l'auteur de ce
document pour conseils.
66.. CCooppyyrriigghhtt eett LLooii
Ce document est couvert par les termes de la Licence Generale Publique
GNU (GPL), dont tous les termes et limitations s'appliquent.
L'auteur peut etre contacte par email a
[email protected]