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édentesRévision précédente
Prochaine révision
Révision précédente
materiel:modules_linux [Le 15/08/2007, 03:25] – changement de la commande pour la version du module qui était FAUSSE, elle donnait la version des modutils. À voir s'il ne faut pas restructurer ça autrement pour que ça soit plus cohérent et donner + d'infos sur modinfo. Banmateriel:modules_linux [Le 22/03/2008, 18:03] (Version actuelle) – suppression suite à redirection YoBoY
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*)\\ 
- 
- 
- 
- 
- 
-==== 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 
- 
-== Voir la version == 
- 
-Pour voir la version d'un module, on utilise la commande ''modinfo'' avec le paramètre approprié (sans paramètre pour toutes le informations à propos du module) : 
- 
-  $ modinfo -F version 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émarrages ==== 
- 
-Il est possible de configurer les modules chargés au démarrage de la machine ou lorsque l'on branche un périphérique à chaud. Pour ce qui est des modules à charger au démarrage, on peut éditer le fichier /etc/modules (avec votre éditeur, au choix : [[:nano]], [[:gedit]], [[:kate]], [[:mousepad]]): 
- 
-<code> 
-$ sudo gedit /etc/modules 
-# /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. 
-  
-lp 
-psmouse 
-</code> 
- 
-Rajouter les modules concernés dans le fichier. 
- 
- 
- 
-==== Empécher le chargement d'un module ==== 
- 
-Il faudra éditer le fichier blacklist : 
- 
-<code> 
-$ sudo gedit /etc/modprobe.d/blacklist 
-# This file lists those modules which we don't want to be loaded by 
-# alias expansion, usually so some other driver will be loaded for the 
-# device instead. 
- 
-# evbug is a debug tool that should be loaded explicitly 
-blacklist evbug 
- 
-# these drivers are very simple, the HID drivers are usually preferred 
-blacklist usbmouse 
-blacklist usbkbd 
-... 
-</code> 
- 
-Rajouter les modules concernés. 
-D'autres méthodes existent. 
- 
- 
- 
- 
-===== Utilitaires pour les modules ===== 
- 
- 
- 
- 
-==== Modconf ==== 
- 
-Modconf est un utilitaire très puissant permettant de voir les modules disponibles  : 
- 
-<code> 
-$ sudo apt-get install modconf 
-$ sudo modconf 
-</code> 
- 
-==== module-assistant ==== 
- 
-module-assistant : 
- 
-<code> 
-$ sudo apt-get install module-assistant 
-$ sudo module-assistant 
-</code> 
- 
-==== Hardinfo ==== 
- 
-Pas vraiment un programme spécifique pour les modules, mais un programme bien pratique pour connaître des informations sur votre ordinateur : 
- 
-<code> 
-$ sudo apt-get install hardinfo 
-</code> 
- 
-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]]