Page suivante Page précédente Table des matières

9. Périphériques demandant une configuration spéciale

Certains périphériques demandent un peu plus de configuration que le simple alias d'un périphérique et d'un module.

9.1 char-major-10 : souris, watchdogs, et random

Les périphériques sont habituellement identifiés par leur nombre majeur, par exemple 27 pour ftape. Toutefois, si vous regardez les entrées de /dev pour le nombre majeur 10, vous verrez un certain nombre de périphériques très différents. Parmi ceux-ci :

De façon évidente, ces périphériques sont contrôlés par différents modules et non un seul. Pour cela, kerneld utilise le nombre majeur et le nombre mineur :

      alias char-major-10-1 psaux     # For PS/2 mouse
      alias char-major-10-130 wdt     # For WDT watchdog
      

Vous avez besoin d'un version du noyau 1.3.82 ou supérieure pour l'utiliser. Les versions plus anciennes ne passaient pas le nombre mineur à kerneld, ce qui ne permettait pas à kerneld de savoir quel module il fallait charger.

9.2 Charger les gestionnaires SCSI : l'entrée scsi_hostadapter

Les gestionnaires de périphériques SCSI sont constitués d'un adaptateur pour la carte SCSI (par exemple pour une Adaptec 1542) et d'un gestionnaire pour le type de périphérique SCSI que vous utilisez, comme un disque dur, un lecteur de CD-ROM ou un lecteur de cartouche. Tous peuvent être chargés sous forme de modules. Cependant, lorsque vous voulez accéder à un lecteur de CD-ROM connecté à une carte Adaptec, le noyau et kerneld savent seulement qu'il faut charger le module sr_mod pour gérer le CD-ROM SCSI, mais ils ignorent à quel contrôleur SCSI il est connecté, donc quel module charger pour gérer le contrôleur SCSI.

Pour résoudre cela, vous pouvez ajouter une entrée pour le module du contrôleur SCSI au fichier /etc/conf.modules qui indiquera à kerneld quel module charger parmi toutes les possibilités :

      alias scd0 sr_mod               # sr_mod pour SCSI CD-ROM's ...
      alias scsi_hostadapter aha1542  # ... doit utiliser le pilote
                                      # Adaptec 1542
      

Cela ne fonctionne que pour un noyau de version 1.3.82 ou supérieure.

Cela marche si vous n'avez qu'une carte SCSI, sinon, c'est un peu plus difficile. En général, vous ne pouvez pas avoir kerneld qui charge le pilote d'une carte SCSI si le gestionnaire d'un autre contrôleur est déjà installé. Vous devez soit construire un noyau avec les deux gestionnaires (ils ne sont plus sous forme de modules) soit les charger manuellement.

Il y a une possibilité pour que kerneldcharge plusieurs gestionnaires SCSI. James Tsiao a eu cette idée : vous pouvez avoir kerneld qui charge le second controleur SCSI en mettant la dépendance dans le fichier modules.dep à la main. Vous avez juste besoin d'une entrée comme :

      /lib/modules/2.0.30/scsi/st.o: /lib/modules/2.0.30/scsi/aha1542.o
      
Pour que kerneldcharge le module aha1542.o avant qu'il charge st.o. Ma machine à la maison est configurée exactement comme au-dessus et fonctionne très bien pour tous les périphérique de mon second contrôleur SCSI, incluant lecteurs de cartouche, CD-ROM et des périphériques SCSI génériques. L'inconvéniant est que depmod -a ne peut pas détecter ces dépendances. Donc, l'utilisateur doit les ajouter à la main et ne pas lancer depmod -a au démarrage. Une fois configuré, kerneld chargera automatiquement aha1542.o comme il faut.

Vous devez être conscient que cette technique ne marche que si vous avez différents types de périphériques sur deux contrôleurs. Par exemple les disques durs sur un contrôleur et les lecteurs de CD-ROM, de cartouches et les périphériques génériques sur l'autres.

9.3 Quand charger un module n'est pas suffisant : l'entrée post-install

Parfois, charger un module n'est pas suffisant pour qu'il fonctionne correctement. Par exemple, si vous avez compilé le pilote de votre carte son en tant que module, il est souvent pratique de le régler pour un certain volume sonore. Le seul problème, c'est que cette initialisation disparaît lors du chargement suivant du module. Voici un truc de Ben Galliart bgailla@luc.edu :

Il faut installer le paquetage setmix-0.1 ( ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers/setmix-0.1.tar.gz)

et ensuite ajouter les lignes suivantes au fichier /etc/conf.modules :

      post-install sound /usr/local/bin/setmix -f /etc/volume.conf
      
Ainsi kerneld exécute la commande indiquée par l'entrée post-install sound après que le module son ait été chargé. Donc, le module son est configuré par la commande /usr/local/bin/setmix -f /etc/volume.conf.

Cela peut s'avérer très utile pour d'autres modules, par exemple le module lp peut être configuré par le programme tunelp en ajoutant :

      post-install lp tunelp <options>
      
Pour que kerneldreconnaisse ces options, vous devez avoir une version 1.3.69 de kerneld ou supérieure.

Note : une version précédente de ce mini-HOWTO mentionne une option pre-remove qui peut être utilisée pour excécuter une commande juste avant que kerneld ne décharge un module. Toutefois, cela n'a jamais marché et son utilisation est déconseillée. Heureusement, cette options disparaitra dans une future version de kerneld. L'ensemble des opérations d'initialisation des modules est en cours de modification en ce moment, et peut différer sur votre système au moment où vous lirez ceci.


Page suivante Page précédente Table des matières