Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
materiel:modules_linux [Le 05/09/2007, 16:23]
196.206.197.242
— (Version actuelle)
Ligne 1: Ligne 1:
  
- 
-====== Les modules Linux ====== 
- 
- 
- 
-===== Présentation ===== 
- 
-Un module est un morceau de code permettant d'​ajouter des fonctionnalités au noyau : pilotes de périphériques matériels, protocoles réseaux, etc... 
- 
-Il peut être chargé dynamiquement sans avoir besoin de recompiler le noyau (avec la commande ''​insmod''​ ou ''​modprobe''​) ou de redémarrer le système. 
- 
-Les modules sont exécutés dans l'​espace mémoire du noyau : 
-  * Ils possèdent le contrôle total de la machine 
-  * Ils peuvent détourner ou créer un appel système 
- 
-Un petit schéma pour mieux comprendre : 
- 
-{{materiel:​modules_linux.png|}} 
- 
- 
-===== Caractéristiques ===== 
- 
-  * Ajoutent une fonctionnalité donnée au noyau (**pilotes**,​ support système de fichier, etc...) 
-  * Peuvent être (dé)chargés à tout moment, quand leur fonctionnalité est requise. Une fois chargés, ils ont accès à tout le noyau. ​ 
-  * Aucune protection particulière. 
-  * Utiles pour garder une image du noyau à une taille minimum (essentiel pour les distributions GNU/Linux pour PCs). 
-  * Permettent de supporter l'​incompatibilité entre pilotes (on charge soit l'un soit l'​autre,​ mais pas les deux) 
-  * Permettent de fournir des pilotes binaires (mauvaise idée), utilisables sans avoir à recompiler le noyau. 
-  * Les modules permettent de développer des pilotes sans redémarrer:​ chargement, test, déchargement,​ recompilation,​ chargement... 
-  * Les modules (pilotes) peuvent aussi être compilés statiquement dans le noyau 
- 
-===== Gestion des modules ===== 
- 
- 
-==== Lister les modules actif ==== 
- 
- 
-On peut connaitre tous les modules actif en tapant ''​lsmod''​ dans un terminal (ajouter "| more" pour afficher page par page) : 
- 
-<​code>​ 
-$ lsmod | more 
-Module ​                 Size  Used by 
-rt2500 ​               176612 ​ 1 
-ppdev                   ​9220 ​ 0 
-speedstep_lib ​          ​4484 ​ 0 
-cpufreq_userspace ​      ​4696 ​ 0 
-cpufreq_stats ​          ​5636 ​ 0 
-freq_table ​             4740  1 cpufreq_stats 
-....more...(Taper ESPACE) 
-</​code>​ 
- 
-On voit que le module "​freq_table"​ est utilisé par "​cpufreq_stats"​. Il y a des dépendances entre les modules. Il faut en tenir compte lorsque l'on veut décharger des modules. 
- 
- 
-==== Information sur un module ==== 
- 
-La commande ''​modinfo''​ peut rendre de bons services : 
- 
-<​code>​ 
-$ modinfo rt2500 
-filename: /​lib/​modules/​2.6.15-28-386/​kernel/​drivers/​net/​wireless/​rt2500/​rt2500.ko 
-author: ​        ​http://​rt2x00.serialmonkey.com 
-description: ​   Ralink RT2500 802.11g WLAN driver 1.1.0 CVS 2005/07/10 
-license: ​       GPL 
-vermagic: ​      ​2.6.15-28-386 preempt 486 gcc-4.0 
-depends: 
-alias: ​         pci:​v00001814d00000201sv*sd*bc*sc*i* 
-srcversion: ​    ​87483C74300BD5B978A24E4 
-parm:           ​ifname:​Network device name (default ra%d) (charp)\\ 
-parm:           ​debug:​Enable level: accepted values: 1 to switch debug on, 0 to switch debug off. (int) 
-</​code>​ 
- 
-On voit que rt2500 s'​occupe de la gestion d'une interface wlan chipset Ralink rt2500 et on est bien content qu'​elle fonctionne. (cette interface s'​appelle ra*)\\ 
- 
- 
-Si l'on ne désire qu'une information précise, on peut spécifier le champ (field) à afficher avec l'​option -F. 
-Par exemple, si nous ne voulons voir que la description du module rt2500 : 
- 
-  $ modinfo rt2500 -F description 
-  Ralink RT2500 802.11g WLAN driver 1.1.0 CVS 2005/07/10 
- 
-Sachez cependant que tous les modules ne fournissent pas les même informations,​ et qu'il se peut que ce type de commande ne renvoi rien. Par exemple, le module //rt2500// n'a pas de champ "​version",​ alors que le module //8139too// en a un. 
-Il y a cependant des champs standards que tous les modules devrait avoir, comme **author**, **description**,​ **license**,​ **parm**, **depends**,​ et **alias**. 
- 
- 
- 
-==== Chargement/​Déchargement d'un module ==== 
- 
-Pour ce qui est du chargement et du déchargement d'un module, il faut utiliser la commande ''​modprobe''​ : 
- 
-=== Charger === 
- 
-Pour charger manuellement le module "​3c59x"​ (il y a de grandes chances qu'il soit chargé si vous en avez besoin...): 
- 
-  $ sudo modprobe -a 3c59x 
- 
-=== Decharger === 
- 
-Pour décharger le module "​3c59x"​ (imaginons que l'​interface eth0 soit inutile et que celle-ci soit gérée par "​3c59x"​...) 
- 
-  $ sudo modprobe -r 3c59x 
- 
-=== Lister === 
- 
-Voir la liste des modules (on peut aussi utiliser l'​utilitaire "​modconf"​ - cf plus bas) : 
- 
-  modprobe -l 
- 
-A utiliser avec "| grep" !! 
- 
-\\ 
- 
-==== Options d'un module ==== 
- 
-FIXME 
- 
-Comme nous l'​avons-vu plus haut, certains modules possèdent des options ("​parm"​). Ces options permettent un plus grand contrôle sur le module en lui-même. 
- 
-Ces options se chargent de plusieurs manières. Exemple : 
- 
-  modprobe snd_ens1371 joystick_port=1 
- 
-les "​parm"​ vous indique quoi mettre : 
- 
-  * int = entier 
-  * bool = booléen (0 ou 1) 
-  * array of int = plusieurs entier 
-  * array of bool = plusieurs bits 
- 
-FIXME 
- 
-Pour que cela soit pris en compte directement au lancement il faut éditer le fichier ''/​etc/​modprobe.d/​option''​ et y ajouter une ligne. 
- 
-Exemple : 
- 
-  options snd_ens1371 joystick_port=1 
- 
- 
- 
-==== Modules au démarrage ==== 
- 
-Il est possible de spécifier des modules à charger au démarrage, même si aucun périphérique que pilote ces modules n'a été trouvé. 
- 
-Cela peut être utile pour les périphériques ne permettant pas d'​auto-détection,​ comme les périphériques sur port parallèle. 
- 
-La liste des modules à charger explicitement au démarrage est dressée dans le fichier ''/​etc/​modules''​. Chaque ligne de ce fichier représente un module à charger, sauf les lignes vides ou commençant par un #. 
-Vous pouvez ajouter un module en [[tutoriel:​comment_editer_un_fichier|éditant le fichier]] ''/​etc/​modules''​ avec les droits d'​administration. 
- 
-Par exemple, si vous avez un lecteur Zip en parallèle, il vous sera sans doutes utile d'​ajouter le module **ppa** dans cette liste. Chez moi, le fichier ''/​etc/​modules''​ ressemble à ça : 
-<​file>#​ /​etc/​modules:​ kernel modules to load at boot time. 
-# 
-# This file contains the names of kernel modules that should be loaded 
-# at boot time, one per line. Lines beginning with "#"​ are ignored. 
- 
-ppa 
-lp 
- 
-</​file>​ 
- 
- 
-<note important>​ 
-Les modules sont chargés **dans l'​ordre dans lequel ils sont listés**. Faites bien attention à cela, car l'​ordre peut être important dans certains cas. 
-</​note>​ 
- 
- 
-==== Empêcher le chargement d'un module ==== 
- 
-Il peut parfois être utile d'​empêcher le noyau de charger un module automatiquement,​ par exemple si celui-ci pose des problèmes de stabilité. Un module prohibé ne sera pas chargé au démarrage ou au branchement à chaud du périphérique,​ mais pourra quand-même être chargé à la main, par exemple à l'aide de **modprobe**. 
- 
-La liste des modules que le noyau n'a pas le droit de charger se trouve dans le fichier ''/​etc/​modprobe.d/​blacklist''​. 
- 
-La structure de ce fichier est simple ; une ligne est construite comme suit : 
-<​file>​ 
-blacklist module 
-</​file>​ 
-où //module// est le nom du module prohibé. 
- 
-Pour rajouter un module prohibé, [[tutoriel:​comment_editer_un_fichier|éditez le fichier]] ''/​etc/​modprobe.d/​blacklist''​ avec les droits administrateur (root), et ajoutez une ligne structurée comme ci-dessus, en fin de fichier par exemple. 
- 
-Par exemple, si le module **r818x** vous pose problème, il faut rajouter la ligne suivante au fichier ''/​etc/​modprobe.d/​blacklist''​ : 
-<​file>​ 
-blacklist r818x 
-</​file>​ 
- 
- 
- 
-==== Lier un module à un périphérique ==== 
- 
-Il est possible de lier un module à un périphérique de façon à ce que le noyau puisse charger automatiquement ce module lors de la détection du périphérique,​ tout en respectant les deux règles présentées ci-dessus. 
- 
-FIXME: si quelqu'​un connaissant bien le fonctionnement des **alias** pouvait compléter ça ? 
- 
- 
- 
- 
-===== Utilitaires pour les modules ===== 
- 
- 
- 
- 
- 
- 
-==== Modconf ==== 
- 
-Modconf est un utilitaire très puissant permettant de voir et de configurer les modules disponibles. 
- 
-Pour vous procurer Modconf, il vous suffit d'​[[tutoriel:​comment_installer_un_paquet|installer le paquet]] **modconf** 
- 
-Modconf s'​utilise en console. Pour le lancer avec les droits administrateur,​ ce qui est nécessaire pour pouvoir appliquer des changements,​ lancez : 
- 
-  $ sudo modconf 
- 
-Et vous aurez quelque-chose ressemblant de près à : 
- 
-{{:​modconf.png}} 
- 
-Je vous conseille de mettre la fenêtre en plein-écran pour une meilleure lisibilité. 
- 
-==== module-assistant ==== 
- 
-FIXME: 
- 
-module-assistant : 
- 
-Pour installer module-assistant,​ [[tutoriel:​comment_installer_un_paquet|installez le paquet]] **module-assistant** 
- 
-<​code>​ 
-$ sudo module-assistant 
-</​code>​ 
- 
-==== Hardinfo ==== 
- 
-Hardinfo n'est pas vraiment un programme spécifique pour les modules, mais il propose un grand nombres d'​informations sur votre ordinateur, dont les modules utilisés par les périphériques. 
- 
-Pour vous le procurer, il vous suffit d'​[[tutoriel:​comment_installer_un_paquet|installer le paquet]] **hardinfo** 
- 
-Vous le trouverez ensuite dans **Applications => Outils système => Hardinfo** 
- 
-Plus d'​infos : [[http://​macsim.labolinux.net/​index.php/​2007/​05/​14/​90-hardinfo-des-informations-sur-le-hardware-de-votre-puic-puic|ici]] 
- 
-===== Liens ===== 
- 
-http://​www.lea-linux.org/​cached/​index/​Kernel-modules.html 
- 
------ 
-//​Contributeurs : [[:​utilisateurs:​kmeleon|Kmeleon]],​ [[:​utilisateurs/​adam0509]],​ [[:​utilisateurs:​Ban]]//​ 
  • materiel/modules_linux.1189002216.txt.gz
  • Dernière modification: Le 18/04/2011, 14:47
  • (modification externe)