5. Periferiche che richiedono una configurazione speciale

Alcune periferiche richiedono una configurazione che va leggermente al di là del semplice uso di alias di una periferica per un modulo.

5.1. char-major-10 : mouse, watchdog e casualità

Le periferiche hardware sono solitamente identificate con il loro major number, così per l'unità a nastro si ha un char-major-27. Ciò nonostante, se si scorrono le voci presenti in /dev che contengono un char-major-10, si vedrà che queste formano un bel gruppo di periferiche molto diverse fra loro:

Queste periferiche sono controllate da altrettanti moduli, non da uno solo. Perciò la configurazione di kerneld per queste periferiche eterogenee fa uso del major number e del minor number:

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

Si necessita di una versione del kernel 1.3.82 o superiore per poter utilizzare questa caratteristica; le versioni precedenti non passano il minor number a kerneld, impedendogli di capire quale modulo di periferica caricare.

5.2. Caricamento di driver SCSI: la voce scsi_hostadapter

I driver per le periferiche SCSI consistono in un driver per l'adattatore SCSI (per esempio un Adaptec 1542) e di un driver per il tipo di periferica SCSI che si utilizza (per esempio un hard-disk, un CD-ROM o un'unità a nastro). Tutti possono essere caricati come moduli. Perciò, quando desidera accedere, per esempio, al lettore di CD-ROM connesso alla scheda Adaptec, il kernel e kerneld sanno solo che c'è bisogno di caricare il modulo sr_mod per supportare il CD-ROM SCSI, ma non sanno a quale controller il CD-ROM è connesso nè, tanto meno, quale modulo caricare per supportare il controller SCSI.

Per risolvere questo problema si può aggiungere una voce per il driver SCSI al proprio /etc/conf.modules che dica a kerneld quale dei possibili moduli per controller SCSI deve caricare:

        alias scd0 sr_mod               # sr_mod for SCSI CD-ROM's ...
        alias scsi_hostadapter aha1542  # ... need the Adaptec driver

Questo funziona solo con versioni del kernel 1.3.82 o superiori.

Il metodo va bene se si possiede un solo controller SCSI. Se ce ne sono più d'uno, le cose diventano un po' più difficili.

In generale è possibile fare in modo che kerneld carichi un driver per un adattatore SCSI se un driver per un altro adattatore SCSI è già installato. Si è costretti a compilare entrambi i driver direttamente nel kernel (non come moduli) o caricare i moduli manualmente.

Si faccia presente che questa tecnica funziona solo se si possiedono tipi diversi di periferiche SCSI collegate ai due controller (per esempio degli hard-disk su un controller e lettori CD-ROM, unità a nastro o periferiche SCSI generiche sull'altro).

5.3. Quando caricare un modulo non è sufficiente: la voce post-install entry

Qualche volta caricare solo il modulo non è abbastanza per far funzionare le cose. Per esempio, se la seconda scheda sonora è stata compilata come modulo, spesso è conveniente impostare un certo livello per il volume. L'unico problema è che l'impostazione svanisce quando viene caricato il modulo un'altra volta. Ecco, in breve, un trucco di Ben Galliart ():

La soluzione definitiva ha richiesto l'installazione del pacchetto setmix e l'aggiunta delle seguenti linee al mio /etc/conf.modules:

post-install sound /usr/local/bin/setmix -f /etc/volume.conf

Questa linea fa in modo che kerneld, dopo che il modulo per l'audio è stato caricato, lanci il comando indicato dalla voce post-install sound. Così il modulo sonoro viene configurato con il comando /usr/local/bin/setmix -f /etc/volume.conf.

Ciò può essere utile anche per altri moduli, per esempio il modulo lp può essere configurato con il programma tunelp aggiungendo:

        post-install lp tunelp options

Affinché kerneld recepisca queste opzioni, si necessità di una versione di kerneld 1.3.69f o superiore.

Nota

una versione recente di questo mini-HOWTO parlava di un'opzione pre-remove, che si sarebbe potuta usare per eseguire un comando appena prima che kerneld rimuovesse un modulo. Ciò nonostante questa opzione non ha mai funzionato e il suo uso è perciò scoraggiato (più appropriatamente, questa opzione scomparirà in una release futura di kerneld). L'intera struttura delle impostazioni per un modulo sta subendo alcuni cambiamenti in questo momento e potrebbe essere diversa sul proprio sistema.