Avanti Indietro Indice

10. Miscellanea

Tutta quella roba che non ci stava bene da nessun'altra parte è stata messa qui. Potrebbe non essere rilevante e potrebbe non essere d'interesse generale, ma è comunque qui.

10.1 Passare al kernel argomenti Ethernet

Ci sono due comandi generici che possono essere passati al kernel al momento del boot: ether e reserve. Questa cosa può essere fatta con LILO, loadlin o qualsiasi altra utilità di boot che accetta argomenti opzionali.

Per esempio, se il comando fosse `blah' e si aspettasse 3 argomenti (diciamo 123, 456 e 789) allora, con LILO, si potrebbe usare:

LILO: linux blah=123,456,789

Per maggiori informazioni sugli argomenti di boot (e un elenco completo) si veda il BootPrompt-HOWTO.

Il comando ether

L'argomento ether= è usato in congiunzione a driver direttamente compilati dentro al kernel. Non ha assolutamente alcun effetto su driver compilati come moduli. Nella sua forma più generale, può essere qualcosa di simile:

ether=IRQ,IND_BASE,PARAM_1,PARAM_2,NOME

Tutti gli argomenti sono opzionali. Il primo argomento non numerico è intrepretato come NOME.

IRQ: ovvio. Un valore di IRQ di `0' (solitamente il valore predefinito) significa autoIRQ. È accidentale che l'impostazione dell'IRQ sia prima di quella dell'ind_base: questa cosa verrà corretta non appena cambierà qualcos'altro.

IND_BASE: altrettanto ovvio. Il valore `0' (solitamente quello predefinito) indica di rilevare una scheda nell'elenco di indirizzi spefici per quella scheda.

PARAM_1: Originariamente usato come valore per ridefinire l'indirizzo iniziale della memoria per una scheda Ethernet a memoria condivisa, come la WD80*3. Alcuni driver usano i 4 bit meno significativi di questo valore per impostare il livello dei messaggi di debug. 0: predefinito, 1-7: livello 1..7 (con 7 si ottiene il massimo della verbosità), 8: livello 0 (nessun messaggio). Inoltre, il driver LANCE usa i 4 bit meno significativi di questo valore per selezionare il canale DMA. Altrimenti usa auto-DMA.

PARAM_2: Il driver 3c503 usa questo valore per selezionare tra il transceiver interno ed esterno. 0: predefinito/interno, 1: AUI esterno. La scheda E21XX della Cabletron usa i 4 bit meno significativi di PARAM_2 per selezionare il mezzo d'uscita. Altrimenti lo rileva automaticamente.

NOME: Seleziona il dispositivo di rete a cui fa rifemento il valore. Il kernel standard usa i nomi `eth0', `eth1', `eth2' e `eth3' per le schede Ethernet attaccate sul bus e `atp0' per gli adattatori Ethernet `pocket' su porta parallela. Il driver arcnet come nome usa `arc0'. L'impostazione predefinita è per il rilevamento di un'unica scheda Ethernet, la `eth0'. L'abilitazione di più schede è possibile solamente impostando esplicitamente il loro indirizzo base usando questi parametri di LILO. Il kernel 1.0 trattava le schede Ethernet basate su LANCE in modo speciale. Gli argomenti di LILO erano ignorati e alle schede LANCE erano sempre assegnati i nomi `eth<n>' partendo da `eth0'. Ulteriori schede Ethernet non LANCE dovevano essere esplicitamente assegnate a `eth<n+1>', e il rilevamento standard di `eth0' doveva essere disabilitato con qualcosa di simile a `ether=0,-1,eth0' (sì, questo è un bug).

Il comando reserve

Questo comando di lilo è usato proprio come il precedente `ether=', ovvero è accodato al nome di avvio selezionato in lilo.conf.

reserve=IO-base,estensione{,IO-base,estensione...}

In alcune macchine può essere necessario impedire ai driver di dispositivo di controllare la presenza di dispositivi (auto probing) in regioni specifiche. Ciò può essere dovuto ad hardware mal progettato che causa il congelamento del boot (come alcune schede Ethernet), ad hardware che viene mal identificato, ad hardware il cui stato è cambiato da un rilevamento precedente, o semplicemente ad hardware che non vuole essere inizializzato dal kernel.

L'argomento di boot reserve indirizza questo problema specificando la regione di una porta I/O che non dovrebbe essere controllata. Tale regione viene riservata nella tabella di registrazione delle porte del kernel come se vi si fosse già rilevato un dispositivo. Si noti che questo meccanismo non dovrebbe essere necessario nella maggior parte della macchine. Sarà necessario usare questo comando solo quando c'è un problema o un caso particolare.

Le porte I/O nella regione specificata sono protette dai controlli dei dispositivi. Questa cosa si è resa necessaria quando alcuni driver si piantavano su una NE2000 o mal identificavano altri dispositivi come propri. Un driver di dispositivo corretto non dovrebbe controllare una regione riservata a meno che qualche altro argomento di boot non specifici esplicitamente di farlo. La maggior parte dei driver ignora la tabella di registrazione delle porte se gli viene passato un indirizzo specifico.

Per esempio, la riga di boot

LILO: linux reserve=0x300,32 ether=0,0x300,eth0

impedisce a tutti i device driver, tranne a quelli della scheda Ethernet, di controllare la regione 0x300-0x31f.

Come al solito, c'è un limite di 11 parametri come in tutti i comandi di boot, quindi si possono specificare solo 5 regioni riservate per ciascun comando keyword. Possono essere specificati più reserve se si hanno richieste insolitamente complicate.

10.2 Usare un driver Ethernet come modulo

La maggior parte delle distribuzioni di Linux utilizzano ora dei kernel con pochissi driver al loro interno. I driver sono piuttosto forniti come gruppo di moduli indipendenti caricabili dinamicamente. Questi driver modulari sono tipicamente caricati dall'amministratore con il comando modprobe(8) o in alcuni casi sono automaticamente caricati dal kernel attraverso `kerneld' (nei 2.0) o `kmod' (nei 2.1) che a loro volta chiamano modprobe.

La propria distribuzione può offrire uno strumento grafico carino per l'impostazione dei moduli Ethernet. Se possibile prima si dovrebbe provare a usare quello. La descrizione che segue fornisce le informazioni che stanno sotto a qualsiasi programma di configurazione e indica cosa quei programmi vanno a modificare.

Le informazioni che controllano quali moduli sono usati e quali opzioni sono passate a ciascun modulo sono solitamente salvate nel file /etc/conf.modules. Le due opzioni principali di interesse per le schede Ethernet che saranno usate in questo file sono alias e options. Il comando modprobe consulta questo file per le informazioni sui moduli.

I moduli stessi sono tipicamente salvati in una directory chiamata /lib/modules/`uname -r`/net dove il comando uname -r restituisce la versione del kernel (e.g. 2.0.34). Si può andare là per vedere quale modulo corrisponde alla propria scheda.

La prima cosa che ci deve essere nel proprio file conf.modules è qualcosa che dice a modprobe quale driver usare per l'interfaccia di rete eth0 (e per eth1 e per...). Per questa cosa si dovrà usare il comando alias. Per esempio, se si ha una scheda ISA EtherEZ della SMC che usa il modulo del driver smc-ultra.o, si deve creare alias per questo driver che corrisponda a eth0, aggiungendo la riga:

        alias eth0 smc-ultra

L'altra cosa di cui si può aver bisogno è una riga options che indica quali opzioni devono essere usate con un particolare modulo (o alias di modulo). Continuando con l'esempio di prima, se si usa solamente la riga alias con nessuna riga options, il kernel avviserà (si veda dmesg) che l'auto rilevamento di una scheda ISA non è una buona idea. Per venir a capo di questo problema, si aggiunga un'altra riga che dice al modulo a quale indirizzo I/O base è configurata la scheda, ad esempio l'indirizzo esadecimale 0x280.

        options smc-ultra io=0x280

La maggior parte dei moduli ISA accettano parametri come io=0x340 e irq=12 sulla riga di comando di insmod. Fornire questi parametri è RICHIESTO o almeno CALDAMENTE CONSIGLIATO per evitare il rilevamento della scheda. Diversamente dai dispositivi PCI e EISA, non c'è alcun modo sicuro per fare l'auto rilevamento della maggior parte dei dispositivi ISA e quindi lo si dovrebbe evitare quando si usa un driver come modulo.

Un elenco di tutte le opzioni che ciascun modulo accetta può essere trovata nel file:

/usr/src/linux/Documentation/networking/net-modules.txt

Si raccomanda la sua lettura per trovare quali opzioni si possono usare con la propria scheda. Si noti che alcuni moduli supportano un elenco di valori separati da virgola. Solitamente questo è il caso di moduli che sono in grado di gestire più dispositivi con un unico modulo, come tutti i driver basati su 8390 e il driver PLIP. Per esempio:


        options 3c503 io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1

Con la riga precedente si avrà un unico modulo che controlla quattro schede 3c503, con la scheda 2 e 4 che usano il tranceiver esterno. Non si aggiungano spazi attorno a `=' o alle virgole.

Si noti inoltre che un modulo occupato non può essere rimosso. Ciò significa che si dovrà fare ifconfig eth0 down (disattivare la scheda Ethernet) prima di rimuovere il modulo.

Il comando lsmod mostrerà quali moduli sono caricati e se sono in uso, mentre il comando rmmod può essere usato per rimuoverli.

10.3 Documentazione correlata

La maggior parte dei queste informazioni provengono da messaggi che ho salvato dai gruppi comp.os.linux, che si sono dimostrati una insostituibile fonte di informazioni. Altre informazioni utili provengono da un gruppo di piccoli file di Donald stesso. Naturalmente, se si sta impostando una scheda Ethernet, allora sarà bene leggere il NET-2 Howto in modo che si possa realmente configurare il software che la userà. Inoltre, se ci si diverte a fare un po' l'hacker, si possono sempre trovare alcune informazioni addizionali nei file sorgente dei driver. Solitamente prima che cominci il codice c'è sempre un paragrafo o due che descrive i punti importanti.

A quanti cercano informazioni che non sono in alcun modo specifiche su Linux (per esempio, cos'è 10BaseT, cos'è AUI, cosa fa un hub, ecc.) suggerisco caldamente di rivolgersi a newsgroup come comp.dcom.lans.ethernet e/o comp.sys.ibm.pc.hardware.networking. Gli archivi dei newsgroup come quelli a dejanews.com possono essere una insostituibile fonte di informazioni. Si possono prendere le FAQ da RTFM (che conserva tutte le FAQ dei newsgroup) al l'URL seguente:

Usenet FAQs

Si può anche dare un'occhiata alla cosiddetta `Ethernet-HomePage', che è all'URL seguente:

Ethernet-HomePage

10.4 Liberatoria e copyright (in inglese)

This document is not gospel. However, it is probably the most up to date info that you will be able to find. Nobody is responsible for what happens to your hardware but yourself. If your ethercard or any other hardware goes up in smoke (...nearly impossible!) we take no responsibility. ie. THE AUTHORS ARE NOT RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE INFORMATION INCLUDED IN THIS DOCUMENT.

This document is Copyright (c) 1993-1997 by Paul Gortmaker. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that this copyright notice is included exactly as in the original, and that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions.

A hint to people considering doing a translation. First, translate the SGML source (available via FTP from the HowTo main site) so that you can then generate other output formats. Be sure to keep a copy of the original English SGML source that you translated from! When an updated HowTo is released, get the new SGML source for that version, and then a simple diff -u old.sgml new.sgml will show you exactly what has changed so that you can easily incorporate those changes into your translated SMGL source without having to re-read or re-translate everything.

If you are intending to incorporate this document into a published work, please make contact (via e-mail) so that you can be supplied with the most up to date information available. In the past, out of date versions of the Linux HowTo documents have been published, which caused the developers undue grief from being plagued with questions that were already answered in the up to date versions.

10.5 Chiusura

Se in questo documento si è trovato un qualsiasi errore madornale o informazione non aggiornata, mi si mandi una e-mail. È grande ed è facile non accorgersi di qualcosa. Se si è inviata una mail per una modifica e non è stata inclusa nella versione successiva, non si esiti a scrivere ancora, in quanto potrebbe essersi persa tra la marea di SPAM e junk mail che ricevo.

Grazie!

Paul Gortmaker, p_gortmaker@yahoo.com


Avanti Indietro Indice