32
• 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. 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

Embed Size (px)

Citation preview

Page 1: 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

• 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.

Les modules

Page 2: 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

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

Plan

Page 3: 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

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

Sources de documentations

Page 4: 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

• 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.

Qu'est ce qu'un module ?

Page 5: 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

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.

Pourquoi des modules ?

Page 6: 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

Programmes utilisateurs

Mode Noyau

Modules M0.M1...…Mm

Mode de fonctionnement des modules

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.

Page 7: 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

Mode Noyau

Nfs Smbfs Audio

NFS SonLire/Ecrire SMB

insmod pour charger un module - rmmod pour décharger un module

Exemple

Une application passe une requête, le système charge le module approprié pour répondre à la requête.

Page 8: 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

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

Où touver des modules ?

Page 9: 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

• Manuellement en mode commande

• Automatique en fonction d'un besoin système grâce à un daemon. (kerneld, Kmod)

Deux solutions possibles

Des exemples sont étudiés plus loin.

Chargement des modules

Attention: La présentation s'appuie sur Kerneld. Depuis la version 2.2 du noyau ce daemon est remplacé par Kmod.

Page 10: 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

• 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.

Chargement d'un module avec kerneld

Page 11: 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

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 bynfs 12 4tulip 5 1 (autoclean)

/sbin/rmmod /* décharger les modules */

L 'opération peut vite devenir fastidieuse. Il faut automatiseravec des scripts, mais il s'ensuit une maintenance.

Page 12: 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

• 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)

Stratégie d'utilisation des modules ?

Page 13: 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

• 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...

Ne pas utiliser les modules avec:

Page 14: 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

• 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 ...

Utiliser les modules avec :

Page 15: 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

• 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.)

Compilation du noyau

Page 16: 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

Compilation du noyau

Compiler le noyau avec le support des modules.

Page 17: 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

• 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 noyauLigne 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

...

Compilation du noyau

Page 18: 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

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 */

Page 19: 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

Mode Noyau

nfs.o

Programmes utilisateurs

kerneld Autres daemons

Canal de communicationinter processus

IPC

Modprob charge et décharge le module

Kerneld permet de charger ou décharger les modules à la demande. Les modules sont déchargés après un tempsd ’inactivité. Ce temps est configurable avec le paramètre « delay ». Man kerneld.

Kerneld

Page 20: 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

Compilation du noyau

Utiliser des options modulaires

Page 21: 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

• 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.

Compilation des modules

Page 22: 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

• 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".

Installation des modules

Page 23: 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

• 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.

Création des dépendances

Page 24: 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

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

Les commandes

Page 25: 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

• 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

Les commandes

Page 26: 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

• 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

Les commandes

Page 27: 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

• 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.

Les commandes

Page 28: 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

• 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 ».

Les commandes

ModProb

Page 29: 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

• 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.

Les modulesLes commandes

Depmod

Page 30: 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

• 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

Ce fichier contient les chemins où se trouvent les modules, ainsi que leurs alias.

Les fichiers - /etc/modules.conf

Page 31: 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

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 0tulip 5 1 (autoclean)/sbin/rmmod minix /* chargement du support du SGF minix */

more modules /* c ’est fait */tulip 5 1 (autoclean)

Les modulesLes fichiers - /proc/modules

Page 32: 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

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

Conclusion