2.1.7 LILO
LILO
(LInux LOader) è un boot loader utilizzato da molte delle distribuzioni per il caricamento del
sistema GNU/Linux. Esso si compone di alcuni file presenti nella directory /boot, dal file
eseguibile lilo e dal file di configurazione /etc/lilo.conf. La directory /boot contiene i file
utilizzati per l’avvio del sistema (possono esservi file sia per GNU/Linux che per altri sistemi
operativi)
-
boot.b contenente il MBP e lo SBP di LILO;
-
map map file (creato da LILO) contenente la riga di comando per l’avvio del
sistema di default ed il nome del file immagine del kernel con il suo path (può
fare riferimento anche a più di un kernel). Può contenere anche il riferimento
ad un ramdisk iniziale;
-
chain.b contenente il chain loader;
LILO permette di scegliere il sistema da avviare per mezzo di un prompt
boot: _
o per mezzo di un’interfaccia grafica, di cui un esempio è riportato nella fig. 2.5.
Per avviare del sistema operativo vengono utilizzate le indicazioni presenti nel file di
configurazione /etc/lilo.conf, opportunamente codificate per mezzo del comando lilo
(man page lilo(8)), detto anche map installer, che inserisce/aggiorna il MBP di LILO
nel MBR ed aggiorna il file map. Il MBP precedente viene archiviato, se non è già
presente, in un file boot.number, dove number è il valore esadecimale corrispondente al
dispositivo che lo contiene. Analogamente, nel caso in cui LILO modifichi la partition
table, quella precedente viene archiviata nel file (a meno che esso non esista già)
part.number.
____________________________________________________________________
Comando: lilo
Path: /sbin/lilo
SINTASSI
# lilo [option]
DESCRIZIONE
-
option indica la modalità di funzionamento di lilo. Può assumere i seguenti valori:
-
-v incrementa il livello di verbosità (può essere specificata più volte);
-
-q elenca i file dei kernel ed il loro path;
-
-m map_file
indica di utilizzare il map file specificato da map_file al posto di quello
di default /boot/map;
-
-C config_file
indica di utilizzare il file di configurazione specificato da config_file
al posto di quello di default /etc/lilo.conf;
-
-d delay
indica il tempo da attendere (in decimi di secondo) prima di avviare
il kernel di default, secondo quanto specificato da delay;
-
-D label
indica l’etichetta (label), specificata nel file di configurazione, relativa
al kernel da considerare come default;
-
-r root_directory
indica di impostare come root directory quella specificata da root_
directory;
-
-t (test) non crea effettivamente un map file e non modifica il boot
sector;
-
-c abilita l’ottimizzazione del caricamento del kernel, velocizzandone la
fase di boot;
-
-f disk_tab
indica di utilizzare il file disk_tab per le specifiche della geometria del
disco, al posto del file di default /etc/disk_tab;
-
-i boot_sector
indica di sovrascrivere il boot sector con il contenuto del file
boot_sector anziché con quello del file /boot/boot.b;
-
-l indica di generare indirizzamenti lineari dei settori piuttosto che del
tipo CHS;
-
-L indica di generare indirizzamenti LBA piuttosto che CHS;
-
-P {fix|ignore}
ripara (fix) o ignora (ignore) le partition table non corrette;
-
-s save_file
indica il file in cui effettuare un backup del contenuto del boot
sector prima di sovrascriverlo. Per default viene utilizzato il file
boot.n, dove n è un valore esadecimale che identifica univocamente
la partizione di cui contiene il boot sector. Se specificato insieme a
-u, indica il file col quale ripristinare il boot sector;
-
-S save_file
come -s ma se save_file esiste già, lo sovrascrive;
-
-u device_name
rimuove LILO, ripristinando il boot sector con quello precedente;
-
-U device_name
come -u, ma non controlla il time-stamp del boot sector;
-
-R command
indica il comando di default (command) che il boot loader deve
eseguire soltanto la prossima volta che esso viene eseguito. Poi il
comando viene rimosso (si tratta di un comando once-only);
-
-I label
indica di visualizzare il path del kernel avviato (identificato da label),
subito dopo la fase di boot;
-
-V visualizza la versione di lilo;
____________________________________________________________________
Quando
L’indicazione dei dischi e delle partizioni utilizzata nel file di configurazione di
LILO avviene secondo la sintassi utilizzata da GNU/Linux: quindi /dev/hda è il
primo hard disk ATA, /dev/hdb il secondo, ... /dev/hda1 la prima partizione del
primo hard disk ATA, /dev/hda2 la seconda partizione del primo hard disk ATA, ...
(v. sez. 4.3).
Di seguito è riportato un esempio del file /etc/lilo.conf.
# Parte generale
boot=/dev/hda
prompt
default="GNU/Linux"
timeout=50
# Caricamento di Linux
image=/boot/vmlinuz
label="GNU/Linux"
root=/dev/hda2
read-only
# Caricamento di Windows (boot-loader)
other=/dev/hda1
label="Windows"
table=/dev/hda
Segue una breve spiegazione delle direttive contenute nell’esempio.
-
boot=/dev/hda
indica a LILO di installarsi nel primo settore del primo disco rigido, ovvero nel
suo MBR. Se si desidera installare LILO nel primo settore di una partizione,
ad esempio nel primo settore della prima partizione del primo disco ATA, la
direttiva da impartire sarebbe boot=/dev/hda1;
-
prompt indica a LILO di visualizzare il prompt (un invito ad inserire qualcosa) che
attende l’inserimento dell’etichetta (label) relativa al sistema che desidera
avviare;
-
default="GNU/Linux"
indica a LILO di avviare automaticamente il sistema identificato dall’etichetta
(label) “GNU/Linux” se non viene premuto alcun tasto entro i decimi di secondo
specificati da timeout;
-
timeout=50
indica a LILO di attendere la pressione di un tasto entro 50 decimi di secondo.
Se in tale intervallo di tempo non viene premuto nessun tasto, viene avviato
automaticamente il sistema relativo all’etichetta (label) indicata da default;
-
image=/boot/vmlinuz
indica l’inizio della definizione di un sistema da avviare. Si tratta di un’immagine
del kernel di Linux (/boot/vmlinuz). In questo caso è un file che si trova sul
filesystem montato come root directory da LILO (v. direttiva root=...);
È importante sottolineare che per ogni direttiva image deve essere
specificato un path relativo ad un filesystem montato sul sistema (cioè non
può essere indicato, ad esempio, /dev/hdb come parte del path), poiché
esso serve soltanto a lilo per aggiornare i riferimenti al file (e alla relativa
partizione) contenente il kernel da avviare.
|
-
label="GNU/Linux"
definisce l’etichetta “GNU/Linux” relativa all’avvio del sistema GNU/Linux;
-
root=/dev/hda2
indica la partizione del disco che deve essere montata come root directory
(in questo caso /dev/hda2 cioè la seconda partizione del primo hard disk
ATA);
-
read-only
indica di montare la root directory in sola lettura, in modo da permettere al
kernel di eseguire gli opportuni controlli di integrità prima di avviare il
sistema;
-
other=/dev/hda1
indica l’inizio della definizione di un sistema da avviare per il quale deve essere usato
un altro boot loader che si trova nel primo settore della partizione specificata (in
questo caso /dev/hda1);
-
label="Windows"
definisce l’etichetta “Windows” relativa all’avvio del sistema Windows;
-
table=/dev/hda
indica quale MBR contiene la tabella delle partizioni (in questo caso il MBR del primo
disco ATA).
Al prompt, oltre ad indicare l’etichetta relativa al sistema da avviare, è possibile
specificare i parametri da passare al kernel separati tra loro da uno spazio: ad esempio,
volendo avviare il sistema contraddistinto dall’etichetta “GNU/Linux” con i parametri
root=/dev/hdb2, ro e reboot=c, sarà sufficiente digitare al prompt di avvio
boot: GNU/Linux root=/dev/hdb2 ro reboot=c
Poiché LILO non gestisce alcun tipo di filesystem, esso si basa sul contenuto del file map
(creato da lilo) che contiene gli indirizzamenti fisici dei file necessari all’avvio del
sistema. Pertanto, ogni volta che uno dei componenti di LILO, incluso il file di
configurazione, viene cambiato, o viene modificato il file immagine del kernel, deve essere
necessariamente lanciato in esecuzione il programma lilo, che, oltre a provvedere a
controllare la correttezza del file di configurazione, elabora il contenuto dei file suddetti
ed inserisce le relative informazioni, opportunamente codificate, nei file boot.p e
map.
Durante il processo di avvio di LILO vengono visualizzate sullo schermo, una di seguito
all’altra, le lettere che compongono la stringa LILO. È così possibile, nel caso in cui vi siano
dei problmi durante l’avvio, avere un’idea a cosa essi si riferiscono. Infatti, il primo carattere
‘L’ viene visualizzato prima che il MBP carichi lo SBP, il carattere ‘I’ viene visualizzato
subito prima dell’avvio dello SBP, il secondo carattere ‘L’ viene visualizzato all’avvio dello
SBP e dil carattere ‘O’ viene visualizzato dopo aver caricato la riga di comando di
default e l’elenco dei descrittori dei sistemi operativi da caricare. Nel caso in cui
venissero incontrati dei problemi durante queste fasi, vengono visualizzati i relativi
codici.
Anche con LILO, è possibile utilizzare la tecnica del disk swapping per avviare
alcuni sistemi operativi che siano installati su un hard disk diverso dal primo, per
mezzo delle direttive map-drive e to, come riportato di seguito
map-drive = 0x80
to = 0x81
map-drive = 0x81
to = 0x80
|