Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
materiel:modules_linux [Le 24/05/2007, 02:42] 213.103.216.8 |
— (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 est on est bien content qu'elle fonctionne. (cette interface s'appelle ra*)\\ | ||
- | |||
- | |||
- | ==== Chargement/Dechargement 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 == | ||
- | |||
- | Voir la version d'un module: | ||
- | |||
- | $ sudo modprobe -V 3c59x | ||
- | |||
- | == Lister == | ||
- | |||
- | Voir la liste des modules (on peut aussi utiliser l'utilitaire "modconf" - cf plus bas) : | ||
- | |||
- | ~$ sudo modprobe -l | ||
- | |||
- | |||
- | ==== 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 naviguer dans | ||
- | Une autre approche consiste à utiliser l'outil dédié modconf:\\ | ||
- | |||
- | <code> | ||
- | $ sudo apt-get install modconf | ||
- | $ sudo modconf | ||
- | </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]] |