<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ftiercel</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ftiercel"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Ftiercel"/>
	<updated>2026-04-26T08:46:10Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Hardware-hard_plus-pnp&amp;diff=14399</id>
		<title>Discussion:Hardware-hard plus-pnp</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Hardware-hard_plus-pnp&amp;diff=14399"/>
		<updated>2007-04-01T09:31:34Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* Commentaires de : JerOme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Commentaires de : JerOme=&lt;br /&gt;
posté le 2004-10-18 16:18:18&lt;br /&gt;
&lt;br /&gt;
Juste pour dire que c&#039;est &amp;quot;VERIFYLD N&amp;quot; et pas &amp;quot;VERIFYLD NO&amp;quot;&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Hardware-hard_plus-pnp&amp;diff=14388</id>
		<title>Hardware-hard plus-pnp</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Hardware-hard_plus-pnp&amp;diff=14388"/>
		<updated>2007-03-22T17:51:16Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : Petite remise en forme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Les plus du matériel]]&lt;br /&gt;
= Le Plug and play =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Le Plug and play&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Serge&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;parfois appelé le Plug and Pray.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Avertissement ==&lt;br /&gt;
&lt;br /&gt;
On nous demande souvent à quel type de matériel s&#039;applique cette rubrique. Pour faire court, disons que PnP = cartes ISA seulement. Pour faire long, lisez le paragraphe ci-dessous !&lt;br /&gt;
&lt;br /&gt;
Les cartes PCI, AGP, etc.. ne posent AUCUN probléme de configuration, elles sont toujours détectées suivant les spécifications des bus où elles se trouvent, et n&#039;ont pas besoin d&#039;utilitaire spécial de configuration quelque soit l&#039;OS. On ne parle donc pas de PnP (ou alors c&#039;est un abus de langage) pour des cartes PCI ou AGP. Le plug and play se fait ici au niveau du matériel qui gère seul l&#039;allocation des ressources (IRQ, etc.).&lt;br /&gt;
&lt;br /&gt;
Par contre les cartes ISA ont des problèmes de configuration (non automatique pour la détection de conflits, etc...), donc on a inventé un &amp;quot;protocole&amp;quot; de configuration/détection conflit : le PnP. Donc le PnP en tant que tel ne s&#039;appliquent qu&#039;aux cartes ISA (quelque soit l&#039;OS)&lt;br /&gt;
&lt;br /&gt;
PS: ll y a une &amp;quot;extension&amp;quot; du PnP pour des périphériques tels que l&#039;écran, les périphs sur port parallèle, etc. mais ce n&#039;est pas du PnP à proprement parler, ça ne permet pas de configurer le périph (de toute facon y&#039;a rien a configurer, c&#039;est le port où se trouve ce périph qu&#039;il faut configurer et non pas le périph lui-même) mais juste de le détecter (le périph envoie une séquence lors de l&#039;initialisation du port disant &amp;quot;coucou je suis là, et je m&#039;appelle machin truc&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Voila donc PnP = cartes ISA SEULEMENT.&lt;br /&gt;
&lt;br /&gt;
== 2 méthodes ==&lt;br /&gt;
&lt;br /&gt;
Sous Linux le plug and play n&#039;est pas aussi simple que sous Windows (quoi que des fois....), il arrive assez souvent que nos cartes plug and play refusent de marcher sous Linux. Il existe en fait deux méthodes pour bien configurer son Linux pour faire fonctionner de telles cartes.&lt;br /&gt;
&lt;br /&gt;
=== Le BIOS ===&lt;br /&gt;
&lt;br /&gt;
La première consiste à dévalider dans le BIOS de notre carte mère l&#039;option PNP OS, et de configurer alors Linux comme si toute nos cartes n&#039;étaient pas PNP. C&#039;est la méthode la plus simple mais on perd alors la fonctionnalité du PNP sous linux, ce qui est un peu frustrant.&lt;br /&gt;
&lt;br /&gt;
=== Le PnP sous Linux ===&lt;br /&gt;
&lt;br /&gt;
La deuxième méthode consiste à utiliser le PNP sous Linux ; c&#039;est cette méthode que je vais vous expliquer. &amp;lt;br /&amp;gt;Tout d&#039;abord il faut valider le PNP dans le bios, &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;donc validez cette fois-ci le PNP OS dans le bios.&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;De plus, le PnP fonctionne avec les modules des cartes : &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;enlevez de votre kernel toute la configuration qui se reporte aux cartes&amp;lt;/font&amp;gt; (si par exemple votre carte son est PnP et que dans votre noyau vous avez répondu &amp;quot;yes&amp;quot; pour configurer votre carte son et passé les paramètres de votre carte : irq, etc. vous enlevez tout), mais par contre vous compilez votre noyau avec les &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;modules de vos cartes PnP&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si on reprend l&#039;exemple d&#039;une carte son, au moment du CONFIG SOUND vous répondez &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;M&amp;lt;/font&amp;gt; pour module et non pas Y ! En fait je vous explique, le chargement du PnP dans Linux se fait APRES le chargement du noyau, donc si vous configurez vos cartes dans le noyau, celui ci va les initialiser (sans y arriver en plus) et lorsque le PnP va tenter de les initialiser lui aussi, ça ne passera plus. Donc pour toutes les cartes PnP répondez par &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;M&amp;lt;/font&amp;gt; dans la config du noyau.&lt;br /&gt;
&lt;br /&gt;
Une fois ce travail exécuté, si vous avez une partition Windows 95 ou 98 sur votre machine, bootez dessus et notez la configuration de toutes vos cartes PNP (plage mémoire, irq, dma), puis rebootez sous linux. Il va déjà falloir vérifier que vous avez bien les &#039;&#039;isapnptools&#039;&#039; sur votre machine, pour cela lancez la commande &amp;lt;code&amp;gt;pnpdump&amp;gt;/etc/isapnp.conf&amp;lt;/code&amp;gt;. Si ça marche, c&#039;est que vous avez bien les &#039;&#039;isapnptools&#039;&#039; et que votre noyau supporte le PnP. Autrement il va falloir que vous téléchargiez les &#039;&#039;isapnptools&#039;&#039; et valider le PnP dans votre kernel. Si vous avez le message d&#039;erreur &amp;quot;trying port adress ...&amp;quot; puis &amp;quot;no board found&amp;quot; c&#039;est que votre carte mère n&#039;est pas PnP ; il vous faut alors configurer vos cartes à la main comme si elles n&#039;étaient pas PnP.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme lancé, celui-ci a créé en fait le fichier &amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;/etc/isapnp.conf&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;. Ce fichier créé, éditez-le, à l&#039;aide de vi par exemple. La structure d&#039;un tel fichier peut paraître barbare mais en fait elle est très simple.&lt;br /&gt;
&lt;br /&gt;
Tout d&#039;abord ajoutez la ligne (VERIFYLD NO) dans le début du fichier : certaines cartes (dont par exemple la Sound Blaster AWE64) n&#039;aiment pas du tout. Regardez alors les lignes. La plupart sont en commentaire (le # devant), et vous allez voir des IRQ, DMA , ADRESS dans ces lignes. Le plus important est de regarder les lignes non commentées (qui ne comportent pas de # au début) et vérifier bien que les paramètres sont bons par rapport à ceux qui étaient dans Windows. Si c&#039;est bon on touche à rien, si c&#039;est pas bon on commente la ligne et on recherche celle qui contient les bons paramètres irq, dma et adresse. Si vous ne la trouvez pas (très rare), remplacez alors dans la ligne qui ne contient pas le # les mauvais paramètres par les bons.&lt;br /&gt;
&lt;br /&gt;
Une fois cette vérification faite, regardez à chaque fin de configuration de chaque carte (avant de passer dans un LD différent) que vous avez bien une ligne qui contient : &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;(ACT Y), et qui n&#039;est pas commentée (qui ne contient pas # au début donc)&amp;lt;/font&amp;gt;. Une fois tout ça réalisé, tapez sous la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;isapnp /etc/isapnp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Regardez alors que vous n&#039;avez pas de message d&#039;erreur. Si un message d&#039;erreur IORESCHECK s&#039;affiche, notez par rapport à quel périphérique ce message apparaît, retournez dans le fichier &amp;lt;tt&amp;gt;isapnp.conf&amp;lt;/tt&amp;gt; et effacez pour ce périphérique (IORESCHECK ..), et ça devrait passer sans problèmes (j&#039;ai galêré 3 nuits pour comprendre que ma carte n&#039;était pas en conflit, que c&#039;etait en fait le contrôle de conflits d&#039;adresses qui ne marchait pas tout simplement).&lt;br /&gt;
&lt;br /&gt;
Si ça fonctionne, alors vous avez gagné ! Chargez les modules de vos cartes (&amp;lt;code&amp;gt;modprobe module&amp;lt;/code&amp;gt;) pour rendre celles-ci opérationnelles.&lt;br /&gt;
&lt;br /&gt;
On va un peu automatiser tout ca maintenant, pour cela activez l&#039;autoload des modules dans le kernel, &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;enable loadable module support Y&amp;lt;/font&amp;gt;, et &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;Kernel daemon support Y&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Après, éditez le fichier &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; (s&#039;il n&#039;existe pas ça va le créer) et ajoutez les lignes pour vos modules de cette façon :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alias  periph  nom_du_module&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C&#039;est-à-dire prenons l&#039;exemple pour une carte son Sound Blaster et une carte réseau compatible NE2000, le périphérique son s&#039;apelle sound et la carte réseau s&#039;apelle eth0 (vous n&#039;avez pas le choix), le module Sound Blaster s&#039;apelle &amp;lt;tt&amp;gt;sb&amp;lt;/tt&amp;gt; et le module NE2000 s&#039;apelle &amp;lt;tt&amp;gt;ne&amp;lt;/tt&amp;gt;, ça nous donne alors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alias sb sound&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;alias eth0 ne&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Récapitulatif ==&lt;br /&gt;
&lt;br /&gt;
Un petit récapitulatif des périphériques sous Linux (les plus courants) en sachant que vous pouvez mettre tous les modules (même des périphériques non PnP) pour qu&#039;ils se chargent au démarrage. &#039;&#039;&#039;Attention&#039;&#039;&#039; certains ont besoin d&#039;option(s), je ferai une petite rubrique spéciale pour les modules plus tard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;50%&amp;quot; border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | son&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | sound&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | carte réseau 1, 2, etc...&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | eth0, eth1, ...&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | carte scsi&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | scsi_hostadapter&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | port paralléle&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; | parport_lowlevel &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les options, moi par exemple pour ma carte ethernet j&#039;ai du repasser l&#039;adresse et l&#039;irq de ma carte, ceci se fait de cette façon toujours dans le fichier &amp;lt;tt&amp;gt;conf.modules &amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;options  nom_modules  les_options&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;exemple&amp;lt;/u&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;options  ne  io=0x240  irq=12 &amp;lt;br /&amp;gt;&#039;&#039;(pour une carte réseau a l&#039;adresse 240 et irq 12)&#039;&#039; Attention l&#039;adresse est en hexadécimal, donc de type &amp;lt;tt&amp;gt;0xXXX&amp;lt;/tt&amp;gt;, ne pas oublier le &amp;lt;tt&amp;gt;0x&amp;lt;/tt&amp;gt; qui n&#039;apparait pas dans Windows.&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Serge Tchesmeli le 04/10/1999.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 04/10/1999, Serge Tchesmeli&lt;br /&gt;
{{LDL}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Reseau-cxion_locale-lan&amp;diff=14384</id>
		<title>Reseau-cxion locale-lan</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Reseau-cxion_locale-lan&amp;diff=14384"/>
		<updated>2007-03-20T17:48:17Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : Remise en forme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Réseau local]]&lt;br /&gt;
= Configuration carte réseaux pour un réseau local =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Configuration carte réseaux pour un réseau local&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Serge (quelques modifications par Fred et Jicé)&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;ou comment faire communiquer tous vos ordinateurs entre eux&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Le protocole réseau de prédilection pour Unix et l&#039;internet est le TCP/IP, mais pour de nombreux débutants et non informaticiens, configurer un réseau est plus qu&#039;un casse tête. Alors on va voir comment configurer un tel réseau sous Linux (quelques PC reliés entre eux) , pour les connexions pour le net, voir les autres rubriques.&lt;br /&gt;
&lt;br /&gt;
== Le HARDWARE (carte réseau) ==&lt;br /&gt;
&lt;br /&gt;
=== Pré-requis ===&lt;br /&gt;
&lt;br /&gt;
Bon avant tout il faut configurer la partie hard du réseau. Dans le cas d&#039;un réseau local, on a plusieurs machines, pour les connecter entre elles, il faut des cartes réseau et ce qu&#039;on appelle un &amp;quot;média&amp;quot; ou &amp;quot;support&amp;quot;. On a le choix entre plusieurs topologies que je ne vous explique que très rapidement :&lt;br /&gt;
&lt;br /&gt;
* Câblage en bus coaxial ou &amp;quot;BNC&amp;quot; : le moins cher à mettre en place, de bonnes performances de communication jusqu&#039;à quelques machines (moins de 10) et pour des applications non critiques, c&#039;est a dire des partages de fichiers, un petit intranet local. Il suffit pour cela d&#039;une carte réseau par machine avec connecteur BNC, un câble coaxial entre deux machines de 50 Ohms, avec un T BNC pour chaque machine et deux bouchons réseaux de 50 Ohms à chaque extrémité du support (c&#039;est à dire pour la première et la dernière machine de la chaîne). Ça ne revient pas cher (cartes et câbles compris on arrive en gros à 30 &amp;amp;euro; par machine maximum). Il faut quand même respecter les normes, c&#039;est à dire pas plus de 500 m de câble, pas moins de 50 cm entre deux stations, bien mettre les bouchons à chaque extrémité et c&#039;est bon.&lt;br /&gt;
* Câblage en étoile RJ45 : C&#039;est un peu plus cher, mais ce type de câblage a de bien meilleures performances : on peut espérer aller jusqu&#039;à 100 Mb/s avec du matériel fait pour (contre 10 Mb/s pour le BNC), on peut enlever une machine sans &amp;quot;rompre&amp;quot; le support (c&#039;est à dire que les stations qui ne sont pas en relation avec la station qui vient d&#039;être déconnectée continueront de fonctionner comme si de rien n&#039;était). Bref c&#039;est beaucoup mieux et c&#039;est le standard pour des réseaux avec des applications gourmandes, un grand nombre de machines etc... Le câblage est différent, on utilise alors des paires torsadées en cuivre, chaque câble doit faire 100 m maximum, on passe par un élément actif (Hub ou Switch) pour connecter les machines, les prises sont du type RJ45 (un peu comme les prises téléphoniques américaines). En fait chaque carte réseau est reliée par un câble à un élément actif, d&#039;ou le nom de câblage en étoile (partant de l&#039;élément actif). On distingue deux types d&#039;élément actif :&lt;br /&gt;
** les HUBS qui en fait &amp;quot;émulent&amp;quot; une connexion en bus en envoyant sur chaque câble toutes les informations du réseau qu&#039;ils reçoivent. Ceux-ci laissent à la machine destinataire des requêtes réseau le soin de les prendre en compte ou de les ignorer si elle n&#039;est pas destinataire,&lt;br /&gt;
** les SWITCH qui sont beaucoup plus intelligents que les HUBS : ils envoient les informations du réseau UNIQUEMENT vers la machine destinataire, donc on gagne en performance (et en sécurité, car il devient plus difficile de &amp;quot;sniffer&amp;quot; le réseau), c&#039;est pour cela que le câblage en RJ45 est plus performant que le BNC. &lt;br /&gt;
Entre le 10 Mb ou le 100 Mb il suffit d&#039;avoir le matériel qu&#039;il faut, c&#039;est a dire carte réseau, HUB ou SWITCH à 100 Mb. Seul les SWITCH permettent effectivement un &amp;quot;vrai&amp;quot; réseau en étoile. Certains HUBs ou SWITCH permettent de mélanger les deux types de vitesse, alors qu&#039;en général, une carte 10 Mb/s oblige toutes les machines à communiquer en 10 Mb/s.&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: On trouve maintenant sur le marché des KITS carte réseau + HUB + câblage pour pas cher du tout (3 cartes, 1 HUB les câbles pour 60 &amp;amp;euro;), si vous devez faire un achat, prenez plutôt ça, attention quand même à ce que les cartes soient supportées par Linux (cf. : Hardware-HOWTO ([http://www.linuxdoc.org/HOWTO/Hardware-HOWTO.html anglais]/[http://www.freenix.org/unix/linux/HOWTO/Hardware-HOWTO.html  français])).&lt;br /&gt;
&lt;br /&gt;
Pour les cartes réseau, je vous conseille les cartes réseau &amp;quot;100% COMPATIBLE NE2000 PCI&amp;quot; ou &amp;quot;ISA NE2000&amp;quot; si vous ne pouvez pas prendre de PCI. Dans le cas de carte ISA je vous conseille les PnP (facile à configurer) alors que les non PnP passent souvent par un programme de configuration sous DOS, si votre machine est 100% linux sans partition DOS vous allez être embêté !&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Si vous utilisez xxxBSD en plus de Linux, sachez que le driver de BSD pour les cartes NE2000 est pourri : si vous avez besoin de mettre plusieurs interfaces dans la même machine, n&#039;utilisez pas de carte compatible NE2000, sinon chaque paquet va mettre dans les 1 seconde a passer !!! (si vous ne me croyez pas, demandez à [http://www.bruhat.net BooK] ce qu&#039;il en pense...)&lt;br /&gt;
&lt;br /&gt;
Pour les cartes plus exotiques, regardez le Hardware-HOWTO et/ou demandez dans des listes de diffusion ou dans les news si quelqu&#039;un a déjà réussi à faire marcher cette carte sous Linux.&lt;br /&gt;
&lt;br /&gt;
=== Paramétrage de la carte. ===&lt;br /&gt;
&lt;br /&gt;
Bon, on va étudier les différents cas:&lt;br /&gt;
&lt;br /&gt;
* Carte PCI : normalement vous n&#039;avez rien à faire, juste pour test un &amp;quot;&amp;lt;tt&amp;gt;modprobe module&amp;lt;/tt&amp;gt;&amp;quot; ou module est le nom du module pour votre carte (&amp;lt;tt&amp;gt;modprobe ne2k-pci&amp;lt;/tt&amp;gt; pour les NE2000 PCI) et ça devrait passer sans le moindre problème ! (si ça ne passe pas, vérifiez que vous avez le support PCI dans votre kernel, voir [[Kernel-kernel|kernel]], et que le module de votre carte est bien compilé, voir rubrique [[Kernel-modules|module]] et [[Kernel-kernel|kernel]]).&lt;br /&gt;
* Carte ISA PnP : après avoir mis la prise en charge du PnP dans votre machine ([[Hardware-hard plus-pnp|rubrique PnP]]) il suffit de mettre dans &amp;lt;tt&amp;gt;/etc/isapnp.conf&amp;lt;/tt&amp;gt; les ressources de votre carte réseau (attention à ne pas écraser les ressources d&#039;une autre carte) en faisant un &amp;lt;tt&amp;gt;pnpdump &amp;gt;/etc/isapnp.conf&amp;lt;/tt&amp;gt;. Décommentez alors dans ce fichier les ressources (voir la [[Hardware-hard plus-pnp|rubrique PnP]] !). Le reste de la configuration est identique à celle des cartes PCI : faites un test en chargeant le module ad-hoc (c&#039;est à dire : &amp;lt;tt&amp;gt;modprobe ne&amp;lt;/tt&amp;gt;) .&lt;br /&gt;
* Carte ISA non PnP : aïe ! (Serge exagère... ;) le plus dur! Soit vous avez de la chance et il suffit de configurer votre carte via des cavaliers (jumpers) et puis de tester en chargeant le module en indiquant les ressources en option du module ([[Kernel-modules|module]]). Soit vous avez pas de chance, il faut passer sous DOS (par exemple avec une disquette de boot FreeDOS), utiliser le programme de configuration fourni avec la carte, affecter les ressources de la carte (une seule fois heureusement - quand vous avez fait attention à ne pas entrer en conflit avec d&#039;autres cartes...) et lors du chargement du module passez, là aussi, les options (genre : &amp;lt;tt&amp;gt;append=&amp;quot;macarte=iobase,irq,etc...&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Ça ne marche pas !&amp;lt;/u&amp;gt;&#039;&#039; Bon pas de panique ! Vérifiez que les ressources de votre carte n&#039;écrase pas celle d&#039;une autre (typique si lors du chargement du module vous obtenez &amp;quot;device or ressource busy&amp;quot; , on vérifie ça dans &amp;lt;tt&amp;gt;/proc/ioports&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/proc/interrupts&amp;lt;/tt&amp;gt;. Vérifiez que l&#039;adresse mémoire (ioport) et les interruptions (irq) ne sont pas déjà occupées par une autre carte. Vérifiez aussi à l&#039;aide de la notice de la carte que vous n&#039;essayez pas d&#039;attribuer une ressource que cette carte ne peut pas prendre (normalement la plage d&#039;irq et de mémoire valide est indiquée dans la notice).  Vérifiez, suivant votre cas, que le PnP est bien validé dans le kernel, la prise en charge PCI, et que quelqu&#039;un a déjà réussi à faire marcher cette &amp;amp;*#! de carte réseau.&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte de la carte par le kernel. ===&lt;br /&gt;
&lt;br /&gt;
Bon le module se charge, ok, il reste juste à rajouter dans &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; les options pour le chargement automatique du module quand le kernel en a besoin, ainsi qu&#039;un alias (lien) pour le kernel qui indique à celui-ci que ce module gère une carte réseau par :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alias eth&amp;lt;X&amp;gt; &amp;lt;nom_module&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Avec:&lt;br /&gt;
* &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; : 0 pour la première carte réseau, 1 pour la seconde etc. (si vous n&#039;avez qu&#039;une seule carte réseau sur cette machine, alors X=0, soit &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt;, est votre seule possibilité)&lt;br /&gt;
* &amp;lt;tt&amp;gt;nom_module&amp;lt;/tt&amp;gt; : le nom du module (driver) de la carte (&amp;lt;tt&amp;gt;ne2k-pci&amp;lt;/tt&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Pour savoir si des options sont nécessaires (cas des cartes NE 2000 ISA) voir la rubrique modules.&lt;br /&gt;
&lt;br /&gt;
== Configuration réseau de la carte ==&lt;br /&gt;
&lt;br /&gt;
Bon la carte est installée, le module se charge sans erreur. Maintenant il va falloir lui affecter une adresse IP, etc... Pour ceux qui savent ce qu&#039;est une adresse IP, un masque de sous réseau, une passerelle par défaut, etc. hop passez au [[Reseau-cxion_locale-lan#De_la_th.C3.A9orie_.C3.A0_la_pratique:_Configuration_statique_.28sans_serveur_DHCP.29.|paragraphe suivant]], pour les autres : lisez la suite (autrement votre réseau ne marchera pas c&#039;est sûr ! (La lecture d&#039;un bon livre sur TCP/IP est certainement utile si vous comptez installer un réseau de plusieurs milliers de machines ;)&lt;br /&gt;
&lt;br /&gt;
=== Le protocole TCP/IP ===&lt;br /&gt;
&lt;br /&gt;
Bon je ne vais pas détailler à fond le protocole TCP/IP mais juste les bases nécessaires pour comprendre comment on configure un réseau TCP/IP.&lt;br /&gt;
&lt;br /&gt;
        &#039;&#039;&#039;&amp;lt;u&amp;gt;Adresse, classe d&#039;adresse et masque réseau&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bon vous devez sûrement vous demander comment deux machines entre elles arrivent à communiquer. Et bien, tout simplement avec une adresse. C&#039;est comme pour le courrier-escargot (merci la francophonie), quand quelqu&#039;un veut vous envoyer un courrier il envoie une lettre et le facteur vous trouve grâce à l&#039;adresse que vous avez pris soin d&#039;écrire sur celle-ci. Bon et bien pour comprendre ce qui suit vous gardez ça en tête, en remplaçant &#039;&#039;courrier&#039;&#039; par &#039;&#039;trame réseau&#039;&#039;, et &#039;&#039;boîte à lettres&#039;&#039; par &#039;&#039;carte réseau&#039;&#039;. Si notre analogie n&#039;est pas trop farfelue (elle ne l&#039;est pas ;) chaque carte doit avoir une adresse réseau (i.e. adresse IP) , mais comme pour les grandes villes où il y a beaucoup de maisons, on découpe souvent un réseau en plusieurs sous-réseaux (le meilleur exemple est Internet lui-même qui est constitué de divers - et nombreux - réseaux plus locaux), pour permettre de les reconnaître facilement, on leur donne un &amp;quot;bout d&#039;adresse&amp;quot; en commun. Puis, comme on classe les maisons par rues et numéros, on classe les réseaux par adresse de réseau (le &amp;quot;bout d&#039;adresse&amp;quot; en commun) et adresse de carte (adresse complète comprenant l&#039;adresse de réseau ainsi qu&#039;une partie spécifique à la carte). Comment cela s&#039;exprime-t-il ? Par une adresse qui comporte une partie &amp;quot;réseau&amp;quot; et une partie &amp;quot;hôte&amp;quot; (la partie spécifique à la carte) tout cela sur 4 octets (si vous savez pas ce qu&#039;est un octet, ce n&#039;est pas grave, dites vous que c&#039;est un nombre compris entre &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;255&amp;lt;/tt&amp;gt;). On représente alors l&#039;adresse complète comme ceci :&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;tt&amp;gt;W.X.Y.Z&amp;lt;/tt&amp;gt; (où chaque lettre peut prendre une valeur entre &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;255&amp;lt;/tt&amp;gt; donc)&lt;br /&gt;
&lt;br /&gt;
Bon d&#039;accord, j&#039;ai une adresse mais comment je reconnais le réseau et l&#039;hôte? Et bien, on a coupé en classe de réseau toutes les adresses possibles suivant les valeurs de W. Je vous donne ce découpage, puis je l&#039;explique:&lt;br /&gt;
&lt;br /&gt;
Classe A: adresse comprise entre &amp;lt;tt&amp;gt;1.0.0.0&amp;lt;/tt&amp;gt; à &amp;lt;tt&amp;gt;126.255.255.255&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Classe B: adresse comprise entre &amp;lt;tt&amp;gt;128.0.0.0&amp;lt;/tt&amp;gt; à &amp;lt;tt&amp;gt;191.255.255.255&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Classe C: adresse comprise entre &amp;lt;tt&amp;gt;192.0.0.0&amp;lt;/tt&amp;gt; à &amp;lt;tt&amp;gt;223.255.255.255&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il existe la classe D aussi mais qui n&#039;est pas utilisable, elle sert en fait au protocole lui-même dans son fonctionnement pour &amp;quot;atteindre&amp;quot; plusieurs machines à la fois (on appelle ça le &#039;&#039;multicast&#039;&#039;), on ne va pas détailler ça ici &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;:-)&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;. Si vous avez bien suivi, vous avez pu constater que les adresses 0.x.x.x (utilisées pour l&#039;adresse de route par défaut, c&#039;est à dire le chemin à prendre pour aller sur un autre réseau), et 127.x.x.x (adresse interne de chaque machine pour les applications) ne sont pas utilisables non plus ...bref même si vous ne comprenez pas ce que je dis, rappelez vous simplement qu&#039;elles sont tout simplement INUTILISABLES. Utilisez les adresses dans les plages ci-dessus (i.e.: correspondant aux classes A, B et C).&lt;br /&gt;
&lt;br /&gt;
Chaque classe d&#039;adresse a aussi son masque de sous réseau : &amp;lt;br /&amp;gt;Classe A: &amp;lt;tt&amp;gt;255.0.0.0&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Classe B: &amp;lt;tt&amp;gt;255.255.0.0&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Classe C: &amp;lt;tt&amp;gt;255.255.255.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bon maintenant j&#039;explique. Quand vous voulez faire un réseau local IP, vous choisissez d&#039;abord une classe. Bon laquelle choisir ? Ça va dépendre du nombres de machines que vous comptez connecter à votre réseau.&lt;br /&gt;
&lt;br /&gt;
Pour comprendre, on ne va s&#039;occuper que des réseaux de classe C (i.e.: ceux ne pouvant contenir que peu de machines), mais tout ce qui va suivre s&#039;applique très simplement aux autres classes. Le masque réseau de la classe C est : &amp;lt;tt&amp;gt;255.255.255.0&amp;lt;/tt&amp;gt;. Cela veut dire que la partie  &amp;lt;tt&amp;gt;W.X.Y&amp;lt;/tt&amp;gt; de l&#039;adresse &amp;lt;tt&amp;gt;W.X.Y.Z&amp;lt;/tt&amp;gt; sert à adresser (contacter) le réseau (i.e. toutes les machines du sous-réseau auront le même &amp;lt;tt&amp;gt;W.X.Y&amp;lt;/tt&amp;gt;) et le &amp;lt;tt&amp;gt;Z&amp;lt;/tt&amp;gt; sert à adresser les machines. La partie du masque contenant les &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; nous donne la partie de l&#039;adresse qui correspond à la machine. Donc cela nous donne :&lt;br /&gt;
&lt;br /&gt;
Si le masque est &amp;lt;tt&amp;gt;255.225.255.0&amp;lt;/tt&amp;gt; et que l&#039;adresse d&#039;une carte réseau est &amp;lt;tt&amp;gt;W.X.Y.Z&amp;lt;/tt&amp;gt; alors &amp;lt;tt&amp;gt;W.X.Y.0&amp;lt;/tt&amp;gt; est l&#039;adresse du réseau. Ce réseau peut être constitué de toutes les cartes de &amp;lt;tt&amp;gt;W.X.Y.1&amp;lt;/tt&amp;gt; à &amp;lt;tt&amp;gt;W.X.Y.254&amp;lt;/tt&amp;gt; (pas &amp;lt;tt&amp;gt;W.X.Y.255&amp;lt;/tt&amp;gt; car là aussi c&#039;est une adresse spéciale).&lt;br /&gt;
&lt;br /&gt;
Quand on veut désigner l&#039;adresse du réseau, on remplace les identifiants machines par des &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour la classe C, chaque réseau a donc 254 (de 1 à 254 pour Z) machines possibles. De même pour la classe B, on a un peu plus de 65 000 machines possibles. Pour la classe A, on dispose de plus de 16 millions de machines possibles.&lt;br /&gt;
&lt;br /&gt;
Pour configurer un réseau local, il vous faut de choisir l&#039;adresse réseau que vous voulez. Bon on prend un exemple, je choisis &amp;lt;tt&amp;gt;192.1.3.0&amp;lt;/tt&amp;gt; comme adresse de réseau donc classe C. Je peux alors numéroter mes machines de &amp;lt;tt&amp;gt;192.1.3.1&amp;lt;/tt&amp;gt; à &amp;lt;tt&amp;gt;192.1.3.254&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Bon vous allez me dire : On peux choisir n&#039;importe quelle adresse ? Je ne vais jamais avoir besoin de classe A : je n&#039;ai pas 16 millions de machines ? Etc... En fait ces classes ont été inventées pour l&#039;internet, on a attribué alors les classes A aux très grandes organisations comme l&#039;armée américaine (ça a été fait pendant la guerre froide hein) pour leur permettre de relier toutes leurs machines. La B était pour les grand organismes (université, industrie, etc...) et les classes C pour les petits groupes. Comme vous vous en doutez, ces adresses sont attribuées par un organisme international qui régit tout ça pour que deux adresses ne soit pas dupliquées sur internet. &amp;lt;br /&amp;gt;Donc en résumé, si vous restez en local sans aucune sortie vers l&#039;extérieur (même pas un modem vers le net), vous utilisez l&#039;adresse &#039;&#039;&#039;que vous voulez&#039;&#039;&#039; en respectant son masque et la numérotation réseau/machine.&lt;br /&gt;
&lt;br /&gt;
Comme on a vu que les adresses sont attribuées sur le net, que se passe-t-il si vous utilisez une adresse déjà utilisée sur le net ? Et bien, dans un premier temps,  toutes les machines de votre réseau qui vont vouloir aller sur les sites internet qui possèdent la même adresse de réseau IP que vous ne pourront pas y accéder, car pour elles c&#039;est l&#039;adresse de chez vous donc elles ne vont pas chercher l&#039;adresse sur le Net. Dans un second temps, vous allez être en relation avec d&#039;autres machines qui vont forcément confondre votre réseau avec celui qui est enregistré sur internet. Mais alors, quelle adresse je choisis afin de ne pas entrer en conflit avec d&#039;autres machines sur Internet ? Et bien l&#039;organisme international a réservé des adresses qui ne seront JAMAIS utilisées (tous les routeurs du monde les ignorent !) sur le net pour que vous puissiez les utiliser en local ! Elle est pas belle la vie ! Ces adresses sont :&lt;br /&gt;
&lt;br /&gt;
classe A: &amp;lt;tt&amp;gt;10.0.0.0&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;classe B: &amp;lt;tt&amp;gt;172.16.0.0&amp;lt;/tt&amp;gt; à &amp;lt;tt&amp;gt;172.31.0.0&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;classe C: &amp;lt;tt&amp;gt;192.168.0.0&amp;lt;/tt&amp;gt; à &amp;lt;tt&amp;gt;192.168.255.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme aucun site du net n&#039;a cette adresse, si vous l&#039;utilisez chez vous, vous ne risquez pas de ne pas pouvoir atteindre un site parce qu&#039;il possède cette adresse vu qu&#039;il n&#039;en existe pas ! Donc pas de conflit entre votre réseau et le réseau des réseaux.&lt;br /&gt;
&lt;br /&gt;
Donc, si  vous avez un modem ou modem câble ou ADSL (voir [[Reseau-cxion_net-adsl| rubrique ADSL]]) et si vous comptez surfer sur la toile un jour : UTILISEZ une des adresses réseau ci-dessus !!&lt;br /&gt;
&lt;br /&gt;
Vous voulez que l&#039;une de vos machines soit sur le net avec un beau site etc... : il vous faut alors acheter une adresse IP à votre fournisseur d&#039;accès, soit pour un réseau complet et là vous n&#039;avez pas le choix : on vous impose l&#039;adresse, soit juste pour une machine, là votre machine connectée au NET a l&#039;adresse que votre fournisseur vous impose et votre réseau local une des adresses réservées vue plus haut. En plus il va falloir faire du &amp;quot;masquerading&amp;quot; pour pouvoir utiliser l&#039;accès au NET depuis toutes les machines, pour cela voir la rubrique &amp;quot;masquerade&amp;quot; ou le [http://www.freenix.org/unix/linux/HOWTO-vo/IP-Masquerade-HOWTO.html HOWTO] : vu d&#039;internet, toutes les machines de votre réseau local ont l&#039;adresse de la seule machine connectée au net (en fait, vu d&#039;internet on ne voit que cette machine) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;  _ ---- _                  +---&amp;gt; PC2&lt;br /&gt;
  (        )                 |&lt;br /&gt;
 ( INTERNET )&amp;lt;-----&amp;gt; PC1 &amp;lt;---+---&amp;gt; PC3&lt;br /&gt;
  (_      _)                 |&lt;br /&gt;
     ----                    +---&amp;gt; PC4&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En fait, vous pouvez aussi utilisez le système précédant pour créer des sous-réseaux à l&#039;intérieur d&#039;un sous-réseau de classe A, B ou C. Bon je ne vais pas expliquer ça ici non plus, reportez vous au site [http://www.linuxenrezo.org www.linuxenrezo.org] pour plus de détail, de toute façon si vous devez faire de telles choses c&#039;est que vous savez ce que vous faites.&lt;br /&gt;
&lt;br /&gt;
Bon maintenant on va apprendre d&#039;autres termes utile à une configuration réseau TCP/IP :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Passerelle par défaut&#039;&#039; ou GATEWAY: c&#039;est l&#039;adresse de la machine qui est reliée aux autres réseaux (par exemple la machine qui possède le modem pour aller sur le net) (dans le dessin ci-dessus, &amp;lt;tt&amp;gt;PC1&amp;lt;/tt&amp;gt; est la passerelle de votre réseau local)&lt;br /&gt;
* &#039;&#039;Route par défaut&#039;&#039; (default): c&#039;est l&#039;adresse &amp;lt;tt&amp;gt;0.0.0.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &#039;&#039;Localhost&#039;&#039;&amp;lt;nowiki&amp;gt;: adresse IP &amp;lt;/nowiki&amp;gt;&amp;lt;tt&amp;gt;127.0.0.1&amp;lt;/tt&amp;gt; (cela sert aux applications qui veulent accéder à la couche TCP/IP de la machine où elle tourne sans passer par le réseau, si vous ne comprenez pas c&#039;est pas grave)&lt;br /&gt;
&lt;br /&gt;
Avec ça, ça devrait aller :)&lt;br /&gt;
&lt;br /&gt;
=== De la théorie à la pratique: Configuration statique (sans serveur DHCP). ===&lt;br /&gt;
&lt;br /&gt;
Dans cette partie je traite de la configuration d&#039;une carte réseau en statique, c&#039;est à dire à la main. Il existe un autre moyen: par client DHCP, c&#039;est à dire qu&#039;un serveur va s&#039;occuper d&#039;attribuer adresse, masque et gateway (passerelle) automatiquement à votre station, c&#039;est ce que fait votre provider à chaque connexion pour la configuration IP de votre modem ou de votre carte pour des connexions modem câble ou ADSL. Pour l&#039;instant voyons la manière &amp;quot;à la main&amp;quot;. Dans cette partie on ne s&#039;occupe que du cas où l&#039;on n&#039;a qu&#039;une seule carte dans la station.&lt;br /&gt;
&lt;br /&gt;
La carte est configurée au niveau HARD (module qui se charge bien), on a choisi/obtenu une adresse IP de réseau, on a décidé comment on adresse chaque machine : on peut réellement attribuer les adresses aux machines. Des utilitaires comme &amp;quot;&amp;lt;tt&amp;gt;netcfg&amp;lt;/tt&amp;gt;&amp;quot;, &amp;quot;&amp;lt;tt&amp;gt;netconfig&amp;lt;/tt&amp;gt;&amp;quot; ou &amp;quot;&amp;lt;tt&amp;gt;linuxconf&amp;lt;/tt&amp;gt;&amp;quot; permettent de configurer très facilement une carte réseau (voir [http://www.linuxenrezo.org www.linuxenrezo.org]) mais bon je trouve plus ludique/instructif de vous l&#039;apprendre à la main, comme ça on sait ce que l&#039;on fait, de plus des distribution comme la Slackware ne possèdent pas ces outils par défaut.&lt;br /&gt;
&lt;br /&gt;
Supposons, que l&#039;on souhaite attribuer l&#039;adresse X.X.X.X à la carte eth0 sur le réseau dont le masque de sous réseau du LAN est Y.Y.Y.Y (c&#039;est pareil pour les autres cartes...). Rien de plus simple, on tape (en root) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# ifconfig eth0 X.X.X.X netmask Y.Y.Y.Y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
et votre réseau est configuré ! (Il faut bien le reconnaître : c&#039;est pas la mort). Bon pour ne pas avoir à configurer ça à chaque reboot, ajoutez cette commande dans un script de démarrage comme par exemple &amp;lt;tt&amp;gt;/etc/rc.d/rc.local&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;Cependant, la plupart des distributions ont des utilitaires pour configurer ça et lancer un script automatiquement, lancez par exemple &amp;lt;tt&amp;gt;netconfig&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;netcfg&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;linuxconf&amp;lt;/tt&amp;gt;, vous avez bien au moins l&#039;un de ces utilitaires (sinon : télécharger &amp;lt;tt&amp;gt;linuxconf&amp;lt;/tt&amp;gt; sur [http://rufus.w3.org rufus] par ex.). &amp;lt;br /&amp;gt;Pour la Slackware, placez ces commandes dans le &amp;lt;tt&amp;gt;/etc/rc.d/inet1&amp;lt;/tt&amp;gt;. Éditez-le, cherchez les lignes suivantes et renseignez-les avec vos paramètres :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;IPADDR=&amp;quot;192.168.1.1&amp;quot;     &amp;lt;/tt&amp;gt;(remplacez par l&#039;adresse de votre machine) &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NETMASK=&amp;quot;255.255.255.0&amp;quot;  &amp;lt;/tt&amp;gt;(mettez votre masque de réseau, ici classe C) &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NETWORK=&amp;quot;192.168.1.0&amp;quot;    &amp;lt;/tt&amp;gt;(mettez votre adresse de réseau) &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;BRODCAST=&amp;quot;192.168.1.255&amp;quot; &amp;lt;/tt&amp;gt;(votre adresse de broadcast, c&#039;est-à-dire votre adresse réseau avec les identifiants machines à 255)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Vérifiez que plus bas dans ce fichier il y a bien &#039;&amp;lt;tt&amp;gt;DHCP=&amp;quot;no&amp;quot;&amp;lt;/tt&amp;gt;&#039;. Le reste du fichier est OK. Toujours pour la Slackware, pour charger votre module automatiquement, éditez le fichier &amp;lt;tt&amp;gt;/etc/rc.d/rc.modules&amp;lt;/tt&amp;gt;, decommentez la ligne (c&#039;est à dire enlever le # en début de ligne) qui correspond au module de votre carte réseau, par exemple pour une pci ne2000:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/modprobe ne2k-pci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration par client DHCP ===&lt;br /&gt;
&lt;br /&gt;
Bon maintenant on va voir comment configurer sa carte automatiquement par client DHCP, c&#039;est à dire que c&#039;est un serveur DHCP (soit sur votre réseau local d&#039;entreprise, soit votre provider) qui va vous attribuer un adresse IP, un masque, une gateway (et même plus si affinités ;). Bon pour cela il faut quand même avoir configuré le module de la carte, le &amp;quot;driver&amp;quot; comme vu précédemment.&lt;br /&gt;
&lt;br /&gt;
Maintenant il reste à dire au démarrage de Linux que cette carte va être configurée par un serveur DHCP, pour cela il faut un client DHCP, je traite ici de &amp;lt;tt&amp;gt;dhcpd&amp;lt;/tt&amp;gt; (en fait il fait serveur et client à la fois). Il existe aussi &amp;lt;tt&amp;gt;pump&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;dhclient&amp;lt;/tt&amp;gt; mais bon pour des goûts personnels que beaucoup partagent, je traite ici de &amp;lt;tt&amp;gt;dhcpd&amp;lt;/tt&amp;gt;. Récupérez le donc (allez sur [http://www.freshmeat.net freshmeat] par exemple ou [http://www.rpmfind.com rpmfind]). Pour les kernels 2.2.X prenez une version au moins égale à la 1.3.x.&lt;br /&gt;
&lt;br /&gt;
Il suffit alors de taper une ligne de commande du type :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dhcpd -d ethX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifier que votre carte a bien une adresse ip par :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devrez voir une ligne avec &amp;lt;tt&amp;gt;lo&amp;lt;/tt&amp;gt; et une autre avec &amp;lt;tt&amp;gt;ethX&amp;lt;/tt&amp;gt;. Vérifiez que &amp;lt;tt&amp;gt;ethX&amp;lt;/tt&amp;gt; n&#039;a pas pour adresse &amp;lt;tt&amp;gt;0.0.0.0&amp;lt;/tt&amp;gt;, cela voudrait dire que cela n&#039;a pas marché.&lt;br /&gt;
&lt;br /&gt;
Bon après on automatise ça en incluant cette commande dans un script de démarrage de la machine (&amp;lt;tt&amp;gt;/etc/rc.d/local&amp;lt;/tt&amp;gt;ou &amp;lt;tt&amp;gt;rc.local&amp;lt;/tt&amp;gt; etc...). Pour les RedHat et Mandrake, &amp;lt;tt&amp;gt;linuxconf&amp;lt;/tt&amp;gt; permet ça, pour la Slackware, éditer &amp;lt;tt&amp;gt;/etc/rc.d/rc.inet1d&amp;lt;/tt&amp;gt; et mettez l&#039;option yes pour DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;DHCP=&amp;quot;yes&amp;quot;&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;note&amp;lt;/u&amp;gt;:il semblerait que dhcpd soit maintenant scindé en deux :dhcpd pour le serveur et dhcpcd pour le client. Il faut alors remplacer la commande &amp;lt;code&amp;gt;dhcp -d eth0&amp;lt;/code&amp;gt; par &amp;lt;code&amp;gt;dhcpcd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Si vous avez des machines non linux sur votre réseau ==&lt;br /&gt;
&lt;br /&gt;
Il suffit de configurer les autres machines avec les mêmes règles de réseaux TCP/IP. Dans Win9x, ça se trouve dans le panneau de configuration, réseau, ajouter le protocole microsoft TCP/IP et réglez les valeurs comme il se doit.&lt;br /&gt;
&lt;br /&gt;
* Pour partager des ressources avec ce type de machines diaboliques ;) lisez les documentations [[Reseau-partfic-samba|SAMBA]] et [[Reseau-partfic-samba_nt_auth|Installation de samba avec une authentification sur un CPD NT4.0 ou 2000]]sur ce site,&lt;br /&gt;
* Pour accéder au net depuis une de ces machines, en partageant l&#039;accès (modem RTC, modem câble, etc.) avec la machine Linux, lisez le [http://www.freenix.org/unix/linux/HOWTO-vo/IP-Masquerade-HOWTO.html IP-Masquerade-HOWTO] (en anglais) ou le [http://www.freenix.org/unix/linux/HOWTO/mini/IP-Masquerade.html mini-IP-Masquerade-HOWTO] (en français).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Serge Tchesmeli le 02/04/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 02/04/2000, Serge Tchesmeli&lt;br /&gt;
{{LDL}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13907</id>
		<title>Discussion:Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13907"/>
		<updated>2006-10-28T13:48:14Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* Commentaire de: Ftiercel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Commentaires de : NomWikiFnx=&lt;br /&gt;
posté le 2005-07-05 00:11:17&lt;br /&gt;
&lt;br /&gt;
Selon $ man modules.conf,   le  fichier /etc/conf.modules est désormais remplacé par /etc/modules.conf&lt;br /&gt;
&lt;br /&gt;
=Commentaires de : Ftiercel=&lt;br /&gt;
posté le 2006-09-28&lt;br /&gt;
&lt;br /&gt;
C&#039;est vrai effectivement, sauf que ce nouveau fichier ne DOIT PAS être édité par l&#039;utilisateur puisqu&#039;il est généré automatiquement. Il y a néanmoins de nouvelles méthodes pour le paramètrer, mais je ne connais pas encore assez Debian pour les expliquer.&lt;br /&gt;
&lt;br /&gt;
= Commentaire de: Fleury ==&lt;br /&gt;
posté le 2006-10-01&lt;br /&gt;
&lt;br /&gt;
Le fait que le fichier ne doive pas être éditer sur Debian n&#039;est aucunement un standard, c&#039;est seulement parce que certains scripts (particuliers à Debian) génèrent ce fichier de façon automatique. Le standard reste tout de même de signaler le chargement manuel des modules dans le fichier /etc/modules.conf ou /etc/modules (sous Debian l&#039;utilisateur qui veut modifier le fichier /etc/modules.conf rajoutera ses modifications dans /etc/modules).&lt;br /&gt;
&lt;br /&gt;
= Commentaire de: Ftiercel =&lt;br /&gt;
posté le 2006-10-28&lt;br /&gt;
&lt;br /&gt;
Page wiki mise à jour en conséquence.&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13906</id>
		<title>Discussion:Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13906"/>
		<updated>2006-10-28T13:47:27Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Commentaires de : NomWikiFnx=&lt;br /&gt;
posté le 2005-07-05 00:11:17&lt;br /&gt;
&lt;br /&gt;
Selon $ man modules.conf,   le  fichier /etc/conf.modules est désormais remplacé par /etc/modules.conf&lt;br /&gt;
&lt;br /&gt;
=Commentaires de : Ftiercel=&lt;br /&gt;
posté le 2006-09-28&lt;br /&gt;
&lt;br /&gt;
C&#039;est vrai effectivement, sauf que ce nouveau fichier ne DOIT PAS être édité par l&#039;utilisateur puisqu&#039;il est généré automatiquement. Il y a néanmoins de nouvelles méthodes pour le paramètrer, mais je ne connais pas encore assez Debian pour les expliquer.&lt;br /&gt;
&lt;br /&gt;
= Commentaire de: Fleury ==&lt;br /&gt;
posté le 2006-10-01&lt;br /&gt;
&lt;br /&gt;
Le fait que le fichier ne doive pas être éditer sur Debian n&#039;est aucunement un standard, c&#039;est seulement parce que certains scripts (particuliers à Debian) génèrent ce fichier de façon automatique. Le standard reste tout de même de signaler le chargement manuel des modules dans le fichier /etc/modules.conf ou /etc/modules (sous Debian l&#039;utilisateur qui veut modifier le fichier /etc/modules.conf rajoutera ses modifications dans /etc/modules).&lt;br /&gt;
&lt;br /&gt;
= Commentaire de: Ftiercel ==&lt;br /&gt;
posté le 2006-10-28&lt;br /&gt;
&lt;br /&gt;
Page wiki mise à jour en conséquence.&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13905</id>
		<title>Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13905"/>
		<updated>2006-10-28T13:45:05Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* Comment faire pour les charger automatiquement ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Configurer votre noyau]]&lt;br /&gt;
= Les modules de Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les modules de Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Comment fonctionnent ces mystérieux modules ?&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Si vous ne savez pas ce que sont les modules, allez voir le glossaire !&lt;br /&gt;
&lt;br /&gt;
== A quoi ça sert ? ==&lt;br /&gt;
&lt;br /&gt;
; Bon, puisque vous avez pas été lire le glosssaire, voici la définition qui en est donnée :&lt;br /&gt;
: Les modules sont une façon qui a été trouvée pour rendre Linux (le noyau) plus modulaire (!) et plus léger. En effet, ce sont le plus souvent des drivers qui ont été &amp;quot;sortis&amp;quot; du noyau dans des fichiers séparés, et qui sont chargés en mémoire, soit automatiquement lorsqu&#039;on se sert du périphérique concerné, soit manuellement. Ils permettent de réduire la taille mémoire utilisée par le noyau lui-même. Le concept de modules permet aussi d&#039;ajouter des drivers de périphériques au système sans devoir recompiler le noyau.&lt;br /&gt;
&lt;br /&gt;
Bon, c&#039;est clair il me semble (normal, c&#039;est moi qui ai écrit ça ;). Les modules permettent aussi d&#039;ajouter des drivers distribués uniquement sous forme binaire ; on ne peut pas les recompiler, mais on peut s&#039;en servir (ce qui est assez intéressant finalement ;) Les modules ne sont pas que des drivers, d&#039;une façon générale, ça peut être tout morceau de code qu&#039;on a décidé d&#039;externaliser par rapport au noyau, comme bien sûr un driver, mais aussi un protocole de communication (par ex. &amp;lt;tt&amp;gt;ppp&amp;lt;/tt&amp;gt;) ou n&#039;importe quoi d&#039;autre.&lt;br /&gt;
&lt;br /&gt;
== Où se trouvent-ils ? ==&lt;br /&gt;
&lt;br /&gt;
Ils résident dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau&amp;lt;/tt&amp;gt;. exemple : &amp;lt;tt&amp;gt;/lib/modules/2.4.17&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ce répertoire contient les dossiers suivants qui permettent de séparer les modules selon leur type : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| &amp;lt;tt&amp;gt;block/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques de type bloc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;fs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| systèmes de fichier (FAT, ext2, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;misc/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;net/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers des cartes réseaux et protocoles&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;scsi/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques SCSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdrom/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers CDROM non IDE (anciens CD-ROMs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipv4/&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ipv6/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| protocole IP v4 et v6(protocole réseau)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;pcmcia/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| modules pour gérer les cartes PCMCIA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;video/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| gestion des cartes video en console, framebuffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce répertoire peut contenir d&#039;autres dossiers, plus un fichier nommé &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande &amp;lt;code&amp;gt;depmod -a&amp;lt;/code&amp;gt; placée dans les scripts de démarrage.&lt;br /&gt;
&lt;br /&gt;
== Comment ajouter des modules, les recompiler ? ==&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés avec le noyau ===&lt;br /&gt;
&lt;br /&gt;
Voir la rubrique [[Kernel-kernel|noyau]]. Pour ajouter un module, il faut éditer la configuration du noyau, cocher l&#039;option &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; voulue dans la config du noyau, puis enregistrer la configuration noyau, faire : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;# make dep ; make modules ; make modules_install&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
(Si vous modifiez également la configuration du noyau lui-même, par exemple en supprimant ou ajoutant des options qui sont incluses dans le noyau, vous devez aussi recompiler/réinstaller le noyau comme indiqué dans la rubrique [[Kernel-kernel|noyau]])&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés en dehors du noyau ===&lt;br /&gt;
&lt;br /&gt;
Parfois, des modules peuvent être trouvés en dehors de l&#039;arborescence des sources du noyau. Par exemple, vous pouvez télécharger un driver pour certains winmodems (hé oui ça arrive !!!) sur [http://www.o2.net/~gromitkc/winmodem.html cette page]. &amp;lt;br /&amp;gt;Certains de ces modules sont livrés sous forme binaire, on peut alors s&#039;en servir tel quels (&amp;lt;code&amp;gt;insmod -f ./le_module&amp;lt;/code&amp;gt;). D&#039;autres sont livrés sous forme source sous license GPL ou non ; il faut d&#039;abord les compiler (lisez la doc fournie avec ; cela nécessite en général d&#039;avoir installé les sources du noyau).&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte des nouveaux modules ===&lt;br /&gt;
&lt;br /&gt;
Pour que les modules nouvellement installés soient pris en compte, si ce sont des modules &amp;quot;hors noyau&amp;quot;, il est bon de les copier dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau/misc&amp;lt;/tt&amp;gt; (pour les modules &amp;quot;noyau&amp;quot;, la commande &amp;lt;code&amp;gt;make modules_install&amp;lt;/code&amp;gt; fait ça) &amp;lt;br /&amp;gt;Il faut aussi faire un : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;# depmod -a&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Cette commande remet à jour le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, en fonction du ou des nouveaux modules. &amp;lt;br /&amp;gt;Ainsi, vous pourrez charger le module par &amp;lt;code&amp;gt;modprobe le_module&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans la page man de &amp;lt;tt&amp;gt;depmod&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comment les manipuler ? ==&lt;br /&gt;
&lt;br /&gt;
Avec les programmes &amp;lt;code&amp;gt;lsmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;insmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rmmod&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; qui se situent dans &amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;lsmod&amp;lt;/code&amp;gt; : voir quels modules sont chargés à l&#039;heure actuelle. Cette commande affiche la liste des modules chargés, les dépendances entre les modules chargés, et dit si les modules sont utilisés ou non.&lt;br /&gt;
* &amp;lt;code&amp;gt;insmod module&amp;lt;/code&amp;gt; : charger un module en mémoire. Si &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; est spécifié sans extension (en général &amp;lt;code&amp;gt;.o&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;insmod&amp;lt;/code&amp;gt; cherchera le module dans des répertoires par défaut, en général &amp;lt;tt&amp;gt;/lib/module/version_du_noyau&amp;lt;/tt&amp;gt;. Sinon, il faut donner le chemin où trouver le module. (Par exemple : &amp;lt;code&amp;gt;insmod -f ./module.o&amp;lt;/code&amp;gt; ; le &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt; permet de forcer le chargement d&#039;un module qui a été compilé avec une version du noyau différente de celle du noyau qui tourne actuellement.)&lt;br /&gt;
* &amp;lt;code&amp;gt;rmmod module&amp;lt;/code&amp;gt; : décharger un module, où &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; est le nom donné par &amp;lt;code&amp;gt;lsmod&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; : exécuter les commandes &amp;lt;code&amp;gt;insmod&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;rmmod&amp;lt;/code&amp;gt; à votre place. &amp;lt;code&amp;gt;modprobe le_module&amp;lt;/code&amp;gt; charge &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; en mémoire ainsi que tous les modules dont il dépend (en lisant le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;). &amp;lt;code&amp;gt;modprobe -r le_module&amp;lt;/code&amp;gt; enleve &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; de la mémoire, ainsi que tous les modules dont il dépend, sauf s&#039;ils sont utilisés par un autre module bien sûr.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans les pages man de &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Comment faire pour les charger automatiquement ? ==&lt;br /&gt;
&lt;br /&gt;
=== Chargeur dynamique pour les noyaux 2.4 et antérieurs ===&lt;br /&gt;
&lt;br /&gt;
Tout ça c&#039;est bien beau, mais si à chaque fois avant de regarder la télé, il faut faire &amp;lt;code&amp;gt;modprobe bttv&amp;lt;/code&amp;gt;, ou si à chaque fois qu&#039;on veut lancer Xracer il faut faire &amp;lt;code&amp;gt;modprobe 3dfx&amp;lt;/code&amp;gt;, ça va vite devenir fastidieux.&lt;br /&gt;
&lt;br /&gt;
Ce qu&#039;on veut, c&#039;est que le bon module se charge lorsqu&#039;on utilise le périphérique (&amp;lt;tt&amp;gt;/dev/le_periph&amp;lt;/tt&amp;gt;) correspondant. C&#039;est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt;. Cela se fait via son fichier de configuration &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; (pour les versions de modutils antérieures à 2.3.5-1, ce fichier s&#039;appelle &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un module soit chargé automatiquement, faire : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;# ls -l /dev/le_periph&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;qui affiche une ligne ressemblant à : &amp;lt;br/&amp;gt;&amp;lt;tt&amp;gt;crw-------   1 user     group &#039;&#039;&#039;&amp;lt;u&amp;gt;144&amp;lt;/u&amp;gt;&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;12&amp;lt;/u&amp;gt;&#039;&#039; May 25  2000 /dev/le_periph&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Pour chaque ligne est affiché :&lt;br /&gt;
* Un numéro majeur (ici &#039;&#039;&#039;144&#039;&#039;&#039;) : il identifie le pilote du périphérique,&lt;br /&gt;
* Un numéro mineur (ici &#039;&#039;&#039;12&#039;&#039;&#039;) : il sert à différencier les périphériques utilisant un même pilote.&lt;br /&gt;
&lt;br /&gt;
Editez le fichier &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; dans votre éditeur de texte préféré et ajoutez une ligne : &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;alias char-major-144 le_module&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;en remplaçant bien sûr &amp;lt;code&amp;gt;144&amp;lt;/code&amp;gt; par votre numéro, et &amp;lt;code&amp;gt;le_module&amp;lt;/code&amp;gt; par votre module. &amp;lt;br/&amp;gt;Par exemple, pour charger le module gérant la carte 3dfx, j&#039;ai dans mon &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt; la ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;alias char-major-107 3dfx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Il existe des aliases prédéfinis pour remplacer &amp;lt;tt&amp;gt;char-major-xxx&amp;lt;/tt&amp;gt; pour les périphériques courants : &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt; pour la première carte ethernet (&amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; pour la suivante, etc.), &amp;lt;tt&amp;gt;parport_lowlevel&amp;lt;/tt&amp;gt; pour le port parallèle, &amp;lt;tt&amp;gt;sound&amp;lt;/tt&amp;gt; pour la carte son, &amp;lt;tt&amp;gt;midi&amp;lt;/tt&amp;gt; pour la partie midi de la carte son, etc.&lt;br /&gt;
&lt;br /&gt;
Si votre module a besoin d&#039;options, par exemple pour connaître une adresse ou une interruption, vous pouvez aussi ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;options le_module irq=5 dma=0 dma2=1 mpu_io=0x388 io=0x370&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;Chaque module a ses propres options, reportez-vous à la documentation de votre module afin de les connaître.&lt;br /&gt;
&lt;br /&gt;
Enfin, si vous voulez lancer une commande avant ou après que le module soit chargé en mémoire, vous pouvez ajouter une ligne du type : &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;pre-install le_module la_commande&amp;lt;/code&amp;gt;, ou : &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;post-install le_module la_commande&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans la page man de &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Chargeur dynamique de modules sur Debian ====&lt;br /&gt;
&lt;br /&gt;
Debian juge que l&#039;édition du fichier &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt; par l&#039;utilisateur est trop risquée. A la place, elle propose d&#039;éditer des fichiers dans le répertoire &amp;lt;tt&amp;gt;/etc/modutils/&amp;lt;/tt&amp;gt;. Ces fichiers ont la même syntaxe que &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt;. Il existe trois fichiers par défault :&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/modutils/actions&amp;lt;/tt&amp;gt; : regroupe toutes les actions sur les modules,&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/modutils/aliases&amp;lt;/tt&amp;gt; : regroupe tous les alias,&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/modutils/paths&amp;lt;/tt&amp;gt; : regroupe tous les chemins.&lt;br /&gt;
Une fois les fichiers mis à jour, la commande &amp;lt;code&amp;gt;update-modules&amp;lt;/code&amp;gt; lit les fichiers présents dans &amp;lt;tt&amp;gt;/etc/modutils/&amp;lt;/tt&amp;gt; et regénère &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans la page man de &amp;lt;tt&amp;gt;update-modules&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Chargeur dynamique pour les noyaux 2.6 et à venir ===&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; ne sert plus et le fichier &amp;lt;tt&amp;gt;/etc/modprobe.conf&amp;lt;/tt&amp;gt; est utilisé à la place. Sa syntaxe est une simplification de la syntaxe de &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt;. Par exemple, à la place de&lt;br /&gt;
&amp;lt;code&amp;gt;pre-install le_module une_commande_1&lt;br /&gt;
post-install le_module une_commande_2&amp;lt;/code&amp;gt;&lt;br /&gt;
on aura&lt;br /&gt;
&amp;lt;code&amp;gt;install le_module une_commande_1; modprobe --ignore-install le_module;une_commande_2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans la page man de &amp;lt;tt&amp;gt;modprobe.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Chargeur statique de modules ===&lt;br /&gt;
&lt;br /&gt;
Il est possible de charger un module au démarrage de Linux en ajoutant une ligne avec le nom du module dans le fichier &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;. Cependant, on perd l&#039;intérêt de la modularité puisqu&#039;il est chargé même s&#039;il n&#039;est pas utilisé.&lt;br /&gt;
&lt;br /&gt;
Voilà, c&#039;est tout, maintenant lorsqu&#039;un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: on peut faire des tas de choses &amp;quot;intéressantes&amp;quot; avec les modules, allez voir [http://www.safenetworks.com/Linux/modules.html cette page] par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n&#039;utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à [http://www.bruhat.net BooK] pour l&#039;info).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa et a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot le 25/05/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 25/05/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13885</id>
		<title>Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13885"/>
		<updated>2006-10-26T06:04:42Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : Complément concernant le chargement de module sur Debian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Configurer votre noyau]]&lt;br /&gt;
= Les modules de Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les modules de Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Comment fonctionnent ces mystérieux modules ?&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Si vous ne savez pas ce que sont les modules, allez voir le glossaire !&lt;br /&gt;
&lt;br /&gt;
== A quoi ça sert ? ==&lt;br /&gt;
&lt;br /&gt;
; Bon, puisque vous avez pas été lire le glosssaire, voici la définition qui en est donnée :&lt;br /&gt;
: Les modules sont une façon qui a été trouvée pour rendre Linux (le noyau) plus modulaire (!) et plus léger. En effet, ce sont le plus souvent des drivers qui ont été &amp;quot;sortis&amp;quot; du noyau dans des fichiers séparés, et qui sont chargés en mémoire, soit automatiquement lorsqu&#039;on se sert du périphérique concerné, soit manuellement. Ils permettent de réduire la taille mémoire utilisée par le noyau lui-même. Le concept de modules permet aussi d&#039;ajouter des drivers de périphériques au système sans devoir recompiler le noyau.&lt;br /&gt;
&lt;br /&gt;
Bon, c&#039;est clair il me semble (normal, c&#039;est moi qui ai écrit ça ;). Les modules permettent aussi d&#039;ajouter des drivers distribués uniquement sous forme binaire ; on ne peut pas les recompiler, mais on peut s&#039;en servir (ce qui est assez intéressant finalement ;) Les modules ne sont pas que des drivers, d&#039;une façon générale, ça peut être tout morceau de code qu&#039;on a décidé d&#039;externaliser par rapport au noyau, comme bien sûr un driver, mais aussi un protocole de communication (par ex. &amp;lt;tt&amp;gt;ppp&amp;lt;/tt&amp;gt;) ou n&#039;importe quoi d&#039;autre.&lt;br /&gt;
&lt;br /&gt;
== Où se trouvent-ils ? ==&lt;br /&gt;
&lt;br /&gt;
Ils résident dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau&amp;lt;/tt&amp;gt;. exemple : &amp;lt;tt&amp;gt;/lib/modules/2.4.17&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ce répertoire contient les dossiers suivants qui permettent de séparer les modules selon leur type : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| &amp;lt;tt&amp;gt;block/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques de type bloc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;fs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| systèmes de fichier (FAT, ext2, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;misc/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;net/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers des cartes réseaux et protocoles&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;scsi/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques SCSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdrom/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers CDROM non IDE (anciens CD-ROMs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipv4/&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ipv6/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| protocole IP v4 et v6(protocole réseau)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;pcmcia/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| modules pour gérer les cartes PCMCIA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;video/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| gestion des cartes video en console, framebuffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce répertoire peut contenir d&#039;autres dossiers, plus un fichier nommé &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande &amp;lt;code&amp;gt;depmod -a&amp;lt;/code&amp;gt; placée dans les scripts de démarrage.&lt;br /&gt;
&lt;br /&gt;
== Comment ajouter des modules, les recompiler ? ==&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés avec le noyau ===&lt;br /&gt;
&lt;br /&gt;
Voir la rubrique [[Kernel-kernel|noyau]]. Pour ajouter un module, il faut éditer la configuration du noyau, cocher l&#039;option &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; voulue dans la config du noyau, puis enregistrer la configuration noyau, faire : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;# make dep ; make modules ; make modules_install&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
(Si vous modifiez également la configuration du noyau lui-même, par exemple en supprimant ou ajoutant des options qui sont incluses dans le noyau, vous devez aussi recompiler/réinstaller le noyau comme indiqué dans la rubrique [[Kernel-kernel|noyau]])&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés en dehors du noyau ===&lt;br /&gt;
&lt;br /&gt;
Parfois, des modules peuvent être trouvés en dehors de l&#039;arborescence des sources du noyau. Par exemple, vous pouvez télécharger un driver pour certains winmodems (hé oui ça arrive !!!) sur [http://www.o2.net/~gromitkc/winmodem.html cette page]. &amp;lt;br /&amp;gt;Certains de ces modules sont livrés sous forme binaire, on peut alors s&#039;en servir tel quels (&amp;lt;code&amp;gt;insmod -f ./le_module&amp;lt;/code&amp;gt;). D&#039;autres sont livrés sous forme source sous license GPL ou non ; il faut d&#039;abord les compiler (lisez la doc fournie avec ; cela nécessite en général d&#039;avoir installé les sources du noyau).&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte des nouveaux modules ===&lt;br /&gt;
&lt;br /&gt;
Pour que les modules nouvellement installés soient pris en compte, si ce sont des modules &amp;quot;hors noyau&amp;quot;, il est bon de les copier dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau/misc&amp;lt;/tt&amp;gt; (pour les modules &amp;quot;noyau&amp;quot;, la commande &amp;lt;code&amp;gt;make modules_install&amp;lt;/code&amp;gt; fait ça) &amp;lt;br /&amp;gt;Il faut aussi faire un : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;# depmod -a&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Cette commande remet à jour le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, en fonction du ou des nouveaux modules. &amp;lt;br /&amp;gt;Ainsi, vous pourrez charger le module par &amp;lt;code&amp;gt;modprobe le_module&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans la page man de &amp;lt;tt&amp;gt;depmod&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comment les manipuler ? ==&lt;br /&gt;
&lt;br /&gt;
Avec les programmes &amp;lt;code&amp;gt;lsmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;insmod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rmmod&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; qui se situent dans &amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;lsmod&amp;lt;/code&amp;gt; : voir quels modules sont chargés à l&#039;heure actuelle. Cette commande affiche la liste des modules chargés, les dépendances entre les modules chargés, et dit si les modules sont utilisés ou non.&lt;br /&gt;
* &amp;lt;code&amp;gt;insmod module&amp;lt;/code&amp;gt; : charger un module en mémoire. Si &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; est spécifié sans extension (en général &amp;lt;code&amp;gt;.o&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;insmod&amp;lt;/code&amp;gt; cherchera le module dans des répertoires par défaut, en général &amp;lt;tt&amp;gt;/lib/module/version_du_noyau&amp;lt;/tt&amp;gt;. Sinon, il faut donner le chemin où trouver le module. (Par exemple : &amp;lt;code&amp;gt;insmod -f ./module.o&amp;lt;/code&amp;gt; ; le &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt; permet de forcer le chargement d&#039;un module qui a été compilé avec une version du noyau différente de celle du noyau qui tourne actuellement.)&lt;br /&gt;
* &amp;lt;code&amp;gt;rmmod module&amp;lt;/code&amp;gt; : décharger un module, où &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; est le nom donné par &amp;lt;code&amp;gt;lsmod&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; : exécuter les commandes &amp;lt;code&amp;gt;insmod&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;rmmod&amp;lt;/code&amp;gt; à votre place. &amp;lt;code&amp;gt;modprobe le_module&amp;lt;/code&amp;gt; charge &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; en mémoire ainsi que tous les modules dont il dépend (en lisant le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;). &amp;lt;code&amp;gt;modprobe -r le_module&amp;lt;/code&amp;gt; enleve &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; de la mémoire, ainsi que tous les modules dont il dépend, sauf s&#039;ils sont utilisés par un autre module bien sûr.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans les pages man de &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Comment faire pour les charger automatiquement ? ==&lt;br /&gt;
&lt;br /&gt;
=== Chargeur dynamique de modules ===&lt;br /&gt;
&lt;br /&gt;
Tout ça c&#039;est bien beau, mais si à chaque fois avant de regarder la télé, il faut faire &amp;lt;code&amp;gt;modprobe bttv&amp;lt;/code&amp;gt;, ou si à chaque fois qu&#039;on veut lancer Xracer il faut faire &amp;lt;code&amp;gt;modprobe 3dfx&amp;lt;/code&amp;gt;, ça va vite devenir fastidieux.&lt;br /&gt;
&lt;br /&gt;
Ce qu&#039;on veut, c&#039;est que le bon module se charge lorsqu&#039;on utilise le périphérique (&amp;lt;tt&amp;gt;/dev/le_periph&amp;lt;/tt&amp;gt;) correspondant. C&#039;est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt;. Cela se fait via son fichier de configuration &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; (pour les versions de modutils antérieures à 2.3.5-1, ce fichier s&#039;appelle &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un module soit chargé automatiquement, faire : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;# ls -l /dev/le_periph&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;qui affiche une ligne ressemblant à : &amp;lt;br/&amp;gt;&amp;lt;tt&amp;gt;crw-------   1 user     group &#039;&#039;&#039;&amp;lt;u&amp;gt;144&amp;lt;/u&amp;gt;&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;12&amp;lt;/u&amp;gt;&#039;&#039; May 25  2000 /dev/le_periph&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Pour chaque ligne est affiché :&lt;br /&gt;
* Un numéro majeur (ici &#039;&#039;&#039;144&#039;&#039;&#039;) : il identifie le pilote du périphérique,&lt;br /&gt;
* Un numéro mineur (ici &#039;&#039;&#039;12&#039;&#039;&#039;) : il sert à différencier les périphériques utilisant un même pilote.&lt;br /&gt;
&lt;br /&gt;
Editez le fichier &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; dans votre éditeur de texte préféré et ajoutez une ligne : &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;alias char-major-144 le_module&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;en remplaçant bien sûr &amp;lt;code&amp;gt;144&amp;lt;/code&amp;gt; par votre numéro, et &amp;lt;code&amp;gt;le_module&amp;lt;/code&amp;gt; par votre module. &amp;lt;br/&amp;gt;Par exemple, pour charger le module gérant la carte 3dfx, j&#039;ai dans mon &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt; la ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;alias char-major-107 3dfx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Il existe des aliases prédéfinis pour remplacer &amp;lt;tt&amp;gt;char-major-xxx&amp;lt;/tt&amp;gt; pour les périphériques courants : &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt; pour la première carte ethernet (&amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; pour la suivante, etc.), &amp;lt;tt&amp;gt;parport_lowlevel&amp;lt;/tt&amp;gt; pour le port parallèle, &amp;lt;tt&amp;gt;sound&amp;lt;/tt&amp;gt; pour la carte son, &amp;lt;tt&amp;gt;midi&amp;lt;/tt&amp;gt; pour la partie midi de la carte son, etc.&lt;br /&gt;
&lt;br /&gt;
Si votre module a besoin d&#039;options, par exemple pour connaître une adresse ou une interruption, vous pouvez aussi ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;options le_module irq=5 dma=0 dma2=1 mpu_io=0x388 io=0x370&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;Chaque module a ses propres options, reportez-vous à la documentation de votre module afin de les connaître.&lt;br /&gt;
&lt;br /&gt;
Enfin, si vous voulez lancer une commande avant ou après que le module soit chargé en mémoire, vous pouvez ajouter une ligne du type : &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;pre-install le_module la_commande&amp;lt;/code&amp;gt;, ou : &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;post-install le_module la_commande&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans la page man de &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Chargeur dynamique de modules sur Debian ===&lt;br /&gt;
&lt;br /&gt;
Debian juge que l&#039;édition du fichier &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt; par l&#039;utilisateur est trop risquée. A la place, elle propose d&#039;éditer des fichiers dans le répertoire &amp;lt;tt&amp;gt;/etc/modutils/&amp;lt;/tt&amp;gt;. Ces fichiers ont la même syntaxe que &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt;. Il existe trois fichiers par défault :&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/modutils/actions&amp;lt;/tt&amp;gt; : regroupe toutes les actions sur les modules,&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/modutils/aliases&amp;lt;/tt&amp;gt; : regroupe tous les alias,&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/modutils/paths&amp;lt;/tt&amp;gt; : regroupe tous les chemins.&lt;br /&gt;
Une fois les fichiers mis à jour, la commande &amp;lt;code&amp;gt;update-modules&amp;lt;/code&amp;gt; lit les fichiers présents dans &amp;lt;tt&amp;gt;/etc/modutils/&amp;lt;/tt&amp;gt; et regénère &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; Plus d&#039;infos dans la page man de &amp;lt;tt&amp;gt;update-modules&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Chargeur statique de modules ===&lt;br /&gt;
&lt;br /&gt;
Il est possible de charger un module au démarrage de Linux en ajoutant une ligne avec le nom du module dans le fichier &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;. Cependant, on perd l&#039;intérêt de la modularité puisqu&#039;il est chargé même s&#039;il n&#039;est pas utilisé.&lt;br /&gt;
&lt;br /&gt;
Voilà, c&#039;est tout, maintenant lorsqu&#039;un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: on peut faire des tas de choses &amp;quot;intéressantes&amp;quot; avec les modules, allez voir [http://www.safenetworks.com/Linux/modules.html cette page] par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n&#039;utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à [http://www.bruhat.net BooK] pour l&#039;info).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa et a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot le 25/05/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 25/05/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13770</id>
		<title>Discussion:Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13770"/>
		<updated>2006-09-29T10:38:35Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* Commentaires de : NomWikiFnx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Commentaires de : NomWikiFnx=&lt;br /&gt;
posté le 2005-07-05 00:11:17&lt;br /&gt;
&lt;br /&gt;
Selon $ man modules.conf,   le  fichier /etc/conf.modules est désormais remplacé par /etc/modules.conf&lt;br /&gt;
&lt;br /&gt;
=Commentaires de : Ftiercel=&lt;br /&gt;
posté le 2006-09-28&lt;br /&gt;
&lt;br /&gt;
C&#039;est vrai effectivement, sauf que ce nouveau fichier ne DOIT PAS être édité par l&#039;utilisateur puisqu&#039;il est généré automatiquement. Il y a néanmoins de nouvelles méthodes pour le paramètrer, mais je ne connais pas encore assez Debian pour les expliquer.&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13763</id>
		<title>Discussion:Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Kernel-modules&amp;diff=13763"/>
		<updated>2006-09-28T14:16:00Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Commentaires de : NomWikiFnx=&lt;br /&gt;
posté le 2005-07-05 00:11:17&lt;br /&gt;
&lt;br /&gt;
Selon $ man modules.conf,   le  fichier /etc/conf.modules est désormais remplacé par /etc/modules.conf&lt;br /&gt;
&lt;br /&gt;
C&#039;est vrai effectivement, sauf que ce nouveau fichier ne DOIT PAS être édité par l&#039;utilisateur puisqu&#039;il est généré automatiquement. Il y a néanmoins de nouvelles méthodes pour le paramètrer, mais je ne connais pas encore assez Debian pour les expliquer.&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13762</id>
		<title>Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13762"/>
		<updated>2006-09-28T14:12:23Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* Comment faire pour les charger automatiquement ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Configurer votre noyau]]&lt;br /&gt;
= Les modules de Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les modules de Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Comment fonctionnent ces mystérieux modules ?&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Si vous ne savez pas ce que sont les modules, allez voir le glossaire !&lt;br /&gt;
&lt;br /&gt;
== A quoi ça sert ? ==&lt;br /&gt;
&lt;br /&gt;
; Bon, puisque vous avez pas été lire le glosssaire, voici la définition qui en est donnée :&lt;br /&gt;
: Les modules sont une façon qui a été trouvée pour rendre Linux (le noyau) plus modulaire (!) et plus léger. En effet, ce sont le plus souvent des drivers qui ont été &amp;quot;sortis&amp;quot; du noyau dans des fichiers séparés, et qui sont chargés en mémoire, soit automatiquement lorsqu&#039;on se sert du périphérique concerné, soit manuellement. Ils permettent de réduire la taille mémoire utilisée par le noyau lui-même. Le concept de modules permet aussi d&#039;ajouter des drivers de périphériques au système sans devoir recompiler le noyau.&lt;br /&gt;
&lt;br /&gt;
Bon, c&#039;est clair il me semble (normal, c&#039;est moi qui ai écrit ça ;). Les modules permettent aussi d&#039;ajouter des drivers distribués uniquement sous forme binaire ; on ne peut pas les recompiler, mais on peut s&#039;en servir (ce qui est assez intéressant finalement ;) Les modules ne sont pas que des drivers, d&#039;une façon générale, ça peut être tout morceau de code qu&#039;on a décidé d&#039;externaliser par rapport au noyau, comme bien sûr un driver, mais aussi un protocole de communication (par ex. &amp;lt;tt&amp;gt;ppp&amp;lt;/tt&amp;gt;) ou n&#039;importe quoi d&#039;autre.&lt;br /&gt;
&lt;br /&gt;
== Où se trouvent-ils ? ==&lt;br /&gt;
&lt;br /&gt;
Ils résident dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau&amp;lt;/tt&amp;gt;. exemple : &amp;lt;tt&amp;gt;/lib/modules/2.2.15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ce répertoire contient les dossiers suivants qui permettent de séparer les modules selon leur type : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| &amp;lt;tt&amp;gt;block/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques de type bloc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;fs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| systèmes de fichier (FAT, ext2, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;misc/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;net/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers des cartes réseaux et protocoles&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;scsi/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques SCSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdrom/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers CDROM non IDE (anciens CD-ROMs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipv4/&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ipv6/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| protocole IP v4 et v6(protocole réseau)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;pcmcia/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| modules pour gérer les cartes PCMCIA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;video/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| gestion des cartes video en console, framebuffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce répertoire peut contenir d&#039;autres dossiers, plus un fichier nommé &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande &amp;quot;depmod -a&amp;quot; placée dans les scripts de démarrage.&lt;br /&gt;
&lt;br /&gt;
== Comment ajouter des modules, les recompiler ? ==&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés avec le noyau ===&lt;br /&gt;
&lt;br /&gt;
Voir la rubrique [[Kernel-kernel|noyau]]. Pour ajouter un module, il faut éditer la configuration du noyau, cocher l&#039;option &#039;M&#039; voulue dans la config du noyau, puis enregistrer la configuration noyau, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# make dep ; make modules ; make modules_install&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(Si vous modifiez également la configuration du noyau lui-même, par exemple en supprimant ou ajoutant des options qui sont incluses dans le noyau, vous devez aussi recompiler/réinstaller le noyau comme indiqué dans la rubrique [[Kernel-kernel|noyau]].)&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés en dehors du noyau ===&lt;br /&gt;
&lt;br /&gt;
Parfois, des modules peuvent être trouvés en dehors de l&#039;arborescence des sources du noyau. Par exemple, vous pouvez télécharger un driver pour certains winmodems (hé oui ça arrive !!!) sur [http://www.o2.net/~gromitkc/winmodem.html cette page]. &amp;lt;br /&amp;gt;Certains de ces modules sont livrés sous forme binaire, on peut alors s&#039;en servir tel quels (&amp;lt;tt&amp;gt;insmod -f ./le_module&amp;lt;/tt&amp;gt;). D&#039;autres sont livrés sous forme source sous license GPL ou non ; il faut d&#039;abord les compiler (lisez la doc fournie avec ; cela nécessite en général d&#039;avoir installé les sources du noyau).&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte des nouveaux modules ===&lt;br /&gt;
&lt;br /&gt;
Pour que les modules nouvellement installés soient pris en compte, si ce sont des modules &amp;quot;hors noyau&amp;quot;, il est bon de les copier dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau/misc&amp;lt;/tt&amp;gt; (pour les modules &amp;quot;noyau&amp;quot;, la commande &amp;quot;&amp;lt;tt&amp;gt;make modules_install&amp;lt;/tt&amp;gt;&amp;quot; fait ça) &amp;lt;br /&amp;gt;Il faut aussi faire un : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# depmod -a&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Cette commande remet à jour le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, en fonction du ou des nouveaux modules. &amp;lt;br /&amp;gt;Ainsi, vous pourrez charger le module par &amp;quot;&amp;lt;tt&amp;gt;modprobe le_module&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Comment les manipuler ? ==&lt;br /&gt;
&lt;br /&gt;
Avec les programmes &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; qui se situent dans &amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt; : voir quels modules sont chargés à l&#039;heure actuelle. Cette commande affiche la liste des modules chargés, les dépendances entre les modules chargés, et dit si les modules sont utilisés ou non.&lt;br /&gt;
* &amp;lt;tt&amp;gt;insmod module&amp;lt;/tt&amp;gt; : charger un module en mémoire. Si &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est spécifié sans extension (en général &amp;quot;&amp;lt;tt&amp;gt;.o&amp;lt;/tt&amp;gt;&amp;quot;), &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; cherchera le module dans des répertoires par défaut, en général &amp;lt;tt&amp;gt;/lib/module/version_du_noyau&amp;lt;/tt&amp;gt;. Sinon, il faut donner le chemin où trouver le module. (Par exemple : &amp;quot;&amp;lt;tt&amp;gt;insmod -f ./module.o&amp;lt;/tt&amp;gt;&amp;quot; ; le &amp;quot;&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt;&amp;quot; permet de forcer le chargement d&#039;un module qui a été compilé avec une version du noyau différente de celle du noyau qui tourne actuellement.)&lt;br /&gt;
* &amp;lt;tt&amp;gt;rmmod module&amp;lt;/tt&amp;gt; : décharger un module, où &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est le nom donné par &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; : exécuter les commandes &amp;quot;&amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;&amp;quot; et &amp;quot;&amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt;&amp;quot; à votre place. &amp;quot;&amp;lt;tt&amp;gt;modprobe le_module&amp;lt;/tt&amp;gt;&amp;quot; charge &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; en mémoire ainsi que tous les modules dont il dépend (en lisant le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;). &amp;quot;&amp;lt;tt&amp;gt;modprobe -r le_module&amp;lt;/tt&amp;gt;&amp;quot; enleve &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; de la mémoire, ainsi que tous les modules dont il dépend, sauf s&#039;ils sont utilisés par un autre module bien sûr.&lt;br /&gt;
&lt;br /&gt;
== Comment faire pour les charger automatiquement ? ==&lt;br /&gt;
&lt;br /&gt;
=== Chargeur de modules par &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; (pour les versions de modutils antérieures à 2.3.5-1) ===&lt;br /&gt;
&lt;br /&gt;
Tout ça c&#039;est bien beau, mais si à chaque fois avant de regarder la télé, il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe bttv&amp;lt;/tt&amp;gt;&amp;quot;, ou si à chaque fois qu&#039;on veut lancer Xracer il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe 3dfx&amp;lt;/tt&amp;gt;&amp;quot;, ça va vite devenir fastidieux.&lt;br /&gt;
&lt;br /&gt;
Ce qu&#039;on veut, c&#039;est que le bon module se charge lorsqu&#039;on utilise le périphérique (&amp;lt;tt&amp;gt;/dev/le_periph&amp;lt;/tt&amp;gt;) correspondant. C&#039;est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt;. Cela se fait via son fichier de configuration &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un module soit chargé automatiquement, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ls -l /dev/le_periph&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;qui affiche une ligne ressemblant à : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;crw-------   1 user     group &#039;&#039;&#039;&amp;lt;u&amp;gt;144&amp;lt;/u&amp;gt;&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;12&amp;lt;/u&amp;gt;&#039;&#039; May 25  2000 /dev/le_periph&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Dans la ligne qui s&#039;affiche, noter le numéro dit &amp;quot;majeur&amp;quot;,  c&#039;est à dire le premier numéro qui suit le groupe, ici &amp;quot;&#039;&#039;&#039;144&#039;&#039;&#039;&amp;quot;. Notez ce numéro.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Le numéro majeur (ici &#039;&#039;&#039;144&#039;&#039;&#039;) sert à déterminer quel driver est nécessaire pour piloter ce périphérique, le numéro mineur (ici &#039;&#039;12&#039;&#039;) sert à différencier les périphériques utilisant un même driver.&lt;br /&gt;
&lt;br /&gt;
Editez le fichier &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; dans votre éditeur de texte préféré et ajoutez une ligne : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-144 le_module&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;en remplaçant bien sûr 144 par votre numéro, et &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; par votre module. &amp;lt;br /&amp;gt;Par exemple, pour charger le module gérant la carte 3dfx, j&#039;ai dans mon &amp;lt;tt&amp;gt;conf.modules&amp;lt;/tt&amp;gt; la ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-107 3dfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Il existe des aliases prédéfinis pour remplacer &amp;lt;tt&amp;gt;char-major-xxx&amp;lt;/tt&amp;gt; pour les périphériques courants : &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt; pour la première carte ethernet (&amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; pour la suivante, etc.), &amp;lt;tt&amp;gt;parport_lowlevel&amp;lt;/tt&amp;gt; pour le port parallèle, &amp;lt;tt&amp;gt;sound&amp;lt;/tt&amp;gt; pour la carte son, &amp;lt;tt&amp;gt;midi&amp;lt;/tt&amp;gt; pour la partie midi de la carte son, etc.&lt;br /&gt;
&lt;br /&gt;
Si votre module a besoin d&#039;options, par exemple pour connaître une adresse ou une interruption, vous pouvez aussi ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;options le_module irq=5 dma=0 dma2=1 mpu_io=0x388 io=0x370&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Chaque module a ses propres options, reportez-vous à la documentation de votre module afin de les connaître.&lt;br /&gt;
&lt;br /&gt;
Enfin, si vous voulez lancer une commande avant ou après que le module soit chargé en mémoire, vous pouvez ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;pre-install le_module la_commande&amp;lt;/tt&amp;gt; , ou : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;post-install le_module la_commande&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voilà, c&#039;est tout, maintenant lorsqu&#039;un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Chargeur de modules (pour les versions de modutils égale ou supérieures à 2.3.5-1) ===&lt;br /&gt;
&lt;br /&gt;
Il est possible de charger un module au démarrage de Linux en ajoutant une ligne avec le nom du module dans le fichier &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;. Cependant, on perd l&#039;intérêt de la modularité puisqu&#039;il est chargé même s&#039;il n&#039;est pas utilisé.&lt;br /&gt;
&lt;br /&gt;
TODO : expliquer comment charger un module à la demande (grâce à &amp;lt;tt&amp;gt;/etc/modutils/actions&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/etc/modutils/aliases&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/modutils/paths&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;infos, regardez la page man de &amp;lt;tt&amp;gt;depmod&amp;lt;/tt&amp;gt;, et des autres programmes (&amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; : on peut faire des tas de choses &amp;quot;intéressantes&amp;quot; avec les modules, allez voir [http://www.safenetworks.com/Linux/modules.html cette page] par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n&#039;utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à [http://www.bruhat.net BooK] pour l&#039;info).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa et a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot le 25/05/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 25/05/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13761</id>
		<title>Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13761"/>
		<updated>2006-09-27T14:28:54Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : ordre plus logique et moins confus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Configurer votre noyau]]&lt;br /&gt;
= Les modules de Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les modules de Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Comment fonctionnent ces mystérieux modules ?&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Si vous ne savez pas ce que sont les modules, allez voir le glossaire !&lt;br /&gt;
&lt;br /&gt;
== A quoi ça sert ? ==&lt;br /&gt;
&lt;br /&gt;
; Bon, puisque vous avez pas été lire le glosssaire, voici la définition qui en est donnée :&lt;br /&gt;
: Les modules sont une façon qui a été trouvée pour rendre Linux (le noyau) plus modulaire (!) et plus léger. En effet, ce sont le plus souvent des drivers qui ont été &amp;quot;sortis&amp;quot; du noyau dans des fichiers séparés, et qui sont chargés en mémoire, soit automatiquement lorsqu&#039;on se sert du périphérique concerné, soit manuellement. Ils permettent de réduire la taille mémoire utilisée par le noyau lui-même. Le concept de modules permet aussi d&#039;ajouter des drivers de périphériques au système sans devoir recompiler le noyau.&lt;br /&gt;
&lt;br /&gt;
Bon, c&#039;est clair il me semble (normal, c&#039;est moi qui ai écrit ça ;). Les modules permettent aussi d&#039;ajouter des drivers distribués uniquement sous forme binaire ; on ne peut pas les recompiler, mais on peut s&#039;en servir (ce qui est assez intéressant finalement ;) Les modules ne sont pas que des drivers, d&#039;une façon générale, ça peut être tout morceau de code qu&#039;on a décidé d&#039;externaliser par rapport au noyau, comme bien sûr un driver, mais aussi un protocole de communication (par ex. &amp;lt;tt&amp;gt;ppp&amp;lt;/tt&amp;gt;) ou n&#039;importe quoi d&#039;autre.&lt;br /&gt;
&lt;br /&gt;
== Où se trouvent-ils ? ==&lt;br /&gt;
&lt;br /&gt;
Ils résident dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau&amp;lt;/tt&amp;gt;. exemple : &amp;lt;tt&amp;gt;/lib/modules/2.2.15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ce répertoire contient les dossiers suivants qui permettent de séparer les modules selon leur type : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| &amp;lt;tt&amp;gt;block/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques de type bloc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;fs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| systèmes de fichier (FAT, ext2, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;misc/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;net/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers des cartes réseaux et protocoles&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;scsi/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques SCSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdrom/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers CDROM non IDE (anciens CD-ROMs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipv4/&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ipv6/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| protocole IP v4 et v6(protocole réseau)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;pcmcia/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| modules pour gérer les cartes PCMCIA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;video/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| gestion des cartes video en console, framebuffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce répertoire peut contenir d&#039;autres dossiers, plus un fichier nommé &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande &amp;quot;depmod -a&amp;quot; placée dans les scripts de démarrage.&lt;br /&gt;
&lt;br /&gt;
== Comment ajouter des modules, les recompiler ? ==&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés avec le noyau ===&lt;br /&gt;
&lt;br /&gt;
Voir la rubrique [[Kernel-kernel|noyau]]. Pour ajouter un module, il faut éditer la configuration du noyau, cocher l&#039;option &#039;M&#039; voulue dans la config du noyau, puis enregistrer la configuration noyau, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# make dep ; make modules ; make modules_install&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(Si vous modifiez également la configuration du noyau lui-même, par exemple en supprimant ou ajoutant des options qui sont incluses dans le noyau, vous devez aussi recompiler/réinstaller le noyau comme indiqué dans la rubrique [[Kernel-kernel|noyau]].)&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés en dehors du noyau ===&lt;br /&gt;
&lt;br /&gt;
Parfois, des modules peuvent être trouvés en dehors de l&#039;arborescence des sources du noyau. Par exemple, vous pouvez télécharger un driver pour certains winmodems (hé oui ça arrive !!!) sur [http://www.o2.net/~gromitkc/winmodem.html cette page]. &amp;lt;br /&amp;gt;Certains de ces modules sont livrés sous forme binaire, on peut alors s&#039;en servir tel quels (&amp;lt;tt&amp;gt;insmod -f ./le_module&amp;lt;/tt&amp;gt;). D&#039;autres sont livrés sous forme source sous license GPL ou non ; il faut d&#039;abord les compiler (lisez la doc fournie avec ; cela nécessite en général d&#039;avoir installé les sources du noyau).&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte des nouveaux modules ===&lt;br /&gt;
&lt;br /&gt;
Pour que les modules nouvellement installés soient pris en compte, si ce sont des modules &amp;quot;hors noyau&amp;quot;, il est bon de les copier dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau/misc&amp;lt;/tt&amp;gt; (pour les modules &amp;quot;noyau&amp;quot;, la commande &amp;quot;&amp;lt;tt&amp;gt;make modules_install&amp;lt;/tt&amp;gt;&amp;quot; fait ça) &amp;lt;br /&amp;gt;Il faut aussi faire un : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# depmod -a&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Cette commande remet à jour le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, en fonction du ou des nouveaux modules. &amp;lt;br /&amp;gt;Ainsi, vous pourrez charger le module par &amp;quot;&amp;lt;tt&amp;gt;modprobe le_module&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Comment les manipuler ? ==&lt;br /&gt;
&lt;br /&gt;
Avec les programmes &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; qui se situent dans &amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt; : voir quels modules sont chargés à l&#039;heure actuelle. Cette commande affiche la liste des modules chargés, les dépendances entre les modules chargés, et dit si les modules sont utilisés ou non.&lt;br /&gt;
* &amp;lt;tt&amp;gt;insmod module&amp;lt;/tt&amp;gt; : charger un module en mémoire. Si &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est spécifié sans extension (en général &amp;quot;&amp;lt;tt&amp;gt;.o&amp;lt;/tt&amp;gt;&amp;quot;), &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; cherchera le module dans des répertoires par défaut, en général &amp;lt;tt&amp;gt;/lib/module/version_du_noyau&amp;lt;/tt&amp;gt;. Sinon, il faut donner le chemin où trouver le module. (Par exemple : &amp;quot;&amp;lt;tt&amp;gt;insmod -f ./module.o&amp;lt;/tt&amp;gt;&amp;quot; ; le &amp;quot;&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt;&amp;quot; permet de forcer le chargement d&#039;un module qui a été compilé avec une version du noyau différente de celle du noyau qui tourne actuellement.)&lt;br /&gt;
* &amp;lt;tt&amp;gt;rmmod module&amp;lt;/tt&amp;gt; : décharger un module, où &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est le nom donné par &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; : exécuter les commandes &amp;quot;&amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;&amp;quot; et &amp;quot;&amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt;&amp;quot; à votre place. &amp;quot;&amp;lt;tt&amp;gt;modprobe le_module&amp;lt;/tt&amp;gt;&amp;quot; charge &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; en mémoire ainsi que tous les modules dont il dépend (en lisant le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;). &amp;quot;&amp;lt;tt&amp;gt;modprobe -r le_module&amp;lt;/tt&amp;gt;&amp;quot; enleve &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; de la mémoire, ainsi que tous les modules dont il dépend, sauf s&#039;ils sont utilisés par un autre module bien sûr.&lt;br /&gt;
&lt;br /&gt;
== Comment faire pour les charger automatiquement ? ==&lt;br /&gt;
&lt;br /&gt;
=== ou : le chargeur de modules et &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Tout ça c&#039;est bien beau, mais si à chaque fois avant de regarder la télé, il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe bttv&amp;lt;/tt&amp;gt;&amp;quot;, ou si à chaque fois qu&#039;on veut lancer Xracer il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe 3dfx&amp;lt;/tt&amp;gt;&amp;quot;, ça va vite devenir fastidieux.&lt;br /&gt;
&lt;br /&gt;
Ce qu&#039;on veut, c&#039;est que le bon module se charge lorsqu&#039;on utilise le périphérique (&amp;lt;tt&amp;gt;/dev/le_periph&amp;lt;/tt&amp;gt;) correspondant. C&#039;est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt;. Cela se fait via son fichier de configuration &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; pour les versions de modutils antérieures à 2.3.5-1).&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un module soit chargé automatiquement, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ls -l /dev/le_periph&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;qui affiche une ligne ressemblant à : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;crw-------   1 user     group &#039;&#039;&#039;&amp;lt;u&amp;gt;144&amp;lt;/u&amp;gt;&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;12&amp;lt;/u&amp;gt;&#039;&#039; May 25  2000 /dev/le_periph&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Dans la ligne qui s&#039;affiche, noter le numéro dit &amp;quot;majeur&amp;quot;,  c&#039;est à dire le premier numéro qui suit le groupe, ici &amp;quot;&#039;&#039;&#039;144&#039;&#039;&#039;&amp;quot;. Notez ce numéro.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Le numéro majeur (ici &#039;&#039;&#039;144&#039;&#039;&#039;) sert à déterminer quel driver est nécessaire pour piloter ce périphérique, le numéro mineur (ici &#039;&#039;12&#039;&#039;) sert à différencier les périphériques utilisant un même driver.&lt;br /&gt;
&lt;br /&gt;
Editez le fichier &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; dans votre éditeur de texte préféré et ajoutez une ligne : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-144 le_module&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;en remplaçant bien sûr 144 par votre numéro, et &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; par votre module. &amp;lt;br /&amp;gt;Par exemple, pour charger le module gérant la carte 3dfx, j&#039;ai dans mon &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt; la ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-107 3dfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Il existe des aliases prédéfinis pour remplacer &amp;lt;tt&amp;gt;char-major-xxx&amp;lt;/tt&amp;gt; pour les périphériques courants : &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt; pour la première carte ethernet (&amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; pour la suivante, etc.), &amp;lt;tt&amp;gt;parport_lowlevel&amp;lt;/tt&amp;gt; pour le port parallèle, &amp;lt;tt&amp;gt;sound&amp;lt;/tt&amp;gt; pour la carte son, &amp;lt;tt&amp;gt;midi&amp;lt;/tt&amp;gt; pour la partie midi de la carte son, etc.&lt;br /&gt;
&lt;br /&gt;
Si votre module a besoin d&#039;options, par exemple pour connaître une adresse ou une interruption, vous pouvez aussi ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;options le_module irq=5 dma=0 dma2=1 mpu_io=0x388 io=0x370&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Chaque module a ses propres options, reportez-vous à la documentation de votre module afin de les connaître.&lt;br /&gt;
&lt;br /&gt;
Enfin, si vous voulez lancer une commande avant ou après que le module soit chargé en mémoire, vous pouvez ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;pre-install le_module la_commande&amp;lt;/tt&amp;gt; , ou : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;post-install le_module la_commande&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voilà, c&#039;est tout, maintenant lorsqu&#039;un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;infos, regardez la page man de &amp;lt;tt&amp;gt;depmod&amp;lt;/tt&amp;gt;, et des autres programmes (&amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; : on peut faire des tas de choses &amp;quot;intéressantes&amp;quot; avec les modules, allez voir [http://www.safenetworks.com/Linux/modules.html cette page] par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n&#039;utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à [http://www.bruhat.net BooK] pour l&#039;info).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa et a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot le 25/05/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 25/05/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13745</id>
		<title>Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13745"/>
		<updated>2006-09-21T04:29:03Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* ou : le chargeur de modules et &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Configurer votre noyau]]&lt;br /&gt;
= Les modules de Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les modules de Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Comment fonctionnent ces mystérieux modules ?&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Si vous ne savez pas ce que sont les modules, allez voir le glossaire !&lt;br /&gt;
&lt;br /&gt;
== A quoi ça sert ? ==&lt;br /&gt;
&lt;br /&gt;
; Bon, puisque vous avez pas été lire le glosssaire, voici la définition qui en est donnée :&lt;br /&gt;
: Les modules sont une façon qui a été trouvée pour rendre Linux (le noyau) plus modulaire (!) et plus léger. En effet, ce sont le plus souvent des drivers qui ont été &amp;quot;sortis&amp;quot; du noyau dans des fichiers séparés, et qui sont chargés en mémoire, soit automatiquement lorsqu&#039;on se sert du périphérique concerné, soit manuellement. Ils permettent de réduire la taille mémoire utilisée par le noyau lui-même. Le concept de modules permet aussi d&#039;ajouter des drivers de périphériques au système sans devoir recompiler le noyau.&lt;br /&gt;
&lt;br /&gt;
Bon, c&#039;est clair il me semble (normal, c&#039;est moi qui ai écrit ça ;). Les modules permettent aussi d&#039;ajouter des drivers distribués uniquement sous forme binaire ; on ne peut pas les recompiler, mais on peut s&#039;en servir (ce qui est assez intéressant finalement ;) Les modules ne sont pas que des drivers, d&#039;une façon générale, ça peut être tout morceau de code qu&#039;on a décidé d&#039;externaliser par rapport au noyau, comme bien sûr un driver, mais aussi un protocole de communication (par ex. &amp;lt;tt&amp;gt;ppp&amp;lt;/tt&amp;gt;) ou n&#039;importe quoi d&#039;autre.&lt;br /&gt;
&lt;br /&gt;
== Où se trouvent-ils ? ==&lt;br /&gt;
&lt;br /&gt;
Ils résident dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau&amp;lt;/tt&amp;gt;. exemple : &amp;lt;tt&amp;gt;/lib/modules/2.2.15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ce répertoire contient les dossiers suivants qui permettent de séparer les modules selon leur type : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| &amp;lt;tt&amp;gt;block/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques de type bloc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;fs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| systèmes de fichier (FAT, ext2, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;misc/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;net/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers des cartes réseaux et protocoles&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;scsi/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques SCSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdrom/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers CDROM non IDE (anciens CD-ROMs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipv4/&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ipv6/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| protocole IP v4 et v6(protocole réseau)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;pcmcia/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| modules pour gérer les cartes PCMCIA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;video/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| gestion des cartes video en console, framebuffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce répertoire peut contenir d&#039;autres dossiers, plus un fichier nommé &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande &amp;quot;depmod -a&amp;quot; placée dans les scripts de démarrage.&lt;br /&gt;
&lt;br /&gt;
== Comment les manipuler ? ==&lt;br /&gt;
&lt;br /&gt;
Avec les programmes &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; qui se situent dans &amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt; : voir quels modules sont chargés à l&#039;heure actuelle. Cette commande affiche la liste des modules chargés, les dépendances entre les modules chargés, et dit si les modules sont utilisés ou non.&lt;br /&gt;
* &amp;lt;tt&amp;gt;insmod module&amp;lt;/tt&amp;gt; : charger un module en mémoire. Si &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est spécifié sans extension (en général &amp;quot;&amp;lt;tt&amp;gt;.o&amp;lt;/tt&amp;gt;&amp;quot;), &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; cherchera le module dans des répertoires par défaut, en général &amp;lt;tt&amp;gt;/lib/module/version_du_noyau&amp;lt;/tt&amp;gt;. Sinon, il faut donner le chemin où trouver le module. (Par exemple : &amp;quot;&amp;lt;tt&amp;gt;insmod -f ./module.o&amp;lt;/tt&amp;gt;&amp;quot; ; le &amp;quot;&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt;&amp;quot; permet de forcer le chargement d&#039;un module qui a été compilé avec une version du noyau différente de celle du noyau qui tourne actuellement.)&lt;br /&gt;
* &amp;lt;tt&amp;gt;rmmod module&amp;lt;/tt&amp;gt; : décharger un module, où &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est le nom donné par &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; : la commande la plus puissante. &amp;quot;&amp;lt;tt&amp;gt;modprobe module&amp;lt;/tt&amp;gt;&amp;quot; permet de charger en mémoire un module ainsi que tous les modules dont il dépend (en lisant le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;). &amp;quot;&amp;lt;tt&amp;gt;modprobe -r module&amp;lt;/tt&amp;gt;&amp;quot; permet d&#039;enlever un module de la mémoire, ainsi que tous les modules dont il dépend, sauf s&#039;ils sont utilisés par un autre module bien sûr.&lt;br /&gt;
&lt;br /&gt;
== Comment les recompiler / en ajouter ? ==&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés avec le noyau ===&lt;br /&gt;
&lt;br /&gt;
Voir la rubrique [[Kernel-kernel|noyau]]. Pour ajouter un module, il faut éditer la configuration du noyau, cocher l&#039;option &#039;M&#039; voulue dans la config du noyau, puis enregistrer la configuration noyau, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# make dep ; make modules ; make modules_install&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(Si vous modifiez également la configuration du noyau lui-même, par exemple en supprimant ou ajoutant des options qui sont incluses dans le noyau, vous devez aussi recompiler/réinstaller le noyau comme indiqué dans la rubrique [[Kernel-kernel|noyau]].)&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés en dehors du noyau ===&lt;br /&gt;
&lt;br /&gt;
Parfois, des modules peuvent être trouvés en dehors de l&#039;arborescence des sources du noyau. Par exemple, vous pouvez télécharger un driver pour certains winmodems (hé oui ça arrive !!!) sur [http://www.o2.net/~gromitkc/winmodem.html cette page]. &amp;lt;br /&amp;gt;Certains de ces modules sont livrés sous forme binaire, on peut alors s&#039;en servir tel quels (&amp;lt;tt&amp;gt;insmod -f ./le_module&amp;lt;/tt&amp;gt;). D&#039;autres sont livrés sous forme source sous license GPL ou non ; il faut d&#039;abord les compiler (lisez la doc fournie avec ; cela nécessite en général d&#039;avoir installé les sources du noyau).&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte des nouveaux modules ===&lt;br /&gt;
&lt;br /&gt;
Pour que les modules nouvellement installés soient pris en compte, si ce sont des modules &amp;quot;hors noyau&amp;quot;, il est bon de les copier dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau/misc&amp;lt;/tt&amp;gt; (pour les modules &amp;quot;noyau&amp;quot;, la commande &amp;quot;&amp;lt;tt&amp;gt;make modules_install&amp;lt;/tt&amp;gt;&amp;quot; fait ça) &amp;lt;br /&amp;gt;Il faut aussi faire un : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# depmod -a&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Cette commande remet à jour le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, en fonction du ou des nouveaux modules. &amp;lt;br /&amp;gt;Ainsi, vous pourrez charger le module par &amp;quot;&amp;lt;tt&amp;gt;modprobe le_module&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Comment faire pour les charger automatiquement ? ==&lt;br /&gt;
&lt;br /&gt;
=== ou : le chargeur de modules et &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Tout ça c&#039;est bien beau, mais si à chaque fois avant de regarder la télé, il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe bttv&amp;lt;/tt&amp;gt;&amp;quot;, ou si à chaque fois qu&#039;on veut lancer Xracer il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe 3dfx&amp;lt;/tt&amp;gt;&amp;quot;, ça va vite devenir fastidieux.&lt;br /&gt;
&lt;br /&gt;
Ce qu&#039;on veut, c&#039;est que le bon module se charge lorsqu&#039;on utilise le périphérique (&amp;lt;tt&amp;gt;/dev/le_periph&amp;lt;/tt&amp;gt;) correspondant. C&#039;est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt;. Cela se fait via son fichier de configuration &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; pour les versions de modutils antérieures à 2.3.5-1).&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un module soit chargé automatiquement, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ls -l /dev/le_periph&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;qui affiche une ligne ressemblant à : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;crw-------   1 user     group &#039;&#039;&#039;&amp;lt;u&amp;gt;144&amp;lt;/u&amp;gt;&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;12&amp;lt;/u&amp;gt;&#039;&#039; May 25  2000 /dev/le_periph&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Dans la ligne qui s&#039;affiche, noter le numéro dit &amp;quot;majeur&amp;quot;,  c&#039;est à dire le premier numéro qui suit le groupe, ici &amp;quot;&#039;&#039;&#039;144&#039;&#039;&#039;&amp;quot;. Notez ce numéro.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Le numéro majeur (ici &#039;&#039;&#039;144&#039;&#039;&#039;) sert à déterminer quel driver est nécessaire pour piloter ce périphérique, le numéro mineur (ici &#039;&#039;12&#039;&#039;) sert à différencier les périphériques utilisant un même driver.&lt;br /&gt;
&lt;br /&gt;
Editez le fichier &amp;lt;tt&amp;gt;/etc/modules.conf&amp;lt;/tt&amp;gt; dans votre éditeur de texte préféré et ajoutez une ligne : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-144 le_module&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;en remplaçant bien sûr 144 par votre numéro, et &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; par votre module. &amp;lt;br /&amp;gt;Par exemple, pour charger le module gérant la carte 3dfx, j&#039;ai dans mon &amp;lt;tt&amp;gt;modules.conf&amp;lt;/tt&amp;gt; la ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-107 3dfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Il existe des aliases prédéfinis pour remplacer &amp;lt;tt&amp;gt;char-major-xxx&amp;lt;/tt&amp;gt; pour les périphériques courants : &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt; pour la première carte ethernet (&amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; pour la suivante, etc.), &amp;lt;tt&amp;gt;parport_lowlevel&amp;lt;/tt&amp;gt; pour le port parallèle, &amp;lt;tt&amp;gt;sound&amp;lt;/tt&amp;gt; pour la carte son, &amp;lt;tt&amp;gt;midi&amp;lt;/tt&amp;gt; pour la partie midi de la carte son, etc.&lt;br /&gt;
&lt;br /&gt;
Si votre module a besoin d&#039;options, par exemple pour connaître une adresse ou une interruption, vous pouvez aussi ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;options le_module irq=5 dma=0 dma2=1 mpu_io=0x388 io=0x370&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Chaque module a ses propres options, reportez-vous à la documentation de votre module afin de les connaître.&lt;br /&gt;
&lt;br /&gt;
Enfin, si vous voulez lancer une commande avant ou après que le module soit chargé en mémoire, vous pouvez ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;pre-install le_module la_commande&amp;lt;/tt&amp;gt; , ou : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;post-install le_module la_commande&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voilà, c&#039;est tout, maintenant lorsqu&#039;un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;infos, regardez la page man de &amp;lt;tt&amp;gt;depmod&amp;lt;/tt&amp;gt;, et des autres programmes (&amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; : on peut faire des tas de choses &amp;quot;intéressantes&amp;quot; avec les modules, allez voir [http://www.safenetworks.com/Linux/modules.html cette page] par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n&#039;utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à [http://www.bruhat.net BooK] pour l&#039;info).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa et a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot le 25/05/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 25/05/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13739</id>
		<title>Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13739"/>
		<updated>2006-09-20T05:35:45Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* Modules livrés avec le noyau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Configurer votre noyau]]&lt;br /&gt;
= Les modules de Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les modules de Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Comment fonctionnent ces mystérieux modules ?&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Si vous ne savez pas ce que sont les modules, allez voir le glossaire !&lt;br /&gt;
&lt;br /&gt;
== A quoi ça sert ? ==&lt;br /&gt;
&lt;br /&gt;
; Bon, puisque vous avez pas été lire le glosssaire, voici la définition qui en est donnée :&lt;br /&gt;
: Les modules sont une façon qui a été trouvée pour rendre Linux (le noyau) plus modulaire (!) et plus léger. En effet, ce sont le plus souvent des drivers qui ont été &amp;quot;sortis&amp;quot; du noyau dans des fichiers séparés, et qui sont chargés en mémoire, soit automatiquement lorsqu&#039;on se sert du périphérique concerné, soit manuellement. Ils permettent de réduire la taille mémoire utilisée par le noyau lui-même. Le concept de modules permet aussi d&#039;ajouter des drivers de périphériques au système sans devoir recompiler le noyau.&lt;br /&gt;
&lt;br /&gt;
Bon, c&#039;est clair il me semble (normal, c&#039;est moi qui aie écrit ça ;). Les modules permettent aussi d&#039;ajouter des drivers distribués uniquement sous forme binaire ; on ne peut pas les recompiler, mais on peut s&#039;en servir (ce qui est assez intéressant finalement ;) Les modules ne sont pas que des drivers, d&#039;une façon générale, ça peut être tout morceau de code qu&#039;on a décidé d&#039;externaliser par rapport au noyau, comme bien sûr un driver, mais aussi un protocole de communication (par ex. &amp;lt;tt&amp;gt;ppp&amp;lt;/tt&amp;gt;) ou n&#039;importe quoi d&#039;autre.&lt;br /&gt;
&lt;br /&gt;
== Où se trouvent-ils ? ==&lt;br /&gt;
&lt;br /&gt;
Ils résident dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau&amp;lt;/tt&amp;gt;. exemple : &amp;lt;tt&amp;gt;/lib/modules/2.2.15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ce répertoire contient les dossiers suivants qui permettent de séparer les modules selon leur type : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| &amp;lt;tt&amp;gt;block/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques de type bloc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;fs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| systèmes de fichier (FAT, ext2, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;misc/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;net/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers des cartes réseaux et protocoles&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;scsi/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques SCSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdrom/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers CDROM non IDE (anciens CD-ROMs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipv4/&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ipv6/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| protocole IP v4 et v6(protocole réseau)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;pcmcia/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| modules pour gérer les cartes PCMCIA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;video/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| gestion des cartes video en console, framebuffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce répertoire peut contenir d&#039;autres dossiers, plus un fichier nommé &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande &amp;quot;depmod -a&amp;quot; placée dans les scripts de démarrage.&lt;br /&gt;
&lt;br /&gt;
== Comment les manipuler ? ==&lt;br /&gt;
&lt;br /&gt;
Avec les programmes &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; qui se situent dans &amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt; : voir quels modules sont chargés à l&#039;heure actuelle. Cette commande affiche la liste des modules chargés, les dépendances entre les modules chargés, et dit si les modules sont utilisés ou non.&lt;br /&gt;
* &amp;lt;tt&amp;gt;insmod module&amp;lt;/tt&amp;gt; : charger un module en mémoire. Si &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est spécifié sans extension (en général &amp;quot;&amp;lt;tt&amp;gt;.o&amp;lt;/tt&amp;gt;&amp;quot;), &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; cherchera le module dans des répertoires par défaut, en général &amp;lt;tt&amp;gt;/lib/module/version_du_noyau&amp;lt;/tt&amp;gt;. Sinon, il faut donner le chemin où trouver le module. (Par exemple : &amp;quot;&amp;lt;tt&amp;gt;insmod -f ./module.o&amp;lt;/tt&amp;gt;&amp;quot; ; le &amp;quot;&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt;&amp;quot; permet de forcer le chargement d&#039;un module qui a été compilé avec une version du noyau différente de celle du noyau qui tourne actuellement.)&lt;br /&gt;
* &amp;lt;tt&amp;gt;rmmod module&amp;lt;/tt&amp;gt; : décharger un module, où &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est le nom donné par &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; : la commande la plus puissante. &amp;quot;&amp;lt;tt&amp;gt;modprobe module&amp;lt;/tt&amp;gt;&amp;quot; permet de charger en mémoire un module ainsi que tous les modules dont il dépend (en lisant le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;). &amp;quot;&amp;lt;tt&amp;gt;modprobe -r module&amp;lt;/tt&amp;gt;&amp;quot; permet d&#039;enlever un module de la mémoire, ainsi que tous les modules dont il dépend, sauf s&#039;ils sont utilisés par un autre module bien sûr.&lt;br /&gt;
&lt;br /&gt;
== Comment les recompiler / en ajouter ? ==&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés avec le noyau ===&lt;br /&gt;
&lt;br /&gt;
Voir la rubrique [[Kernel-kernel|noyau]]. Pour ajouter un module, il faut éditer la configuration du noyau, cocher l&#039;option &#039;M&#039; voulue dans la config du noyau, puis enregistrer la configuration noyau, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# make dep ; make modules ; make modules_install&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(Si vous modifiez également la configuration du noyau lui-même, par exemple en supprimant ou ajoutant des options qui sont incluses dans le noyau, vous devez aussi recompiler/réinstaller le noyau comme indiqué dans la rubrique [[Kernel-kernel|noyau]].)&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés en dehors du noyau ===&lt;br /&gt;
&lt;br /&gt;
Parfois, des modules peuvent être trouvés en dehors de l&#039;arborescence des sources du noyau. Par exemple, vous pouvez télécharger un driver pour certains winmodems (hé oui ça arrive !!!) sur [http://www.o2.net/~gromitkc/winmodem.html cette page]. &amp;lt;br /&amp;gt;Certains de ces modules sont livrés sous forme binaire, on peut alors s&#039;en servir tel quels (&amp;lt;tt&amp;gt;insmod -f ./le_module&amp;lt;/tt&amp;gt;). D&#039;autres sont livrés sous forme source sous license GPL ou non ; il faut d&#039;abord les compiler (lisez la doc fournie avec ; cela nécessite en général d&#039;avoir installé les sources du noyau).&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte des nouveaux modules ===&lt;br /&gt;
&lt;br /&gt;
Pour que les modules nouvellement installés soient pris en compte, si ce sont des modules &amp;quot;hors noyau&amp;quot;, il est bon de les copier dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau/misc&amp;lt;/tt&amp;gt; (pour les modules &amp;quot;noyau&amp;quot;, la commande &amp;quot;&amp;lt;tt&amp;gt;make modules_install&amp;lt;/tt&amp;gt;&amp;quot; fait ça) &amp;lt;br /&amp;gt;Il faut aussi faire un : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# depmod -a&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Cette commande remet à jour le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, en fonction du ou des nouveaux modules. &amp;lt;br /&amp;gt;Ainsi, vous pourrez charger le module par &amp;quot;&amp;lt;tt&amp;gt;modprobe le_module&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Comment faire pour les charger automatiquement ? ==&lt;br /&gt;
&lt;br /&gt;
=== ou : le chargeur de modules et &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Tout ça c&#039;est bien beau, mais si à chaque fois avant de regarder la télé, il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe bttv&amp;lt;/tt&amp;gt;&amp;quot;, ou si à chaque fois qu&#039;on veut lancer Xracer il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe 3dfx&amp;lt;/tt&amp;gt;&amp;quot;, ça va vite devenir fastidieux.&lt;br /&gt;
&lt;br /&gt;
Ce qu&#039;on veut, c&#039;est que le bon module se charge lorsqu&#039;on utilise le périphérique (&amp;lt;tt&amp;gt;/dev/le_periph&amp;lt;/tt&amp;gt;) correspondant. C&#039;est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt;. Cela se fait via son fichier de configuration : &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un module soit chargé automatiquement, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ls -l /dev/le_periph&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;qui affiche une ligne ressemblant à : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;crw-------   1 user     group &#039;&#039;&#039;&amp;lt;u&amp;gt;144&amp;lt;/u&amp;gt;&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;12&amp;lt;/u&amp;gt;&#039;&#039; May 25  2000 /dev/le_periph&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Dans la ligne qui s&#039;affiche, noter le numéro dit &amp;quot;majeur&amp;quot;,  c&#039;est à dire le premier numéro qui suit le groupe, ici &amp;quot;&#039;&#039;&#039;144&#039;&#039;&#039;&amp;quot;. Notez ce numéro.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Le numéro majeur (ici &#039;&#039;&#039;144&#039;&#039;&#039;) sert à déterminer quel driver est nécessaire pour piloter ce périphérique, le numéro mineur (ici &#039;&#039;12&#039;&#039;) sert à différencier les périphériques utilisant un même driver.&lt;br /&gt;
&lt;br /&gt;
Editez le fichier &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; dans votre éditeur de texte préféré et ajoutez une ligne : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-144 le_module&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;en remplaçant bien sûr 144 par votre numéro, et &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; par votre module. &amp;lt;br /&amp;gt;Par exemple, pour charger le module gérant la carte 3dfx, j&#039;ai dans mon &amp;lt;tt&amp;gt;conf.modules&amp;lt;/tt&amp;gt; la ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-107 3dfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Il existe des aliases prédéfinis pour remplacer &amp;lt;tt&amp;gt;char-major-xxx&amp;lt;/tt&amp;gt; pour les périphériques courants : &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt; pour la première carte ethernet (&amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; pour la suivante, etc.), &amp;lt;tt&amp;gt;parport_lowlevel&amp;lt;/tt&amp;gt; pour le port parallèle, &amp;lt;tt&amp;gt;sound&amp;lt;/tt&amp;gt; pour la carte son, &amp;lt;tt&amp;gt;midi&amp;lt;/tt&amp;gt; pour la partie midi de la carte son, etc.&lt;br /&gt;
&lt;br /&gt;
Si votre module a besoin d&#039;options, par exemple pour connaître une adresse ou une interruption, vous pouvez aussi ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;options le_module irq=5 dma=0 dma2=1 mpu_io=0x388 io=0x370&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Chaque module a ses propres options, reportez-vous à la documentation de votre module afin de les connaître.&lt;br /&gt;
&lt;br /&gt;
Enfin, si vous voulez lancer une commande avant ou après que le module soit chargé en mémoire, vous pouvez ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;pre-install le_module la_commande&amp;lt;/tt&amp;gt; , ou : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;post-install le_module la_commande&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voilà, c&#039;est tout, maintenant lorsqu&#039;un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;infos, regardez la page man de &amp;lt;tt&amp;gt;depmod&amp;lt;/tt&amp;gt;, et des autres programmes (&amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; : on peut faire des tas de choses &amp;quot;intéressantes&amp;quot; avec les modules, allez voir [http://www.safenetworks.com/Linux/modules.html cette page] par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n&#039;utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à [http://www.bruhat.net BooK] pour l&#039;info).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot le 25/05/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 25/05/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13738</id>
		<title>Kernel-modules</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Kernel-modules&amp;diff=13738"/>
		<updated>2006-09-20T04:50:00Z</updated>

		<summary type="html">&lt;p&gt;Ftiercel : /* A quoi ça sert ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Configurer votre noyau]]&lt;br /&gt;
= Les modules de Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les modules de Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Comment fonctionnent ces mystérieux modules ?&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Si vous ne savez pas ce que sont les modules, allez voir le glossaire !&lt;br /&gt;
&lt;br /&gt;
== A quoi ça sert ? ==&lt;br /&gt;
&lt;br /&gt;
; Bon, puisque vous avez pas été lire le glosssaire, voici la définition qui en est donnée :&lt;br /&gt;
: Les modules sont une façon qui a été trouvée pour rendre Linux (le noyau) plus modulaire (!) et plus léger. En effet, ce sont le plus souvent des drivers qui ont été &amp;quot;sortis&amp;quot; du noyau dans des fichiers séparés, et qui sont chargés en mémoire, soit automatiquement lorsqu&#039;on se sert du périphérique concerné, soit manuellement. Ils permettent de réduire la taille mémoire utilisée par le noyau lui-même. Le concept de modules permet aussi d&#039;ajouter des drivers de périphériques au système sans devoir recompiler le noyau.&lt;br /&gt;
&lt;br /&gt;
Bon, c&#039;est clair il me semble (normal, c&#039;est moi qui aie écrit ça ;). Les modules permettent aussi d&#039;ajouter des drivers distribués uniquement sous forme binaire ; on ne peut pas les recompiler, mais on peut s&#039;en servir (ce qui est assez intéressant finalement ;) Les modules ne sont pas que des drivers, d&#039;une façon générale, ça peut être tout morceau de code qu&#039;on a décidé d&#039;externaliser par rapport au noyau, comme bien sûr un driver, mais aussi un protocole de communication (par ex. &amp;lt;tt&amp;gt;ppp&amp;lt;/tt&amp;gt;) ou n&#039;importe quoi d&#039;autre.&lt;br /&gt;
&lt;br /&gt;
== Où se trouvent-ils ? ==&lt;br /&gt;
&lt;br /&gt;
Ils résident dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau&amp;lt;/tt&amp;gt;. exemple : &amp;lt;tt&amp;gt;/lib/modules/2.2.15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ce répertoire contient les dossiers suivants qui permettent de séparer les modules selon leur type : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;BORDER&amp;quot;&lt;br /&gt;
| &amp;lt;tt&amp;gt;block/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques de type bloc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;fs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| systèmes de fichier (FAT, ext2, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;misc/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;net/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers des cartes réseaux et protocoles&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;scsi/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| périphériques SCSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdrom/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| drivers CDROM non IDE (anciens CD-ROMs)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipv4/&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ipv6/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| protocole IP v4 et v6(protocole réseau)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;pcmcia/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| modules pour gérer les cartes PCMCIA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;video/&amp;lt;/tt&amp;gt;&lt;br /&gt;
| gestion des cartes video en console, framebuffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce répertoire peut contenir d&#039;autres dossiers, plus un fichier nommé &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande &amp;quot;depmod -a&amp;quot; placée dans les scripts de démarrage.&lt;br /&gt;
&lt;br /&gt;
== Comment les manipuler ? ==&lt;br /&gt;
&lt;br /&gt;
Avec les programmes &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; qui se situent dans &amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt; : voir quels modules sont chargés à l&#039;heure actuelle. Cette commande affiche la liste des modules chargés, les dépendances entre les modules chargés, et dit si les modules sont utilisés ou non.&lt;br /&gt;
* &amp;lt;tt&amp;gt;insmod module&amp;lt;/tt&amp;gt; : charger un module en mémoire. Si &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est spécifié sans extension (en général &amp;quot;&amp;lt;tt&amp;gt;.o&amp;lt;/tt&amp;gt;&amp;quot;), &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; cherchera le module dans des répertoires par défaut, en général &amp;lt;tt&amp;gt;/lib/module/version_du_noyau&amp;lt;/tt&amp;gt;. Sinon, il faut donner le chemin où trouver le module. (Par exemple : &amp;quot;&amp;lt;tt&amp;gt;insmod -f ./module.o&amp;lt;/tt&amp;gt;&amp;quot; ; le &amp;quot;&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt;&amp;quot; permet de forcer le chargement d&#039;un module qui a été compilé avec une version du noyau différente de celle du noyau qui tourne actuellement.)&lt;br /&gt;
* &amp;lt;tt&amp;gt;rmmod module&amp;lt;/tt&amp;gt; : décharger un module, où &amp;quot;&amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt;&amp;quot; est le nom donné par &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;modprobe&amp;lt;/tt&amp;gt; : la commande la plus puissante. &amp;quot;&amp;lt;tt&amp;gt;modprobe module&amp;lt;/tt&amp;gt;&amp;quot; permet de charger en mémoire un module ainsi que tous les modules dont il dépend (en lisant le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;). &amp;quot;&amp;lt;tt&amp;gt;modprobe -r module&amp;lt;/tt&amp;gt;&amp;quot; permet d&#039;enlever un module de la mémoire, ainsi que tous les modules dont il dépend, sauf s&#039;ils sont utilisés par un autre module bien sûr.&lt;br /&gt;
&lt;br /&gt;
== Comment les recompiler / en ajouter ? ==&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés avec le noyau ===&lt;br /&gt;
&lt;br /&gt;
Voir la rubrique [kernel.php3 noyau]. Pour ajouter un module, il faut éditer la configuration du noyau, cocher l&#039;option &#039;M&#039; voulue dans la config du noyau, puis enregistrer la configuration noyau, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# make dep ; make modules ; make modules_install&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(Si vous modifiez également la configuration du noyau lui-même, par exemple en supprimant ou ajoutant des options qui sont incluses dans le noyau, vous devez aussi recompiler/réinstaller le noyau comme indiqué dans la rubrique [kernel.php3 noyau].)&lt;br /&gt;
&lt;br /&gt;
=== Modules livrés en dehors du noyau ===&lt;br /&gt;
&lt;br /&gt;
Parfois, des modules peuvent être trouvés en dehors de l&#039;arborescence des sources du noyau. Par exemple, vous pouvez télécharger un driver pour certains winmodems (hé oui ça arrive !!!) sur [http://www.o2.net/~gromitkc/winmodem.html cette page]. &amp;lt;br /&amp;gt;Certains de ces modules sont livrés sous forme binaire, on peut alors s&#039;en servir tel quels (&amp;lt;tt&amp;gt;insmod -f ./le_module&amp;lt;/tt&amp;gt;). D&#039;autres sont livrés sous forme source sous license GPL ou non ; il faut d&#039;abord les compiler (lisez la doc fournie avec ; cela nécessite en général d&#039;avoir installé les sources du noyau).&lt;br /&gt;
&lt;br /&gt;
=== Prise en compte des nouveaux modules ===&lt;br /&gt;
&lt;br /&gt;
Pour que les modules nouvellement installés soient pris en compte, si ce sont des modules &amp;quot;hors noyau&amp;quot;, il est bon de les copier dans &amp;lt;tt&amp;gt;/lib/modules/version_du_noyau/misc&amp;lt;/tt&amp;gt; (pour les modules &amp;quot;noyau&amp;quot;, la commande &amp;quot;&amp;lt;tt&amp;gt;make modules_install&amp;lt;/tt&amp;gt;&amp;quot; fait ça) &amp;lt;br /&amp;gt;Il faut aussi faire un : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# depmod -a&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Cette commande remet à jour le fichier &amp;lt;tt&amp;gt;modules.dep&amp;lt;/tt&amp;gt;, en fonction du ou des nouveaux modules. &amp;lt;br /&amp;gt;Ainsi, vous pourrez charger le module par &amp;quot;&amp;lt;tt&amp;gt;modprobe le_module&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Comment faire pour les charger automatiquement ? ==&lt;br /&gt;
&lt;br /&gt;
=== ou : le chargeur de modules et &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Tout ça c&#039;est bien beau, mais si à chaque fois avant de regarder la télé, il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe bttv&amp;lt;/tt&amp;gt;&amp;quot;, ou si à chaque fois qu&#039;on veut lancer Xracer il faut faire &amp;quot;&amp;lt;tt&amp;gt;modprobe 3dfx&amp;lt;/tt&amp;gt;&amp;quot;, ça va vite devenir fastidieux.&lt;br /&gt;
&lt;br /&gt;
Ce qu&#039;on veut, c&#039;est que le bon module se charge lorsqu&#039;on utilise le périphérique (&amp;lt;tt&amp;gt;/dev/le_periph&amp;lt;/tt&amp;gt;) correspondant. C&#039;est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt;. Cela se fait via son fichier de configuration : &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un module soit chargé automatiquement, faire : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ls -l /dev/le_periph&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;qui affiche une ligne ressemblant à : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;crw-------   1 user     group &#039;&#039;&#039;&amp;lt;u&amp;gt;144&amp;lt;/u&amp;gt;&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;12&amp;lt;/u&amp;gt;&#039;&#039; May 25  2000 /dev/le_periph&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Dans la ligne qui s&#039;affiche, noter le numéro dit &amp;quot;majeur&amp;quot;,  c&#039;est à dire le premier numéro qui suit le groupe, ici &amp;quot;&#039;&#039;&#039;144&#039;&#039;&#039;&amp;quot;. Notez ce numéro.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Le numéro majeur (ici &#039;&#039;&#039;144&#039;&#039;&#039;) sert à déterminer quel driver est nécessaire pour piloter ce périphérique, le numéro mineur (ici &#039;&#039;12&#039;&#039;) sert à différencier les périphériques utilisant un même driver.&lt;br /&gt;
&lt;br /&gt;
Editez le fichier &amp;lt;tt&amp;gt;/etc/conf.modules&amp;lt;/tt&amp;gt; dans votre éditeur de texte préféré et ajoutez une ligne : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-144 le_module&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;en remplaçant bien sûr 144 par votre numéro, et &amp;lt;tt&amp;gt;le_module&amp;lt;/tt&amp;gt; par votre module. &amp;lt;br /&amp;gt;Par exemple, pour charger le module gérant la carte 3dfx, j&#039;ai dans mon &amp;lt;tt&amp;gt;conf.modules&amp;lt;/tt&amp;gt; la ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;alias char-major-107 3dfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; :&lt;br /&gt;
: Il existe des aliases prédéfinis pour remplacer &amp;lt;tt&amp;gt;char-major-xxx&amp;lt;/tt&amp;gt; pour les périphériques courants : &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt; pour la première carte ethernet (&amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; pour la suivante, etc.), &amp;lt;tt&amp;gt;parport_lowlevel&amp;lt;/tt&amp;gt; pour le port parallèle, &amp;lt;tt&amp;gt;sound&amp;lt;/tt&amp;gt; pour la carte son, &amp;lt;tt&amp;gt;midi&amp;lt;/tt&amp;gt; pour la partie midi de la carte son, etc.&lt;br /&gt;
&lt;br /&gt;
Si votre module a besoin d&#039;options, par exemple pour connaître une adresse ou une interruption, vous pouvez aussi ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;options le_module irq=5 dma=0 dma2=1 mpu_io=0x388 io=0x370&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;Chaque module a ses propres options, reportez-vous à la documentation de votre module afin de les connaître.&lt;br /&gt;
&lt;br /&gt;
Enfin, si vous voulez lancer une commande avant ou après que le module soit chargé en mémoire, vous pouvez ajouter une ligne du type : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;pre-install le_module la_commande&amp;lt;/tt&amp;gt; , ou : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;post-install le_module la_commande&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voilà, c&#039;est tout, maintenant lorsqu&#039;un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;infos, regardez la page man de &amp;lt;tt&amp;gt;depmod&amp;lt;/tt&amp;gt;, et des autres programmes (&amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lsmod&amp;lt;/tt&amp;gt;, etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; : on peut faire des tas de choses &amp;quot;intéressantes&amp;quot; avec les modules, allez voir [http://www.safenetworks.com/Linux/modules.html cette page] par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n&#039;utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à [http://www.bruhat.net BooK] pour l&#039;info).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot le 25/05/2000.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 25/05/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ftiercel</name></author>
	</entry>
</feed>