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.
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.
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/
.
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
).
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
.
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.
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.