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 27/03/2007, 14:55] 81.248.202.99 |
— (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:\\ | ||
- | |||
- | ~% 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: | ||
- | |||
- | ~% man modprobe | ||
- | |||
- | 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 | ||
- | |||
- | 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 d'un module: | ||
- | |||
- | ~% 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. TODO | ||
- | |||
- | Une autre approche consiste à utiliser l'outil dédié modconf:\\ | ||
- | |||
- | ~% apt-cache show modconf | ||
- | ~% sudo apt-get install modconf | ||
- | ~% man modconf | ||
- | |||
- | FIXME! | ||
- | |||
- | ==== Empécher le chargement d'un module ==== |