Mini-howto Modules rhw@bigfoot.com 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 rhw@bigfoot.com