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.
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.
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).
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.
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.
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:
Si può anche dare un'occhiata alla cosiddetta `Ethernet-HomePage', che è all'URL seguente:
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.
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