[indice generale] [precedente] [successivo] [indice analitico] [note introduttive]

13. Parametri di avvio del kernel

Il kernel è in grado di ricevere opzioni in fase di avvio che possono servire per scopi differenti. In particolare, per gestire alcuni dispositivi è necessario informare il kernel sulle loro caratteristiche (tipicamente l'indirizzo di I/O e il livello di IRQ).

Nel capitolo 8 si è già accennato al meccanismo attraverso cui si avvia il sistema e ai vari modi di passare al kernel queste istruzioni particolari: bootprompt, istruzioni append di LILO (/etc/lilo.conf) e di SYSLINUX, e opzioni della riga di comando di Loadlin. In questo capitolo vengono mostrati solo alcuni dei parametri di avvio che possono essere utilizzati.

È importante tenere presente che gli indirizzi di I/O vanno espressi in esadecimale, nella forma 0xnnn, il livello di IRQ viene indicato in modo decimale, e l'indirizzo di memoria condivisa viene espresso in esadecimale. Se non viene indicato diversamente, gli indirizzi di I/O e di memoria condivisa sono quelli di partenza.

Nel capitolo 15 sono riepilogati altri parametri affiancati ai moduli relativi, quando questi sono disponibili.

13.1 Parametri di uso generale

Alcuni parametri di avvio non riguardano dispositivi specifici, ma il sistema in generale. Si tratta in special modo delle informazioni sul dispositivo da utilizzare per il montaggio del filesystem principale, e dell'utilizzo della memoria.

13.1.1 Filesystem principale (root)

Nel momento dell'avvio, il kernel deve conoscere alcune informazioni essenziali sul filesystem principale. Per prima cosa deve sapere dove si trova (quale disco e quale partizione), quindi deve sapere in che modo deve essere montato inizialmente (in sola lettura o anche in scrittura). Questi dati possono essere memorizzati all'interno del kernel stesso, anche per mezzo del programma rdev.

Selezione del filesystem principale.

root=<dispositivo>

Permette di specificare un dispositivo differente da quello predefinito per montare il filesystem principale. Il dispositivo può essere rappresentato nel modo consueto, /dev/..., anche se in effetti, in questa fase di avvio, non esiste ancora un filesystem all'interno del quale cercare un tale file di dispositivo.

Questa indicazione può essere memorizzata direttamente nel kernel attraverso rdev.

rdev <kernel> <dispositivo>

Accesso iniziale in sola lettura.

ro

Permette di definire un accesso iniziale al filesystem principale in sola lettura. Questa è la condizione necessaria per poter eseguire un controllo dell'integrità del filesystem prima di passare alla gestione normale.

Questa indicazione può essere memorizzata direttamente nel kernel attraverso rdev:

rdev -R <kernel> 1

Accesso iniziale in lettura e scrittura.

rw

Permette di definire un accesso iniziale al filesystem principale in lettura e scrittura.

Questa indicazione può essere memorizzata direttamente nel kernel attraverso rdev.

rdev -R <kernel> 0

Esempi

root=/dev/hda2

Il filesystem principale è la seconda partizione del primo disco fisso IDE.

rw

Il filesystem principale viene aperto inizialmente in lettura e scrittura (per qualche ragione).

13.1.2 Memoria

Memoria RAM disponibile.

mem=<dimensione>

In caso di necessità, permette di definire la dimensione di memoria RAM disponibile effettivamente. Si può indicare un numero esadecimale nella forma 0x..., oppure un numero decimale normale, seguito eventualmente dalla lettera k, che sta a indicare Kbyte, oppure dalla lettera M, che sta a indicare Mbyte. Quando ci si trova nella necessità di indicare la memoria esistente occorre fare attenzione a non esagerare, soprattutto occorre controllare se una parte di questa, verso la fine, viene utilizzata dal firmware BIOS, perché in tal caso occorre specificare una dimensione inferiore.

Caricamento del filesystem principale come disco RAM.

load_ramdisk={0|1}

Permette di definire se si vuole caricare il filesystem principale come disco RAM. load_ramdisk=1 significa che si intende attivare un disco RAM, mentre assegnando il valore zero ciò non accade. Il valore predefinito è load_ramdisk=0.

13.1.3 Varie

Programma init.

init=<programma-iniziale>

Permette di definire il nome, completo di percorso, del programma che deve svolgere le funzioni di init. Il kernel provvede da solo a cercare /sbin/init, e in alternativa /etc/init. Come ultima risorsa tenta di avviare /bin/sh. Se per qualunque motivo non funziona il programma init, si può tentare di avviare il sistema facendo partire la shell al suo posto.

Coprocessore matematico.

no387

Alcuni coprocessori matematici i387 hanno dei problemi che possono pregiudicare il funzionamento del sistema. In tali situazioni è necessario fare in modo che il kernel ignori la presenza di questo microprocessore e provveda da solo alla sua emulazione. Inserendo questo parametro si fa in modo che non venga utilizzato il coprocessore.

Pausa del microprocessore.

no-hlt

I microprocessori i386 e successivi dispongono di un'istruzione denominata hlt che permette loro di entrare in uno stato di riposo in attesa di un'interruzione esterna. Ciò permette a un sistema inutilizzato di risparmiare energia. Alcuni microprocessori i486 hanno un difetto per cui il meccanismo di risveglio dopo la pausa non funziona. In questi casi conviene utilizzare questa opzione con la quale il kernel non lascia mai andare il microprocessore in pausa.

Riavvio automatico quando si manifesta un kernel panic.

panic=<secondi>

Quando il kernel incontra un problema grave, si dice scherzosamente che si è verificato un kernel panic. In situazioni normali, il sistema si blocca in attesa di un intervento umano. Attraverso questa istruzione è possibile indicare al kernel di riavviare il sistema dopo un intervallo di tempo espresso in secondi. Il valore predefinito è zero, che corrisponde a una durata infinita.

Esclusione degli indirizzi di I/O.

reserve=<indirizzo-I/O>,<estensione>[,<indirizzo-I/O>,<estensione>]...

Permette di isolare una o più zone di indirizzi di I/O, all'interno delle quali il kernel non deve eseguire alcun tentativo di identificazione di componenti. Di solito, dopo un'istruzione del genere, si inseriscono le dichiarazioni esplicite dei dispositivi che ci sono effettivamente. Il primo valore, quello che esprime l'indirizzo, viene espresso attraverso una notazione esadecimale del tipo consueto (0x...), mentre il secondo è un numero decimale.

Esempi

reserve=0x300,64

Riserva gli indirizzi di I/O da 0x300 a 0x340.

13.2 Dischi IDE, XT e simili

Gli elaboratori con architettura i386 e successive sono dotati generalmente di unità di controllo per i dischi di tipo IDE e derivati. In questo senso, raramente si incontrano problemi e con essi la necessità di fornire istruzioni particolari al kernel.

13.2.1 Dischi IDE

Nelle sintassi seguenti, hdx rappresenta un dispositivo corrispondente a un disco fisso, dove x è una lettera da a a h. La sigla iden rappresenta un dispositivo corrispondente a un'unità di controllo IDE, dove n è un numero da 0 a 3.

Geometria.

hdx=<cilindri>,<testine>,<settori>

Indica esplicitamente la geometria di un disco fisso senza dover fare affidamento sulle informazioni fornite dal firmware BIOS.

CD-ROM.

hdx=cdrom

Dichiara in modo inequivocabile che l'unità hdx è un lettore CD-ROM.

Indirizzo di I/O dell'interfaccia.

iden=<indirizzo-I/O>

Specifica l'indirizzo di I/O dell'interfaccia IDE specificata.

13.2.2 Driver per ST-506 standard

Geometria.

hd=<cilindri>,<testine>,<settori>

Se sono installati due dischi, si devono ripetere le indicazioni in sequenza, attraverso due parametri hd=.

13.2.3 Vecchie unità di controllo XT a 8 bit

Caratteristiche della scheda di controllo.

xd=<tipo>,<livello-IRQ>,<indirizzo-I/O>,<canale-DMA>

Il tipo specifica il produttore della scheda: 0=generico; 1=DTC; 2,3,4=Western Digital, 5,6,7=Seagate; 8=OMTI.

Esempi

xd=2,5,0x320,3

Unità di controllo WD1002: indirizzo di I/O 0x320, livello di IRQ 5, canale DMA 3.

13.3 Interfacce di rete Ethernet

Le istruzioni di avvio riferite alle interfacce di rete Ethernet sono un po' strane e iniziano sempre con il parametro ether=. La sintassi generale è la seguente:

ether=<livello-IRQ>,<indirizzo-I/O>[<extra1>,[<extra2>...]],<nome>

In pratica, gli argomenti che identificano il livello di IRQ, l'indirizzo di I/O e il nome simbolico dell'interfaccia di rete sono sempre parte della sintassi, mentre altri argomenti nella parte centrale possono essere presenti in funzione del tipo di scheda.

Compatibili NE1000 e NE2000

ether=<livello-IRQ>,<indirizzo-I/O>,<nome>

I valori che si vuole siano determinati automaticamente vanno lasciati a zero.

3Com 3c503

ether=<livello-IRQ>,<indirizzo-I/O>,0,<ricetrasmettitore>,<nome>

L'argomento indicato come ricetrasmettitore è un numero che rappresenta il tipo di connessione fisica scelta: 0=interno (BNC), 1=esterno (AUI).

Esempi

ether=11,0x300,eth0

Scheda NE2000: indirizzo I/O 0x300, livello di IRQ 11.

ether=11,0x300,eth0 ether=10,320,eth1

Due schede NE2000: la prima configurata con indirizzo I/O 0x300 e livello di IRQ 11, la seconda con indirizzo di I/O 0x320 e livello di IRQ 10.

ether=0,0,eth1

Due schede NE2000 configurate in modo differente e non conflittuale, in grado di essere riconosciute se installate singolarmente. Si vuole ottenere l'autorilevamento della seconda scheda.

ether=9,0x300,0,1,eth0

Scheda 3c503: indirizzo di I/O 0x300, livello di IRQ 9, ricetrasmettitore esterno.

ether=3,0,0,0,eth0

Scheda 3c503: si vuole che venga rilevato automaticamente l'indirizzo di I/O, mentre il livello di IRQ è 3. Si utilizza il ricetrasmettitore interno.

13.4 Unità di controllo dei dischetti

floppy=two_fdc

Specifica la presenza di due unità di controllo per i dischetti. Con questa istruzione si ritiene implicitamente che la seconda unità di controllo utilizzi l'indirizzo di I/O 0x370.

floppy=<indirizzo-I/O>,two_fdc

Viene specificata la presenza di una seconda unità di controllo con un indirizzo di I/O iniziale particolare.

floppy=thinkpad

Questa istruzione serve a gestire l'unità a dischetti degli elaboratori Thinkpad.

floppy=L40SX

Questa istruzione serve a gestire l'unità a dischetti degli elaboratori portatili IBM L40SX.

13.5 Mouse particolari

bmouse=<livello-IRQ>

Permette di definire il livello di IRQ di un'interfaccia bus-mouse.

msmouse=<livello-IRQ>

Permette di definire il livello di IRQ di un'interfaccia MS bus-mouse.

13.6 Porta parallela

Con i kernel 2.2.*, la gestione della porta parallela è cambiata. Mentre prima si poteva predisporre il kernel per la stampa, oppure per le connessioni PLIP, adesso è stato introdotto un livello intermedio, riferito direttamente alla porta parallela; poi questa viene abbinata al dispositivo di stampa o ad altre attività, anche in modo dinamico.

Definizione esplicita delle caratteristiche della porta.

parport=<indirizzo-I/O>[,<livello-IRQ>]

In condizioni normali, le porte parallele vengono individuate correttamente; se così non fosse si può utilizzare questo parametro, ripetuto per tutte le porte che si vogliono gestire, indicando l'indirizzo di I/O ed eventualmente anche il livello di IRQ. Le porte parallele individuate, automaticamente o con l'aiuto dei parametri, ottengono una denominazione sequenziale: parport0, parport1, ecc.

Eliminazione della gestione e autorilevamento.

parport=0

parport=auto

Se non si assegna il valore zero nel parametro di dichiarazione della porta parallela, viene esclusa completamente la sua gestione da parte del kernel; se si assegna la parola chiave auto, si richiede espressamente al kernel di scandire automaticamente le porte e di assegnare indirizzi di I/O e IRQ in modo automatico.

I dispositivi o le interfacce di rete che fanno uso della porta parallela, se devono essere indicati espressamente attraverso i parametri del kernel, devono fare riferimento alle porte parallele attraverso i nomi convenzionali parport0,...

Definizione esplicita dell'abbinamento di una porta a una stampante.

lp=parportn

Definisce che la porta parallela, specificata attraverso il numero, è collegata a una stampante.

Esempi

parport=0x3bc parport=0x378,7 parport=0x278,auto

Definisce esplicitamente la presenza di tre porte parallele, e per tutte specifica l'indirizzo di I/O; per l'ultima viene richiesto di determinare automaticamente l'indirizzo di I/O.

lp=parport0 lp=parport2

Definisce l'utilizzo della prima e della terza porta parallela per le stampanti; rispettivamente: lp0 e lp1.

13.7 Riferimenti

Sorgenti del kernel

Le informazioni più aggiornate sull'uso dei parametri di avvio si possono trovare all'interno degli stessi sorgenti del kernel, nelle directory successive a /usr/src/linux/drivers/ e all'interno di /usr/src/linux/Documentation/ (può trattarsi dei commenti iniziali ai file dei sorgenti, o file di testo separati).

Paul Gortmaker, BootPrompt HOWTO

bootparam(7)

---------------------------

Appunti Linux 1999.07.12 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ evo.it

[indice generale] [precedente] [successivo] [indice analitico] [note introduttive]