Avanti Indietro Indice

2. Sommario degli argomenti di avvio

Questa sezione dà alcuni esempi di software che può essere usato per passare gli argomenti di avvio del kernel al kernel stesso. Dà anche un'idea di come gli argomenti vengono processati, quali limitazioni ci sono su questi, e come essi vengono passati a ogni dispositivo appropriato per il quale sono predisposti.

È importante notare che gli spazi non dovrebbero essere usati in un argomento di boot, ma solo tra argomenti separati. Una lista di valori che sono per un singolo argomento devono essere separati da una virgola tra i valori, e ancora senza nessuno spazio. Vedere i seguenti esempi di sotto.


        ether=9,0x300,0xd0000,0xd4000,eth0  root=/dev/hda1            *GIUSTO*
        ether = 9, 0x300, 0xd0000, 0xd4000, eth0  root = /dev/hda1    *ERRATO*

Una volta che il kernel Linux è su ed è in esecuzione, si possono vedere gli argomenti della riga di comando che sono stati piazzati all'avvio semplicemente digitando cat /proc/cmdline al prompt di una shell.

2.1 LILO (LInux LOader)

Il programma LILO (LInux LOader) scritto da Werner Almesberger è il più comunemente usato. Ha l'abilità di avviare vari kernel, e memorizza l'informazioni di configurazione in un file formato testo. La maggior parte delle distribuzioni hanno LILO come boot-loader di default. LILO può avviare DOS, OS/2, Linux, FreeBSD, etc. senza nessuna difficoltà, ed è molto flessibile.

Una tipica configurazione, dopo aver acceduto al proprio computer, farà fermare LILO e visualizzare brevemente LILO: Esso aspetterà poi qualche secondo per ogni input opzionale da parte dell'utente, e in caso contrario avvierà il sistema di predefinito. Le etichette tipiche dei sistemi che le persone usano nel file di configurazione di LILO sono linux e backup e msdos. Se si vuole digitare un argomento di avvio occorre digitarlo qui, dopo aver digitato l'etichetta del sistema che si vuole che LILO avvii, come mostrato nell'esempio di sotto.


        LILO: linux root=/dev/hda1

LILO è fornito di un'eccellente documentazione, e per gli scopi di avvio di argomenti discussi qui, il comando LILO append= è di particolare importanza quando si vuole aggiungere un argomento all'avvio come un aggiunta permanente al file di configurazione di LILO. Si aggiunga semplicemente qualcosa tipo append = "foo=bar" al file /etc/lilo.conf. Può anche essere aggiunto in cima al file di configurazione, facendolo applicare a tutte le sezioni, o in una singola sezione di sistema aggiungendolo dentro una sezione image= . Prego vedere la documentazione LILO per una più completa descrizione.

2.2 LoadLin

L'altro loader Linux usato comunemente è `LoadLin' il quale è un programma DOS che ha la capacità di lanciare un kernel Linux da un prompt DOS (con argomenti d'avvio) presumendo che alcune risorse siano disponibili. Questo è buono per persone che usano il DOS e vogliono lanciare Linux dal DOS.

È anche molto utile se si ha un certo hardware che quale dipende dai driver forniti in DOS per avere l'hardware in uno stato conosciuto. Un esempio comune è la scheda audio `SoundBlaster Compatibile' che richiede il driver DOS per impostare alcuni registri proprietari per rendere la scheda in modalità compatible SB. Avviando il DOS con i driver forniti, e caricando poi Linux da un prompt DOS con LOADLIN.EXE evita la reimpostazione della scheda, cosa che accadrebbe se invece avvenisse un riavvio. Perciò la scheda è lasciata in modalità compatibile SB e pertanto è usabile sotto Linux.

Ci sono anche altri programmi che possono essere usati per avviare Linux. Per una lista completa, guardare nei programmi disponibili sul proprio mirror locale ftp Linux, sotto system/Linux-boot/.

2.3 L'utilità ``rdev''

Ci sono alcuni dei parametri di avvio del kernel che hanno i loro valori di default memorizzati in vari byte nell'immagine del kernel stessa. C'è un'utilità chiamata rdev che è installata sulla maggior parte dei sistemi, che sa dove sono questi valori e come modificarli. Può anche modificare cose che non hanno un argomento equivalente di avvio del kernel, come la modalità video usata di default.

L'utilità rdev ha anche degli alias come swapdev, ramsize, vidmode e rootflags. Queste sono le cinque cose che rdev può modificare, quello che è il dispositivo di root, il dispositivo di swap, i parametri della RAM disk, la modalità video di default, e il settaggio sola-lettura/lettura-scrittura del dispositivo di root.

Maggior informazioni su rdev possono essere trovate digitando rdev -h o leggendo la pagina di manuale inclusa (man rdev).

2.4 Come il Kernel ordina gli argomenti

La maggior parte degli argomenti di avvio ha la forma di:


        nome[=valore_1][,valore_2]...[,valore_11]

dove `nome' è una chiave unica che è usata per identificare a quale parte del kernel deve essere dato il valore associato (se c'è). Argomenti di avvio multipli sono elencati separati solo da spazio come il formato di sopra. Notare che il limite a 11 è reale, perché il codice attuale gestisce solo 11 parametri separati da virgole per chiave. (Comunque, si può ri-usare la stessa chiave con altri 11 parametri aggiuntivi in situazioni inusualmente complicate, assumendo che la funzione di setup le supporti.) Notare anche che il kernel divide la lista in un massimo di dieci argomenti interi, e una seguente stringa, così non si possono realmente fornire 11 interi a meno che non si converta l'undicesimo argomento da una stringa a un intero nello stesso driver.

La maggior parte dell'ordinamento viene effettuato in linux/init/main.c. Prima il kernel controlla per vedere se l'argomento è uno degli argomenti speciali `root=', `ro', `rw', o `debug'. Il significato di questi argomenti speciali è descritto in aggiunta a questo documento.

Dopo scorre una lista di funzioni di setup (contenute nella tabella bootsetups ) per vedere se la stringa specificata dell'argomento (come `foo') è stata associata con una funzione di setup (foo_setup()) per un particolare dispositivo o parte del kernel. Se si, passa al kernel la riga foo=3,4,5,6,bar dopo il kernel dovrebbe cercare nella tabella bootsetups per vedere se `foo' è registrato. Se c'è, esso chiamerebbe la funzione di setup associata a `foo' (foo_setup()) per gestire gli argomenti interi 3, 4, 5 e 6 come sono passati alla riga di comando del kernel, e gestire anche l'argomento stringa bar.

2.5 Impostazione delle variabili d'ambiente.

Qualsiasi cosa nella forma `foo=bar' che non è accettata come una funzione di setup come descritto sopra viene allora interpretata come una variabile d'ambiente che deve essere impostata. Un esempio sarebbe usare TERM=vt100 o BOOT_IMAGE=vmlinuz.bak come argomento di avvio. Queste variabili d'ambiente sono tipicamente testate negli script di inizializzazione per abilitare o disabilitare una vasta gamma di cose.

2.6 Il passaggio di argomenti al programma `init'

Ogni argomento rimanente che non è stato preso dal kernel e non è stato interpretato come variabile d'ambiente viene passato al processo uno, il quale è usualmente il programma init . Il più comune argomento passato al processo init è la parola single la quale istruisce init di avviare il computer in modalità singolo utente, non lanciando tutti i demoni usuali. Controllare la pagina di manuale per la versione di init installata sul proprio sistema per vedere quali argomenti accetta.


Avanti Indietro Indice