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 30/03/2007, 19:06]
ziouplaboum
— (Version actuelle)
Ligne 1: Ligne 1:
-Rédigé par [[utilisateurs:​kmeleon|Kmeleon]] 
  
- 
-====== 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 
- 
- 
-===== 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 ==== 
- 
- 
-La commande lsmod:\\ 
- 
-  ~% lsmod 
-  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 
-  .......sortie coupée......''​ 
- 
-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. 
- 
-==== Chargement/​Dechargement d'un module ==== 
- 
-Déja pour avoir des infos sur un module, la commande modinfo rends de bons services:\\ 
- 
-  user@machine ~% 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) 
- 
-On voit que rt2500 s'​occupe de la gestion d'une interface wlan chipset Ralink rt2500 est on est bien content qu'​elle fonctionne. (cette interface s'​appelle ra*)\\ 
- 
-Pour ce qui est du chargement et du déchargement d'un module, il faut s'​informer un peu sur la commande modprobe: 
- 
-  user@machine ~% man modprobe 
- 
-Pour charger manuellement le module "​3c59x"​ (il y a de grandes chances qu'il soit chargé si vous en avez besoin...): 
- 
-  user@machine ~% sudo modprobe -a 3c59x 
- 
-Pour décharger le module "​3c59x"​ (imaginons que l'​interface eth0 soit inutile et que celle-ci soit gérée par "​3c59x"​...) 
- 
-  user@machine ~% sudo modprobe -r 3c59x 
- 
-Voir la version d'un module: 
- 
-  user@machine ~% sudo modprobe -V 3c59x 
- 
-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:​ 
- 
-  user@machine ~% vim /​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 
- 
-Rajouter les modules concernés dans le fichier.\\ 
- 
-Une autre approche consiste à utiliser l'​outil dédié modconf:\\ 
- 
-  user@machine ~% apt-cache show modconf 
-  user@machine ~% sudo apt-get install modconf 
-  user@machine ~% man modconf 
- 
-FIXME! 
- 
-==== Empécher le chargement d'un module ==== 
- 
-Imaginons que vim (ou nano, emacs, gedit, kate...) soit votre éditeur préféré: ​ 
- 
-  user@machine ~% sudo vim /​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 
-  ... 
- 
-Rajouter les modules concernés. 
-D'​autres méthodes existent. 
  • materiel/modules_linux.1175274389.txt.gz
  • Dernière modification: Le 18/04/2011, 14:48
  • (modification externe)