Il caricamento di un sistema operativo avviene perché, all'atto dell'accensione di un elaboratore, il firmware (il BIOS dei PC) si occupa di leggere ed eseguire un piccolo programma residente all'inizio del disco fisso o di un dischetto. Nei PC questa parte iniziale del disco fisso è l'MBR o Master Boot Record ed è costituita da un singolo settore. Quando si fa riferimento a un dischetto, si parla di settore di avvio o di boot. Questo piccolo programma iniziale si occupa a sua volta di avviare il kernel.
Nei sistemi con architettura i386 esistono almeno quattro modi per effettuare il caricamento di GNU/Linux: un dischetto di avvio, LILO, Loadlin e SYSLINUX.
Dal punto di vista tecnico, il modo più semplice di avviare GNU/Linux è quello di creare un disco di avvio contenente solo il kernel. Nell'esempio seguente si copia il kernel vmlinuz
nel dischetto contenuto della prima unità.
*1*
#
cp vmlinuz /dev/fd0
La copia fatta in questo modo non è la copia di un file in un dischetto che contiene un filesystem: il dischetto diventa il file stesso, e questo tipo di dischetto non può contenere più di un file. Questo particolare è molto importante e deve essere necessariamente compreso. |
Il file del kernel Linux è qualcosa di molto raffinato: contiene il codice necessario per autoavviarsi dopo essersi decompresso. Infatti, la parte più consistente del kernel viene compressa alla fine del procedimento di compilazione. Naturalmente, il kernel non ha sempre la necessità di autoavviarsi, ma questa possibilità è importante per facilitare ancora di più l'avvio del sistema. |
Il kernel è così in grado di avviarsi da solo, ma può non essere stato predisposto per utilizzare esattamente il filesystem principale desiderato, così come altri elementi predefiniti potrebbero non corrispondere alla realtà particolare.
Si utilizza il programma rdev
per alterare questi elementi direttamente nel file del kernel o nell'immagine copiata nel dischetto.
rdev [<opzioni>] [<immagine> [<altre-opzioni>]] |
Legge o imposta i parametri di un'immagine di un kernel. L'immagine in questione può essere indicata come un nome di file, o un nome di dispositivo (tipicamente /dev/fd0
).
rdev <immagine> |
Visualizza il nome di dispositivo corrispondente al filesystem principale (root) indicato attualmente nell'immagine. Si tratta di visualizzare il nome della partizione che verrà utilizzata per montare la directory radice del filesystem.
rdev <immagine> <dispositivo> |
Specifica un nuovo nome di dispositivo da utilizzare come partizione da montare nella directory radice.
rdev
|
Indica di attivare inizialmente in sola lettura il dispositivo da montare nella directory radice.
rdev
|
Indica di attivare inizialmente in lettura e scrittura il dispositivo da montare nella directory radice.
rdev
|
Indica di utilizzare il dispositivo indicato come area di scambio per la memoria virtuale (swap).
#
rdev /dev/fd0 /dev/hdb1
Configura l'immagine contenuta nel dischetto inserito nella prima unità, definendo che la partizione da montare nella directory radice è la prima del secondo disco fisso.
#
rdev
-
R /dev/fd0 1
Definisce che al momento dell'avvio del kernel la partizione principale sia montata in sola lettura in modo che il filesystem possa essere controllato.
LILO è la procedura standard per il caricamento di GNU/Linux negli elaboratori con architettura i386. Permette di avviare anche altri sistemi operativi eventualmente residenti nello stesso elaboratore in cui si usa GNU/Linux. In questa sezione si vedono solo alcuni aspetti del suo funzionamento, quelli che dovrebbero bastare nella maggior parte delle situazioni. Per un approfondimento sul suo funzionamento conviene consultare la documentazione che accompagna questa procedura: lilo(8), quanto contenuto nella directory /usr/share/doc/lilo*/
e il BootPrompt HOWTO.
La procedura LILO è composta essenzialmente da:
la directory | |
il programma | |
il file di configurazione |
La directory /boot/
contiene i file utilizzati per effettuare l'avvio del sistema: sia per avviare GNU/Linux che gli altri eventuali sistemi operativi. Può contenere anche il file del kernel, o più file di kernel differenti, quando per questo non si usa semplicemente la directory radice. Più precisamente, contiene almeno i file seguenti:
| |
| |
| |
il kernel se non risiede già nella directory radice. |
Nella tabella 8.1 sono elencati i codici esadecimali corrispondenti ad alcuni dispositivi per le unità di memorizzazione.
Dispositivo | Codice |
/dev/fd0 | 200 |
/dev/fd1 | 201 |
/dev/hda | 300 |
/dev/hda1 | 301 |
/dev/hda2 | 302 |
/dev/hdb | 340 |
/dev/hdb1 | 341 |
/dev/hdb2 | 342 |
/dev/sda | 800 |
/dev/sda1 | 801 |
/dev/sda2 | 802 |
/dev/sdb | 800 |
/dev/sdb1 | 801 |
/dev/sdb2 | 802 |
Quando si utilizza l'architettura PC, il firmware, cioè il BIOS, solitamente non è in grado di accedere a settori oltre il 1024-esimo cilindro (cioè oltre il cilindro numero 1023). Di conseguenza, il programma che si occupa di caricare il kernel di qualunque sistema operativo, si deve avvalere delle funzioni del BIOS (perché inizialmente non c'è ancora un sistema operativo funzionante) e quindi non può raggiungere file oltre quel limite dei 1024 cilindri.
La directory /boot/
con tutto il suo contenuto, e il kernel, devono trovarsi fisicamente entro il 1024-esimo cilindro. Non basta che la partizione inizi prima di quel limite per garantire che questi file si trovino effettivamente in quella zona. In caso di necessità, si può utilizzare una partizione apposita per questi file, nella parte sicura del disco. È poi sufficiente montare questa partizione nel filesystem generale, eventualmente riproducendo la directory /boot/
attraverso un semplice collegamento simbolico.
L'installazione del meccanismo di caricamento del sistema operativo avviene modificando il contenuto di uno di questi settori:
MBR o Master Boot Record; | |
il primo settore di una partizione; | |
il primo settore di un dischetto. |
Nel primo caso, LILO ha il controllo su tutti i sistemi operativi per il loro caricamento; nel secondo, LILO dipende da un sistema di avviamento di un altro sistema operativo che, a sua volta, passa a LILO il controllo quando ciò viene richiesto; nel terzo caso si utilizza un dischetto in modo da non alterare il sistema di avvio già presente.
L'installazione avviene per mezzo del programma lilo
che a sua volta si basa sulla configurazione stabilita attraverso /etc/lilo.conf
. Ogni volta che si cambia qualcosa all'interno della directory /boot/
, o si modifica, o si sposta il file del kernel, è necessario ripetere l'installazione attraverso lilo
.
/etc/lilo.conf
è il file di configurazione utilizzato da lilo
per installare il sistema di avvio. Si tratta di una sorta di script contenente solo assegnamenti a variabili. Ne viene descritto il funzionamento in modo sommario partendo da un esempio in cui si ha un solo disco fisso, dove la prima partizione è riservata al Dos e la seconda a GNU/Linux. L'esempio permette di avviare GNU/Linux e il Dos selezionando la parola linux
o dos
al momento dell'avvio. Il simbolo #
rappresenta l'inizio di un commento che viene ignorato.
# Prima parte generale boot=/dev/hda prompt timeout=50 # Caricamento di Linux image=/boot/vmlinuz label=linux root=/dev/hda2 read-only # Caricamento del Dos other=/dev/hda1 label=dos table=/dev/hda |
Segue la descrizione delle direttive che appaiono nell'esempio.
Nella prima parte viene specificato che il settore di avvio deve essere collocato nel primo disco IDE, di conseguenza nell'MBR. Se fosse stata indicata una partizione specifica, si sarebbe trattato del primo settore di quella partizione (per esempio: | ||
Si tratta di un'opzione (una variabile booleana) la cui presenza fa sì che all'atto del caricamento venga richiesto di inserire il nome del sistema che si desidera avviare. | ||
Dopo 50 decimi di secondo (5 secondi), senza che sia stato selezionato alcunché, viene avviato il sistema predefinito (in questo caso | ||
Inizia la definizione di un kernel da avviare:
| ||
Definisce il nome utilizzato per fare riferimento a questo kernel. Poteva essere qualunque cosa, in questo caso il nome | ||
Indica la partizione da utilizzare come filesystem principale (root). | ||
La presenza di questa opzione fa sì che la partizione specificata venga montata inizialmente in sola lettura, in modo da permettere al kernel di eseguire un controllo prima di avviare il resto del sistema. Al termine del controllo, la partizione viene rimontata regolarmente in lettura e scrittura. | ||
Inizia la definizione dell'avvio di un altro sistema operativo, per il quale non è LILO a prendersi cura dell'avvio del kernel, ma un altro settore di avvio. In questo caso il settore di avvio deve trovarsi all'inizio della partizione | ||
Definisce il nome utilizzato per fare riferimento a questo sistema operativo. La parola | ||
Specifica il dispositivo che si riferisce all'unità che contiene l'indicazione della tabella delle partizioni. In effetti, questa è contenuta nella parte iniziale del disco fisso, quindi si fa riferimento all'intera unità |
Volendo, è possibile avviare lo stesso filesystem con kernel differenti a seconda delle necessità. In tal caso si possono aggiungere al file /etc/lilo.conf
altri blocchetti come il seguente:
# Caricamento di Linux con un kernel sperimentale image=/boot/vmlinuz-2.1.40 label=prova root=/dev/hda2 read-only |
Se si vuole la possibilità di utilizzare come filesystem principale una partizione diversa da quella normale, magari per fare delle prove, o per qualunque altro motivo, si può indicare una voce alternativa come quando si vuole avviare con diversi kernel possibili.
# Caricamento di una partizione alternativa in un disco SCSI image=/boot/vmlinuz label=extra root=/dev/sda3 read-only |
Quello che conta è comprendere che il sistema di avvio (boot) resta nella directory /boot/
, e senza il disco che la contiene, i filesystem in /dev/hda2
o /dev/sda3
non possono essere montati. Inoltre, senza /dev/hda
(in questi esempi), non si avvierebbe alcunché.
Per comprendere meglio il problema, si pensi a questo esempio:
GNU/Linux sia avviato e stia utilizzando la partizione | |
la directory | |
la directory radice del dischetto corrisponda esattamente a | |
il dischetto contenga i file già visti, necessari per l'avvio (il kernel, | |
il file |
In questo modo, se si esegue il programma lilo
, viene creato un settore di avvio nell'MBR di /dev/hda
che fa riferimento ai file di avvio (kernel incluso) contenuti nel dischetto. Cioè, senza quel dischetto (proprio quello), il sistema non potrebbe avviarsi. Questo problema viene rivisto più avanti dove viene spiegato come costruire un dischetto contenente sia un settore di avvio che il kernel e i file di LILO.
Alle volte è necessario informare il kernel di qualche particolarità dell'hardware installato. In tal caso si utilizza la variabile append
alla quale si assegna la stringa necessaria. Nell'esempio seguente si invia la stringa cdu31a=0x340,0
necessaria per poter attivare un vecchio lettore CD-ROM Sony.
# Caricamento di Linux con l'attivazione del CD-ROM image=/boot/vmlinuz label=sony root=/dev/hda2 append="cdu31a=0x340,0" read-only |
lilo [<opzioni>] |
lilo
permette di installare il sistema di avvio basato sulla procedura LILO. Per farlo, legge il contenuto del file /etc/lilo.conf
o di quello indicato attraverso l'opzione
.
-
C
|
Permette di indicare un file di configurazione differente rispetto al solito /etc/lilo.conf
.
|
Permette di definire una pseudo directory radice in modo da poter utilizzare quanto contenuto in un dischetto o in un altro disco montato da qualche parte.
#
lilo
-
C ./mia.conf
Installa il sistema di avvio utilizzando la configurazione del file mia.conf
contenuto nella directory corrente.
#
lilo
-
r /mnt/floppy
Utilizza la configurazione del file /mnt/floppy/etc/lilo.conf
, facendo riferimento (probabilmente) ai file contenuti in /mnt/floppy/boot/
, utilizzando i file di dispositivo in /mnt/floppy/dev/
.
LILO parte dal presupposto che si stia operando sempre all'interno del filesystem attivo nel momento in cui si avvia il programma lilo
. Si potrebbe pensare che per fare in modo di sistemare l'avvio su un altro disco, come un dischetto o un'altra unità rimovibile, si debba agire semplicemente sulla direttiva boot=<dispositivo>
; ma questo non basta. Si deve utilizzare l'opzione
per fare riferimento a una pseudo directory radice, a partire dalla quale LILO deve trovare tutto quello che gli serve, compreso il file di configurazione.
-
r
Di seguito viene mostrato l'esempio della preparazione di un dischetto contenente il kernel avviato da LILO, in modo completamente indipendente dal filesystem attivo nel momento in cui lo si realizza, con una configurazione simile a quella mostrata in precedenza, nella sezione 8.2.4.
All'interno di un dischetto inizializzato e contenente un filesystem Second-extended si riproduce tutto quello che serve al programma lilo
per definire il sistema di avvio. Si tratta della directory boot/
contenente gli stessi file della stessa directory appartenente al filesystem generale, insieme al kernel; della directory etc/
con il file lilo.conf
; della directory dev/
con i file di dispositivo corrispondenti alle unità di memorizzazione cui si fa riferimento. Si suppone di avere montato il dischetto utilizzando la directory /mnt/floppy/
come punto di innesto.
#
fdformat /dev/fd0u1440
#
mke2fs /dev/fd0
#
mount
-
t ext2 /dev/fd0 /mnt/floppy
#
cp
-
dpR /boot /mnt/floppy
#
mkdir /mnt/floppy/etc
#
cp /etc/lilo.conf /mnt/floppy/etc/lilo.conf
#
mkdir /mnt/floppy/dev
#
cp /dev/hd* /dev/fd* /dev/sd* /mnt/floppy/dev
Il file /mnt/floppy/etc/lilo.conf
viene modificato in modo da fare riferimento al dispositivo /dev/fd0
.
boot=/dev/fd0 |
Si utilizza il programma lilo
con l'opzione
in modo da fargli usare i file nel dischetto e non quelli contenuti nel filesystem principale.
-
r
#
lilo
-
r /mnt/floppy
Il problema può presentarsi anche in modo inverso, quando si avvia il sistema attraverso dischetti di emergenza e si vuole sistemare l'avvio di GNU/Linux attraverso il disco fisso. La partizione principale del disco fisso potrebbe essere montata nel sistema di emergenza, per esempio in corrispondenza della directory /mnt/
, e per il resto non dovrebbe essere necessario preoccuparsi d'altro, a parte la versione di LILO presente nel dischetto, che deve essere compatibile con i file di avvio del disco fisso.
#
lilo
-
r /mnt
Subito dopo la prima fase dell'avvio del sistema, quella gestita da LILO, prima dell'avvio vero e proprio del kernel, in presenza di determinate condizioni viene visualizzato un invito particolare a inserire delle opzioni: il boot prompt. Questo appare:
se era stata indicata l'istruzione | |
se viene premuto il tasto [Shift] (maiuscole), oppure [Ctrl], oppure [Alt]; | |
se il tasto [Fissamaiuscole] oppure [BlocScorr] risultano inseriti. |
Il boot prompt, ovvero il prompt dell'avvio, ha l'aspetto seguente:
boot: |
Normalmente si utilizza la riga di comando di avvio per indicare il nome di una configurazione particolare. In altri casi è il mezzo per specificare un'opzione che per qualche motivo non è attiva automaticamente e si vuole che LILO la passi al kernel.
La digitazione all'interno di questa riga di comando è abbastanza intuitiva: per cancellare si possono usare i tasti [Backspace], [Canc] e le combinazioni [Ctrl+u] e [Ctrl-x]. Eventualmente, si può ottenere un elenco delle configurazioni, riferite a diverse voci del file /etc/lilo.conf
, attraverso la pressione del tasto [Tab]. Si conferma con il tasto [Invio]. Il vero problema è la tastiera: si deve considerare che la disposizione dei tasti è quella statunitense.
La sintassi di quanto si può inserire attraverso la riga di comando è la seguente:
[<configurazione> [<opzione>...]] |
Se si preme semplicemente [Invio] viene avviata la configurazione predefinita, altrimenti è obbligatorio l'inserimento del nome di questa, seguita eventualmente da altre opzioni.
I vari argomenti inseriti attraverso la riga di comando (il nome della configurazione e le altre opzioni eventuali) sono separati tra loro attraverso uno spazio. Per questo, un argomento non può contenere spazi. |
Nella sezione 8.5 vengono descritti alcuni tipi di parametri che possono essere inseriti in una riga di comando di avvio. Per una descrizione più ampia conviene consultare il capitolo 13 ed eventualmente il BootPrompt HOWTO.
Se si utilizza ancora il Dos, si può avviare un kernel Linux attraverso il programma Loadlin, quando è in funzione il Dos. Loadlin è quindi un programma Dos, e come tale deve poter raggiungere il file del kernel all'interno di una partizione Dos.
Per conoscere i dettagli sul funzionamento di Loadlin conviene consultare la documentazione allegata al programma.
Prima di pensare a tutto questo occorre almeno avere avviato una volta il sistema GNU/Linux, e ciò per poter trasferire un kernel nella partizione Dos. Se in principio è stato deciso di non utilizzare LILO per l'avvio, l'unica possibiltà per avviare GNU/Linux è data da un dischetto di avvio, magari uno di quelli che contiene solo il kernel.
Attraverso GNU/Linux si deve copiare il programma LOADLIN.EXE
nel disco Dos e con esso anche il file del kernel. Quindi si può arrestare il sistema nel modo tradizionale e riavviare l'elaboratore facendo in modo di mettere in funzione il sistema operativo Dos.
#
shutdown
-
h now
Una volta riavviato il sistema operativo Dos si dovrebbero trovare i due file copiati poco prima attraverso GNU/Linux: VMLINUZ
(o qualunque altro nome riferito al file del kernel) e LOADLIN.EXE
.
Per avviare in modo semplice il sistema GNU/Linux mentre è in funzione il Dos, dovrebbe bastare il comando seguente. Si suppone che la partizione dedicata a GNU/Linux sia la seconda del primo disco fisso IDE.
C:\>
LOADLIN C:\VMLINUZ root=/dev/hda2 ro
In pratica, si dice a LOADLIN.EXE
di caricare il file del kernel C:\VMLINUZ
in modo da utilizzare la seconda partizione del primo disco fisso (/dev/hda2
) cominciando con un accesso in sola lettura (in modo da permetterne il controllo prima che il sistema sia messo completamente in funzione).
Prima di avviare LOADLIN.EXE
, vale forse la pena di disattivare gli eventuali sistemi di memoria cache del disco fisso. Se si usa SMARTDRV.EXE
conviene scaricare la memoria cache nel modo seguente:
C:\>
SMARTDRV /C
In generale, la cosa migliore dovrebbe essere l'inserimento della chiamata a LOADLIN.EXE
all'interno di un sistema di file AUTOEXEC.BAT
e CONFIG.SYS
che permetta l'avvio di configurazioni multiple.
L'utilizzo del programma LOADLIN.EXE
è il modo più ragionevole di avviare un sistema GNU/Linux installato in un filesystem UMSDOS. Ciò proprio perché un filesystem UMSDOS si trova nella stessa partizione utilizzata per il Dos.
C:\>
LOADLIN C:\VMLINUZ root=/dev/hda1 rw
In questo caso, si dice a LOADLIN.EXE
di caricare il file del kernel C:\VMLINUZ
in modo da utilizzare la prima partizione del primo disco fisso (/dev/hda1
) cominciando con un accesso sia in lettura che in scrittura.
Con un filesystem UMSDOS non è possibile iniziare in sola lettura perché non c'è un programma in grado di eseguire un controllo e la correzione di questo tipo di filesystem. Di conseguenza, l'unico modo per controllare e correggere eventuali errori in un filesystem UMSDOS è l'uso di programmi Dos quali |
SYSLINUX è un sistema di avvio di GNU/Linux basato fondamentalmente su dischetti con filesystem Dos-FAT. A prima vista può sembrare qualcosa di superfluo, come una sorta di tentativo ulteriore di far convivere Dos e GNU/Linux in un uno stesso disco. In realtà non è così: si tratta di un sistema che facilita notevolmente la realizzazione di dischetti di avvio, e quasi tutte le distribuzioni di GNU/Linux utilizzano dischetti di questo tipo.
SYSLINUX mette a disposizione un programma Dos, SYSLINUX.EXE
, e un programma per GNU/Linux, syslinux
, che predispone un dischetto, inizializzato precedentemente, con un filesystem Dos-FAT in modo che questo possa avviare un kernel Linux. Si procede nel modo seguente per creare un dischetto di avvio nella prima unità a dischetti:
C:\>
SYSLINUX A:
oppure
#
syslinux /dev/fd0
Quello che si ottiene è l'inserimento nel dischetto del programma LDLINUX.SYS
e la creazione di un settore di avvio opportuno, che si occupa di avviarlo. Il minimo indispensabile per avviare il sistema è l'aggiunta nel dischetto (nella directory radice) di un kernel Linux denominato convenzionalmente LINUX
. Tuttavia, è conveniente predisporre un file di configurazione, SYSLINUX.CFG
, in modo da poter sfruttare effettivamente i vantaggi di questo sistema di avvio.
Una volta creato il dischetto, il kernel può essere sostituito quanto si vuole, e così anche la configurazione nel file SYSLINUX.CFG
. Il settore di avvio del dischetto si limita ad avviare il programma LDLINUX.SYS
, il quale provvede poi a leggere la configurazione e ad avviare il kernel.
Si è detto che si può configurare il sistema di avvio attraverso il file SYSLINUX.CFG
. Si tratta di un file di testo normale, in cui le righe sono terminate indifferentemente con il carattere <LF> o con la sequenza <CR><LF> (in pratica, si può creare sia utilizzando strumenti Dos che Unix).
Concettualmente assomiglia al file /etc/lilo.conf
, con il vantaggio di non dover essere lanciato un programma come lilo
per creare un collegamento tra: settore di avvio, configurazione e kernel. Qui tutto viene gestito dal programma LDLINUX.SYS
che si occupa di leggere la configurazione all'avvio e di agire di conseguenza.
L'esempio seguente mostra le caratteristiche principali di questo file di configurazione. In particolare permette di avviare il kernel contenuto nel file LINUX
, con diversi comandi di avvio.
DEFAULT linux TIMEOUT 0 DISPLAY INTRO.TXT PROMPT 1 F1 INTRO.TXT F2 VARIE.TXT LABEL linux KERNEL LINUX LABEL floppy KERNEL LINUX APPEND "ramdisk_start=0 load_ramdisk=1 prompt_ramdisk=1" LABEL hda1 KERNEL LINUX APPEND "root=/dev/hda1 ro" |
Segue la descrizione delle direttive che appaiono nell'esempio.
Specifica di utilizzare in modo predefinito l'impostazione identificata dall'etichetta | |
Dopo 50 decimi di secondo (5 secondi), senza che sia stato selezionato alcunché, viene avviato il sistema predefinito (in questo caso | |
Visualizza il contenuto del file | |
Fa in modo che venga visualizzato l'invito all'utente a inserire qualcosa: | |
Abbina la visualizzazione del contenuto del file | |
Abbina la visualizzazione del contenuto del file | |
Definisce il nome dell'etichetta | |
Indica di utilizzare il file | |
Definisce il nome dell'etichetta | |
Definisce il nome dell'etichetta |
SYSLINUX ha una caratteristica importante: consente di predisporre diversi file di aiuto selezionabili dall'utente, prima dell'avvio del kernel. Questi file possono essere visualizzati premendo i tasti funzionali, secondo quanto definito all'interno del file di configurazione.
Dal momento che SYSLINUX non visualizza l'elenco dei tasti utilizzabili, è opportuno che uno di questi file sia visualizzato inizialmente, attraverso l'istruzione DISPLAY
, e su questo, come su tutti gli altri, ci sia il riepilogo dei vari tasti che possono essere premuti.
Dischetto di avvio multiuso. "linux" avvia il kernel nel modo predefinito "floppy" avvia un dischetto come ramdisk "hda1" avvia il filesystem contenuto nella partizione /dev/hda1 Per ulteriori informazioni si può leggere la guida abbinata al tasto F2. F1=INTRO F2=VARIE |
Il kernel non è sempre in grado di individuare da solo tutti i dispositivi fisici installati e a volte si desidera comunque di potergli dare delle istruzioni prima del suo avvio. Si tratta di parametri che gli possono essere passati in vari modi:
per mezzo del prompt di avvio (boot prompt) quando si avvia attraverso LILO o attraverso SYSLINUX; | |
per mezzo di un'istruzione | |
attraverso gli argomenti di Loadlin. |
Questi parametri, quando sono forniti, vengono indicati tutti insieme, separati tra loro da uno spazio. Ogni parametro non può contenere spazi.
Nella sezione seguente vengono indicati solo alcuni tipi di questi parametri. In particolare, non vengono descritti quelli specifici per i vari tipi di hardware. Il capitolo 13 raccoglie più dettagli sui parametri di avvio.
Si tratta di indicazioni date al kernel senza riferimenti a tipi particolari di hardware.
root=<dispositivo> |
Permette di indicare un dispositivo differente da quello predefinito per montare il filesystem principale.
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.
rw |
Permette di definire un accesso iniziale al filesystem principale in lettura-scrittura.
mem=<dimensione> |
In caso di necessità, permette di definire la dimensione di memoria RAM che si ha a disposizione 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.
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.
reserve=<indirizzo-I/O>,<estensione>[,<indirizzo-I/O>,<estensione>]... |
Permette di isolare una o più zone di indirizzi di I/O in modo che il kernel non esegua alcun tentativo di identificazione di componenti in quella zona. Di solito, dopo un'opzione 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.
Come è stato accennato nella sezione 8.5, esistono diversi modi per fornire al kernel delle opzioni di avvio (o di boot). Questi esempi dovrebbero chiarire le possibilità che ci sono a disposizione.
boot:
linux1 root=/dev/hda1 ro
Attraverso la riga di comando di avvio di LILO, oppure di SYSLINUX, si avvia la configurazione identificata dal nome linux1
, si indica la partizione che si vuole montare come filesystem principale e l'accesso iniziale in sola lettura.
C:\>
LOADLIN C:\VMLINUZ root=/dev/hda1 ro
Come nell'esempio precedente, ma si avvia il sistema attraverso il programma Loadlin utilizzando il kernel C:\VMLINUZ
.
append="reserve=0x300,64 ether=11,0x300,eth0 ether=12,0x320,eth1" |
Attraverso l'istruzione append
del file /etc/lilo.conf
si riserva la zona di indirizzi I/O tra 0x300 e 0x33F e di seguito si specificano due schede di rete Ethernet che utilizzano proprio quella zona di indirizzi.
APPEND "reserve=0x300,64 ether=11,0x300,eth0 ether=12,0x320,eth1" |
Si tratta dello stesso esempio mostrato poco sopra, utilizzando però SYSLINUX e mettendo l'istruzione nel file SYSLINUX.CFG
.
Werner Almesberger, LILO Generic boot loader for Linux - User's guide | |
Paul Gortmaker, Linux BootPrompt HOWTO |
---------------------------
Appunti Linux 1999.07.12 --- Copyright © 1997-1999 Daniele Giacomini -- daniele @ evo.it
1.) Probabilmente, questa possibilità riguarda solo gli elaboratori di tipo PC.
2.) Dal momento che in un filesystem Dos-FAT non conta la differenza tra maiuscole e minuscole tra i nomi dei file, in pratica si tratta del file LINUX
.