1 / 32

A la fin vous saurez définir: - définir ce qu'est un module,

Les modules. A la fin vous saurez définir: - définir ce qu'est un module, - décrire le fonctionnement modulaire du système, - configurer un système avec des modules. Plan. Qu'est ce qu'un module ? Mode de fonctionnement des modules, Utiliser les modules, Installer un module,

lyre
Download Presentation

A la fin vous saurez définir: - définir ce qu'est un module,

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Les modules • A la fin vous saurez définir: • - définir ce qu'est un module, • - décrire le fonctionnement modulaire du système, • - configurer un système avec des modules.

  2. Plan • Qu'est ce qu'un module ? • Mode de fonctionnement des modules, • Utiliser les modules, • Installer un module, • Fichiers et commandes de configuration.

  3. Sources de documentations • Linux Gazette N° 29 et 37 • Echo de Linux • Mini-howto • La pages du manuel • La documentation du Kernel

  4. Qu'est ce qu'un module ? • Un module est une extension du système d'exploitation. • Permet l'évolution d'une configuration, sans avoir à recompiler le noyau. • Exemple: Vous installez une nouvelle chaîne SCSI pour supporter une unité de sauvegarde. Vous pouvez utiliser les modules pour prendre en charge les nouveaux équipements, sans avoir besoin de recompiler le noyau.

  5. Pourquoi des modules ? • Avantages: • Les modules simplifient la mise en œoeuvre d'extensions, (configuration modulaire), • Réduction la taille du noyau car les extensions ne sont pas compilées directement avec (noyau monolithique), • Ils sont chargés par le système en fonction de ses besoins, • Utilisation plus rationnelle de la mémoire.

  6. Mode de fonctionnement des modules Programmes utilisateurs Modules M0.M1...…Mm Mode Noyau Les modules sont utilisés par le noyau pour répondre aux besoins des programmes systèmes ou utilisateurs, ils sont chargé dynamiquement par le système en fonction d'un besoin.

  7. Exemple Lire/Ecrire NFS SMB Son Nfs Smbfs Audio insmod pour charger un module - rmmod pour décharger un module Mode Noyau Une application passe une requête, le système charge le module approprié pour répondre à la requête.

  8. Où touver des modules ? • Http://www.pi.se/blox/modules/index.html • Attention au numéro de version: • NomModule.x.y.z • Voir dans /usr/lib/2.0.x/ • Exemple: /usr/lib/2.0.32/fs/nfs pour la version 2 du noyau

  9. Chargement des modules Deux solutions possibles • Manuellement en mode commande • Automatique en fonction d'un besoin système grâce à un daemon. (kerneld, Kmod) Des exemples sont étudiés plus loin. Attention: La présentation s'appuie sur Kerneld. Depuis la version 2.2 du noyau ce daemon est remplacé par Kmod.

  10. Chargement d'un module avec kerneld • Voici ce qui se passe: • 1 Le noyau remarque qu'une caractéristique demandée n'est pas dans la partie résidente du noyau. • 2 Le noyau envoi un message à kerneld, contenant une description symbolique de la caractéristique demandée. • 3 Le daemon kerneld demande ensuite à modprobe de charger le module qui convient à cette description symbolique. • 4 modprobe regarde dans la table de traduction interne "alias" pour voir s'il y a quelque chose qui correspond. Cette table peut être reconfigurée et étendue en ayant des lignes "alias" dans "/etc/conf.modules". • 5 Kerneld demande à insmod d'insérer le(s) module(s) que modprobe a considéré comme nécessaire(s) pour le noyau. Chaque module sera configuré selon les lignes "options" dans "/etc/conf.modules". • 6 modprobe sort et kerneld demande au noyau si la requête a réussie (ou échouée...) • 7 Le noyau utilise ensuite la caractéristique nouvellement installée exactement comme si elle avait été configurée dans le noyau comme partie "résidente". • 8 Lorsque le module installé automatiquement n'est plus utilisé pendant une période d'une minute, il est automatiquement retiré du noyau. • Ceci conduit le noyau à utiliser la quantité minimale de mémoire et ce à tout instant, la rendant ainsi disponible pour les autres processus actifs.

  11. Chargement d'un module manuellement /sbin/insmod nfs /* charger le module nfs */ lsmod /* afficher les modules chargés */ Voici le résultat: Module Pages Used by nfs 12 4 tulip 5 1 (autoclean) /sbin/rmmod /* décharger les modules */ L 'opération peut vite devenir fastidieuse. Il faut automatiser avec des scripts, mais il s'ensuit une maintenance.

  12. Stratégie d'utilisation des modules ? • Compilez le noyau avec les fonctions qui sont toujours utilisées (accès disques, réseau, ppp…) • Utilisez les modules pour les fonctions utilisées ponctuellement, (nfs, smb, vfat, ntfs...) • Utilisez les modules pour les pilotes de périphériques. (cela permet de mettre à jour le pilote ou de changer de périphérique sans recompiler le noyau)

  13. Ne pas utiliser les modules avec: • Le support du système de fichiers (SGF) de votre partition racine (ext2fs) • Le support des disques durs (IDE et SCSI) et des SGF utilisés (ext2fs) • Le support de réseau (CONFIG_NET), • Les options TCP/IP (CONFIG_NET) mais sans inclure les gestionnaires (pilotes de cartes), • Les options de base de votre système...

  14. Utiliser les modules avec : • Les gestionnaires SCSI de haut niveau: disque, bande, cdrom, périphériques génériques, • Les pilotes de cartes réseau, • Les pilotes de CD ROM, • Les services les moins utilisés ou volumineux ...

  15. Compilation du noyau • 1 - make config • 2 - intégrer la gestion des modules (options) • 3 - make dep; make clean • 4 - make zImage (création de l'image) • 5 - make modules (compilation des modules) • 6 - make modules_install (installation des modules) • 7 - Configurer les dépendances (certains modules doivent être chargés avant les autres.)

  16. Compilation du noyau Compiler le noyau avec le support des modules.

  17. Compilation du noyau • Le noyau doit supporter la gestion des modules. … Enable loadable config module support (CONFIG_MODULES) [y/n/?] Set version information on all symbols for modules (CONFIG_MODVERSIONS) N/y/?] Kernel daemon support (e.g.autoload of modules) (CONFIG_KERNEL) [Y/n/?] ... Commentaires: Ligne 1 - active la prise en charge des modules par le noyau Ligne 2 - à N, les modules devront être recompilés à chaque mise à jour du noyau. Les modules compilés pour un noyau 2.0.n ne fonctionneront pas avec un noyau 2.0.n+1, Ligne 3 - cette option active le chargement dynamique des modules. Il faudra activer IPC système V pour la communication inter processus ...

  18. Compilation du noyau • 1 - toujours rechercher une taille minimum pour le noyau, • 2 - compresser si besoin est le noyau compilé, • 3 - doit pouvoir tenir sur une disquette. /* Pour obtenir une image compressée du noyau, voir le guide du RooTard */

  19. Kerneld Programmes utilisateurs Autres daemons kerneld Canal de communication inter processus IPC Modprob charge et décharge le module nfs.o Mode Noyau Kerneld permet de charger ou décharger les modules à la demande. Les modules sont déchargés après un temps d ’inactivité. Ce temps est configurable avec le paramètre « delay ». Man kerneld.

  20. Compilation du noyau Utiliser des options modulaires

  21. Compilation des modules • Une fois votre noyau compilé, vous devez compiler les modules avec la commande : • make modules • Cette commande compilera tous les modules et mettra à jour le répertoire linux/modules. Vous trouverez dns ce répertoire, les liens symboliques pointant sur les divers fichiers objet.

  22. Installation des modules • Maintenant, après que vous ayez créé tous vos modules, vous devez les installer avec la commande : • make modules_install • Ceci copiera tous les nouveaux modules vers des sous-répertoires dans "/lib/modules/version_de_noyau/", ou "version_de_noyau" est la valeur actuelle du noyau. (voir commande uname -r ou uname --help). • Aussitôt que vous avez redémarré le nouveau noyau, vous pouvez installer et retirer des modules à la demande avec les utilitaires: "insmod" et "rmmod".

  23. Création des dépendances • La création des dépendances dépend des distributions de Linux: • /etc/rc.d/rc.modules • /etc/rc.d/init.d/modules.init • /etc/rc.d/rc.sysinit (Redhat) On utilise la commande « depmod -a ». Voir les instructions dans le mini-Howto.

  24. Les commandes • insmod (charger un module) • lsmod ( afficher les modules chargés) • rmmod (décharger un module)

  25. Les commandes • insmod: • Insère un module dans le noyau en cours d'exécution. Vous indiquez comme paramètres, le nom du module à charger, et le chemin d'accès complet au module. Par exemple, pour installer le gestionnaire de fichiers msdos, vous devez taper la commande suivante: • insmod /lib/modules/1.x.xx/fs/msdos.o

  26. Les commandes • rmmod: • Quand vous avez fini d'utiliser un module, vous pouvez le décharger. Vous devrez passer à cette commande comme paramètre, le nom du module, par exemple pour retirer le gestionnaire msdos tapez la commande: • rmmod msdos.o

  27. Les commandes • lsmod: • Vous permet d'afficher la liste des modules en cours d'utilisation. Vous aurez les noms des modules, et le nombre de pages mémoires utilisées pour chaque module.

  28. Les commandes ModProb • modprob est une extension de insmod, • il permet de s ’affranchir de la version du noyau ou des dépendances, • on utilise la commande « /sbin/modprobe module ».

  29. Les modules Les commandes Depmod • Pour réussir à utiliser modprobe, placez la commande suivante dans votre script /etc/rc.d/rc.S. • /sbin/depmod -a • Cette commande calcule les dépendances entre les différents modules, ensuite, si vous tapez par exemple : • /sbin/modprobe umsdos • vous chargerez automatiquement à la fois les modules msdos et umsdos, puisque umsdos ne tourne que ci le module msdos est actif.

  30. Les fichiers - /etc/modules.conf Ce fichier contient les chemins où se trouvent les modules, ainsi que leurs alias. • Exemple de fichier /etc/modules.conf • alias scsi_hostadapter aha1542 # Votre adaptateur SCSI • alias eth0 3c509 # Votre adaptateur réseau • # Vous pouvez avoir besoin d'une ligne d'options" pour certains • # adaptateurs de réseaux • options 3c509 io=0x300 irq=10 • # Vous pouvez avoir besoin d'une ligne d'options" • # pour d'autres modules • options cdu31a cdu31a_port=0x1f88 sony_pas_init=1 • Vous devez ajouter aussi ces lignes : • alias net-pf-3 off # aucun module ax25 n'est (encore) disponible • alias net-pf-4 off # si vous n'utilisez pas le module ipx • alias net-pf-5 off # si vous n'utilisez pas le module appletalk

  31. Les modules Les fichiers - /proc/modules Ce fichier donne la liste des modules chargés more modules /* affichage des modules chargés */ tulip 5 1 (autoclean) /sbin/insmod minix /* chargement du support du SGF minix */ more modules /* le module minix est chargé */ minix 6 0 tulip 5 1 (autoclean) /sbin/rmmod minix /* chargement du support du SGF minix */ more modules /* c ’est fait */ tulip 5 1 (autoclean)

  32. Conclusion • Vous avez vu: • ce qu'est un module, • le fonctionnement modulaire du système, • comment configurer l'utilisation des modules.

More Related