rhw@bigfoot.com
gacquer@neuronnexion.fr
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.
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.
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.
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.
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 :
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.
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 :
# Screen blanks after 15 minutes idle time.
/bin/setterm -blank 15
Juste après, insérer le paragraphe suivant, avec les traditionnelles lignes blanches au dessus et en dessous:
# Charger le chargeur automatique de module noyau
/sbin/kerneld
# 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 été fait, sauver le fichier. Aucun changement supplémentaire n'est requis pour la Slackware.
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:
init.d
et quelques
répertoires dont les noms correspondent à rc?.d
(où le point
d'interrogation remplace un caractère unique), et n'inclu
PAS un fichier nommé rc.M
, cette distribution peut être
configurée pour les modules en suivant la procédure
pour les distributions Debian et redhat.
init.d
mais
inclu un fichier appelé rc.M
alors la distribution peut être
configurée pour les modules en suivant la procédure
pour la distribution slackware.
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