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.

Suggerimento

Tuttavia un modo per caricare più driver SCSI esiste. James Tsiao ha avuto questa idea:

È facile fare in modo che kerneld carichi il secondo driver scsi: basta impostare le dipendenze in modules.dep a mano. Serve solo una voce come:

      /lib/modules/2.0.30/scsi/st.o: /lib/modules/2.0.30/scsi/aha1542.o

per far caricare a kerneld aha1542.o prima che carichi st.o. La mia macchina a casa è configurata praticamente come sopra e tutto funziona bene per le mie periferiche scsi secondarie, inclusa l'unità a nastro, il CD-ROM e le periferiche scsi generiche. L'altra faccia della medaglia sta nel fatto che depmod -a non può rilevare automaticamente queste dipendenze, così l'utente ha bisogno di aggiungerle manualmente e non può lanciare depmod -a all'avvio. Ma, una volta che tutto è configurato, kerneld caricherà in automatico l'aha1542.o senza problemi.

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.