4. Les modules

Contenu de cette section

Ce chapitre fournit des détails spécifiques sur le support des modules chargeables et sur la manière dont ces modules sont utilisés avec le SCSI.

4.1 Informations générales

Les modules chargeables permettent à l'utilisateur ou à l'administrateur du système d'étendre les fonctionnalités du noyau en y chargeant des fichiers objet. L'utilisation la plus courante des modules est l'ajout de pilotes pour de nouveaux périphériques ou la prise en compte de différents types de systèmes de fichiers.

L'utilisation des modules pour le SCSI présente plusieurs avantages. Un de ceux-ci est que le responsable d'un parc important de machines n'a à gérer qu'un seul noyau pour tout le parc et n'a plus qu'à charger les modules nécessaires machine par machine.

Pour ceux qui ont l'intention de créer une nouvelle distribution, il est possible de lancer un script depuis la disquette de démarrage qui va demander à l'utilisateur quels modules sont à charger. Cela permet de gagner de la mémoire (qui serait gaspillée si le noyau contenait tous les pilotes) et cela réduit le risque que l'auto-détection d'une carte vienne perturber le fonctionnement d'autres cartes.

Les modules sont parfaits pour les portables, qui ont tendance à être moins fournis que leurs grands frères de bureaux. Dans ce cas, un noyau aussi réduit que possible avec chargement des modules à la demande est l'idéal. De plus, les modules sont bien adaptés au mécanisme des cartes PCMCIA, puisqu'ils peuvent être chargés puis déchargés au gré des insertions/retraits des cartes PCMCIA. (Note : actuellement, les pilotes qlogic et 152x supportent le PCMCIA).

Un dernier avantage des modules est que les développeurs de pilotes ont plus de facilité à mettre au point et tester leurs pilotes si ceux-ci sont sous forme de modules (il n'est plus nécessaire de redémarrer la machine à chaque essai, à condition bien sûr que le pilote ne soit pas buggé au point qu'il ait mis en rideau le PC).

Mais, il y a toujours un mais, les modules ont aussi leurs limitations. Si votre partition racine (root) est sur un périphérique SCSI, vous ne serez pas capable d'utiliser les versions 'modularisées' des pilotes SCSI nécessaires à l'accès à votre disque. Cela est dû au fait que le noyau doit être capable de monter la partition racine avant de pouvoir charger le moindre module depuis le disque. Cela étant, des réflexions sont en cours pour modifier le chargeur et le noyau de manière à ce que celui-ci soit capable de précharger des modules avant d'essayer de monter la partition racine. Il est fort probable qu'à l'avenir la limitation actuelle ne soit plus de mise.

4.2 Le support des modules dans les noyaux 1.2.N

Les modules noyau pour le SCSI sont partiellement supportés dans la série 1.2.N du noyau. Alors qu'aucun des pilotes de haut niveau (disque, bande, etc.) ne peut être modularisé, la plupart des pilotes de bas niveau peuvent être chargés et déchargés à la demande (par exemple les 1542 et 1522). Chaque fois qu'un pilote de bas niveau est chargé, il commence par rechercher les cartes qu'il peut gérer. Ensuite, pour chaque carte détectée, le bus SCSI est scruté et des structures de données internes sont renseignées, si bien qu'il sera possible d'utiliser tous les périphériques attachés aux cartes reconnues.

Lorsque vous en avez terminé avec un pilote de bas niveau, celui-ci peut être déchargé. Gardez à l'esprit que l'utilisation d'un pilote se fait au travers des montages, des fichiers ouverts, etc. Si vous essayez de décharger un module en cours d'utilisation (utilitaire rmmod), le noyau va refuser le retrait du pilote. Lorsqu'un pilote est déchargé, toutes ses structures internes sont libérées, si bien que le système retourne dans l'état où il se trouvait avant l'insertion du module. Vous pourrez recharger le pilote plus tard si vous le désirez.

4.3 Le support des modules dans les noyaux 1.3.N

Le code SCSI a été complètement modularisé dans les noyaux 1.3.N. Vous pouvez donc démarrer avec un noyau n'ayant aucun support SCSI, les modules se chargeant par la suite, jusqu'à ce que tous les périphériques SCSI possibles soient accessibles.

Si vous le voulez, vous pouvez intégrer dans le noyau une certaine partie du code SCSI et charger le reste plus tard sous forme de modules. Tout cela dépend entièrement de vous.

Si vous démarrez avec un noyau qui n'a aucun support SCSI, vous devrez commencer par charger la base SCSI. La base se trouve dans un module nommé "scsi_mod" ; elle est indispensable à la gestion du SCSI. Elle ne contient par contre aucun pilote spécifique de bas niveau et de ce fait ne scrutera ni carte, ni périphérique. Cette base n'activera pas non plus de pilotes de disques SCSI, de lecteurs de bandes, etc. Si vous avez répondu 'Y' à la question CONFIG_SCSI au moment de construire le noyau, vous n'aurez pas besoin de charger ce module.

Maintenant que "scsi_mod" est présent dans le noyau, vous pouvez ajouter les modules plus ou moins dans n'importe quel ordre pour ouvrir l'accès à vos périphériques. Des compteurs d'utilisation sont présents pour éviter de retirer un pilote occupé. Si vous utilisez rmmod, vous en serez averti par un message d'erreur.

Les pilotes de haut niveau pour les disques, les lecteurs de CDROM, les lecteurs de bandes et le support SCSI générique se trouvent respectivement dans les modules "sd_mod", "sr_mod", "st" et "sg". Lorsque vous chargez un pilote de haut niveau, tous les périphériques détectés (par les pilotes de bas niveau) et gérés par ce pilote sont automatiquement activés.

L'utilisation des modules avec des pilotes de bas niveau a été décrite dans le chapitre Le support des modules dans les noyaux 1.2.N . Lorsqu'un pilote de bas niveau est chargé, le bus est scruté et chaque périphérique reconnu est ensuite éventuellement pris en charge par un pilote de plus haut niveau (voir paragraphe précédent).


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre