LILO è uno dei sistemi di avvio di kernel Linux e di altri sistemi operativi, specifico per gli elaboratori di architettura x86. Il suo file di configurazione è /etc/lilo.conf
.
Solitamente, il file di configurazione viene creato in modo predefinito già in fase di installazione, utilizzando opzioni generiche.
Nella sostanza le direttive di configurazione hanno la forma di assegnamenti a variabili, intese come opzioni che hanno un ruolo nella fase di avvio del sistema. A parte il caso delle righe bianche e di quelle vuote, che vengono ignorate, oltre alla possibilità di indicare dei commenti preceduti dal simbolo #, si usa la sintassi seguente:
nome=valore_assegnato |
nome="valore_assegnato" |
opzione_booleana |
In particolare:
ogni direttiva deve essere disposta su una riga propria;
a seconda del contesto, i valori assegnati possono essere sensibili alla differenza tra maiuscole e minuscole;
è ammissibile l'uso di uno spazio (<SP>), prima e dopo il simbolo = che rappresenta l'assegnamento, ma in generale si preferisce ometterlo;
se si deve assegnare una stringa contenente uno o più spazi, occorre racchiuderla tra virgolette;
alcune direttive rappresentano un'opzione booleana, per cui è sufficiente annotarne il nome senza alcun assegnamento, per indicare implicitamente l'abilitazione dell'opzione relativa;
gli assegnamenti che non si possono ricondurre a direttive di configurazione, vengono intesi come assegnamenti a variabili di ambiente che poi sono passate al processo iniziale, tali e quali, rispettando anche l'uso delle lettere maiuscole o minuscole.
Le direttive di configurazione sono organizzate in sezioni: quelle della parte iniziale rappresentano la configurazione generale, mentre le sezioni specificano le particolarità delle voci che si possono selezionare nel momento dell'avvio del sistema operativo.
|
Le direttive che appaiono all'inizio del file di configurazione, prima della dichiarazione delle sezioni specifiche, riguardano tutte le sezioni sottostanti. Implicitamente appartengono alla sezione globale che non viene dichiarata espressamente. Nel seguito vengono descritte alcune di queste.
backup=file |
force-backup=file |
La prima delle due direttive, fa sì che nel momento in cui si installa il nuovo settore di avvio, venga fatta una copia di quello vecchio nel file specificato, a meno che il file in questione ci sia già, nel qual caso la copia non viene rifatta. In alternativa, la seconda direttiva non tiene conto dell'esistenza o meno del file, che eventualmente viene sovrascritto.
boot=file_di_dispositivo |
Indica il nome del file di dispositivo nel quale installare il settore di avvio. In generale si tratta del file di dispositivo corrispondente a tutto il primo disco, /dev/hda
, altrimenti, specie se si tratta di una partizione, significa che deve essere poi un altro sistema di avvio a prendersi carico dell'avvio di questo settore particolare.
compact |
Cerca di riunire le richieste di lettura relative a settori adiacenti in un'unica operazione, allo scopo di ridurre il tempo necessario a caricare il sistema operativo. L'uso di questa direttiva è particolarmente utile nella realizzazione di dischetti di avvio.
Questa direttiva è generalmente incompatibile con la direttiva LINEAR, che qui non viene descritta. |
default=riferimento_alla_sezione_predefinita |
Permette di definire quale voce selezionare in modo predefinito, tra quelle disponibili, in mancanza di una scelta precisa da parte dell'utente. Il nome che viene assegnato si riferisce a quanto dichiarato all'interno delle sezioni con la direttiva image=nome.
delay=decimi_di_secondo |
Permette di specificare un ritardo, espresso in decimi di secondo, prima di avviare il sistema. Potrebbe essere necessario in alcune situazioni particolari, per dare il tempo a qualche componente fisica dell'elaboratore di inizializzarsi. In particolare, assume già un valore predefinito quando si utilizza la direttiva serial per attivare l'uso di un terminale attraverso la porta seriale.
fix-table |
Questa opzione booleana, consente la correzione automatica della tabella delle partizioni, all'inizio delle partizioni stesse, nel caso queste non corrispondano allo standard normale. Si intuisce che questa facoltà possa creare dei disguidi se nel disco sono installati altri sistemi operativi con le loro convenzioni particolari.
ignore-table |
Con questa opzione booleana si fa in modo che vengano ignorate eventuali anomalie nella tabelle delle partizioni.
install=file |
Con questa direttiva si specifica esplicitamente il nome del file contenente il settore di avvio da installare. Se non si indica questa direttiva, viene usato in modo predefinito il file /boot/boot.b
.
keytable=file |
Questa direttiva stabilisce una rimappatura della tastiera secondo la codifica riportata nel file indicato. Il file in questione deve essere generato appositamente, tenendo conto della mappa di partenza (quella del BIOS) e di quella di destinazione.
Per ottenere questo file, si utilizza un programma che fa parte del pacchetto che compone LILO: può trattarsi di keytab-lilo.pl o di keytab-lilo. Questo utilizza le mappe di definizione della tastiera di un sistema GNU/Linux normale, per generare ciò che serve. L'esempio seguente si riferisce al caso in cui, dalla solita tastiera inglese si passi alla disposizione italiana dei tasti:
#
keytab-lilo /usr/share/keymaps/i386/qwerty/us.kmap.gz
\
\ /usr/share/keymaps/i386/qwerty/it.kmap.gz
\
\ > mappa_tastiera.lilo
[Invio]
Nell'esempio, il file che si ottiene è mappa_tastiera.lilo
.
map=file |
Specifica la posizione e il nome del file contenente la mappa necessaria per raggiungere il kernel e altre informazioni indispensabili all'avvio. Se non si indica esplicitamente tale direttiva, viene creato e usato il file /boot/map
in modo predefinito.
message=file |
Indica un file di testo contenente un messaggio che deve essere visualizzato all'avvio, prima dell'invito di LILO. La lunghezza massima del testo è di 65 535 byte; in particolare, il carattere <FF> (che si ottiene normalmente con la combinazione [Ctrl l]), genera una ripulitura dello schermo.
È importante sottolineare che lo spostamento o la modifica di questo file richiede la ricostruzione del file di mappa, ovvero |
nowarn |
Disabilita l'emissione di messaggi di avvertimento.
prompt |
Richiede la comparsa dell'invito. Di solito si usa questa direttiva assieme a timeout, per fissare un tempo massimo oltre il quale viene selezionata automaticamente la voce predefinita.
serial=porta[,velocità[parità[n-bit]]] |
Abilita l'interazione attraverso una porta seriale:
porta indica il numero della porta seriale, dove lo zero corrisponde alla prima, ovvero /dev/ttyS0
;
velocità si esprime in bit/s (bps) e si riferisce alla velocità di comunicazione della porta, dove i valori ammissibili sono 110, 300, 1 200, 2 400, 4 800, 9 600, 19 200 e 38 400, mentre il valore predefinito è 2 400;
parità rappresenta il tipo di parità usata dalla linea seriale, espresso attraverso la lettera n (nessuna parità), la lettera e (pari), oppure la lettera o (dispari);
n-bit rappresenta la dimensione dei caratteri trasmessi e sono ammissibili solo i valori 7 e 8, tenendo conto che in modo predefinito si intendono 8 bit se non si usa alcuna parità, altrimenti si intendono 7 bit.
A titolo di esempio, la direttiva serial=1,2400n8 fa riferimento alla seconda porta seriale, che viene inizializzata per una connessione a 2 400 bit/s, senza parità, con caratteri di 8 bit. In pratica, queste sono anche le impostazioni predefinite, per cui sarebbe stato sufficiente usare la direttiva abbreviata serial=1.
Si osservi che se si utilizza la direttiva serial, si stabilisce implicitamente un ritardo di due secondi, attraverso la direttiva delay=20.
timeout=decimi_di_secondo |
Questa direttiva stabilisce un tempo di attesa, espresso in decimi di secondo, per la selezione di una voce di avvio attraverso la tastiera, trascorso il quale viene scelta automaticamente quella predefinita (che può essere la prima, oppure quella dichiarata con la direttiva default). Lo zero indica di non attendere alcunché, mentre il valore -1 stabilisce un tempo indefinito. Se non si stabilisce questa direttiva, il tempo predefinito per la pausa è di cinque secondi, pari al valore 50.
verbose=n |
Permette di stabilire il livello di dettaglio desiderato per le informazioni emesse dall'eseguibile lilo. Si usano valori numerici interi, generalmente da zero a cinque, dove il valore più alto dà informazioni maggiori.
Un gruppo di direttive particolari, può essere usato sia in modo particolare, all'interno di sezioni che riguardano le varie voci di avvio, sia in modo globale, prima della dichiarazione di tali sezioni, dove rappresentano l'impostazione predefinita nel caso non vengano utilizzate nuovamente nelle sezioni.
append=parametri_di_avvio_del_kernel |
Aggiunge la stringa indicata tra i parametri del kernel.
initrd=file |
Specifica l'uso di un file da caricare all'avvio come disco RAM iniziale.
read-only |
Specifica che in fase di avvio il file system deve essere innestato in sola lettura. Ciò è necessario per la verifica e l'eventuale riparazione del file system, quando successivamente il sistema provvede automaticamente a reinnestarlo in lettura e scrittura.
read-write |
Specifica che in fase di avvio il file system deve essere innestato in lettura e scrittura.
root=file |
Indica il file di dispositivo che deve essere innestato come file system principale. Se non si utilizza questa direttiva, si intende implicitamente che si tratti della partizione o del disco in cui si trova già il file del kernel.
vga={normal|extended|ask|n} |
Specifica la modalità video VGA che deve essere impostata all'avvio. La parola chiave normal richiede espressamente la modalità testo normale, pari a 80×25; extended richiede la modalità testo 80×50; ask fa in modo che venga richiesto all'utente in fase di avvio; infine, un valore numerico corrisponde a una scelta equivalente dal menù che si otterrebbe con l'opzione ask.
lock |
Questa direttiva abilita la registrazione della riga di comando utilizzata all'avvio, relativa alla propria voce di avvio, allo scopo di riutilizzarla in modo predefinito negli avvii successivi.
password=parola_d'ordine |
Fa in modo che venga richiesta la parola d'ordine indicata per poter procedere. Naturalmente, occorre tenere presente che il file di configurazione contenente tale informazione, dovrebbe essere protetto in qualche modo, almeno dagli accessi di utenti diversi dall'amministratore.
restricted |
Questa direttiva può essere usata solo assieme a password e serve a stabilire che la richiesta di tale parola d'ordine avviene solo nel caso di inserimento di parametri di avvio per il kernel.
single-key |
La direttiva single-key consente di avviare un'immagine con la pressione di un solo tasto, senza l'aggiunta di un [Invio] finale. Per ottenere questo risultato, si può fare in modo che le varie direttive label definiscano dei nomi composti da un solo carattere, oppure si aggiunge alla direttiva label la direttiva alias, dove però si deve specificare un carattere differente dall'iniziale usata nel nome abbinato a label. In questo senso, è comune utilizzare delle direttive alias contenenti solo un numero.
L'avvio attraverso la pressione di un tasto singolo, impedisce l'inserimento di parametri per il kernel. Di conseguenza, per poter selezionare l'avvio, sia con un tasto singolo, sia con un nome, si usano entrambe le direttive label e alias, con l'accorgimento di non ripetere le iniziali.
Le voci selezionabili all'avvio, sono descritte all'interno di sezioni, che hanno la stesso aspetto delle direttive normali. Si tratta precisamente di queste due direttive:
image=file_immagine_del_kernel_da_avviare |
other=file_di_dispositivo |
Nel primo caso si fa riferimento a una sezione relativa a una voce di avvio per un kernel Linux; nel secondo si tratta dell'avvio di un altro settore di avvio, presumibilmente di un sistema operativo diverso da GNU/Linux.
Tutte le direttive successive a una di queste due, fino alla dichiarazione di una sezione successiva eventuale, rappresentano impostazioni particolari. In questo ambito, si possono indicare le direttive già descritte in precedenza, tranne quelle di competenza esclusivamente globale, oltre a quelle che vengono descritte qui in particolare.
label=nome |
Indica il nome attribuito a questa voce di avvio, che può essere selezionato al momento dell'invito.
alias=nome |
Specifica un nome alternativo per la voce a cui si riferisce.
loader=file |
Si usa nell'ambito di una sezione other, per indicare il file contenente il codice necessario per il caricamento di un settore di avvio successivo. In condizioni normali si tratta del file /boot/chain.b
, che viene utilizzato in modo predefinito quando non si specifica questa direttiva.
Se si intende utilizzare più di una sezione other, ognuna riferita a una partizione contenente una copia distinta di uno stesso sistema operativo, o anche di sistemi diversi, può succedere che LILO avvii sempre solo la prima di queste, nonostante il tentativo dell'utente di selezionarne un'altra. Si risolve il problema inserendo in tutte le sezioni other la direttiva loader=/boot/chain.b. |
map-drive=codice_virtuale to=codice_reale |
Queste due direttive, che si usano necessariamente in coppia, specificano lo scambio dei codici indicati, riferiti al BIOS, per ottenere in pratica lo scambio dell'identificazione dei dischi relativi. Ciò si ottiene attraverso il file /boot/chain.b
che installa un programma residente per la gestione di questo scambio, al di sopra del controllo del sistema operativo che si vuole avviare.
I codici in questione sono tipicamente 8016 per il primo disco ATA, 8116 per il secondo e così di seguito.
Si osservi che per ottenere uno scambio completo tra due dischi, occorre usare queste direttive due volte, per entrambi i casi: il primo disco che diventa il secondo e il secondo disco che diventa il primo. |
table=file_di_dispositivo |
Specifica, attraverso il file di dispositivo corrispondente, la tabella di partizione relativa al sistema operativo che si intende avviare. Si usa di solito nelle sezioni other, quando non si tratta dell'avvio di GNU/Linux.
L'esempio seguente può avviare un sistema GNU/Linux in due modi differenti, attraverso il file /boot/vmlinuz
e /boot/vmlinuz.1
, oppure un altro sistema operativo (in questo caso si tratta di MS-Windows).
La presenza di direttive alias, fa sì che si possano selezionare le voci per nome, potendo così aggiungere anche dei parametri per il kernel, oppure attraverso una sola cifra numerica.
Si può osservare che la voce linux, ovvero 1, richiede l'inserimento di una parola d'ordine nel caso si vogliano inserire dei parametri di avvio; inoltre, nel caso della voce prova, ovvero 2, è impedito l'inserimento di parametri di avvio, attraverso la direttiva lock.
|
L'estratto seguente, riguarda un gruppo di direttive relative all'avvio di sistemi operativi diversi da GNU/Linux. In particolare, si osserva il fatto che si tenta di avviare OS/2 dal secondo disco fisso PATA, cercando di imbrogliarlo, facendogli credere di essere sul primo. In quel caso particolare si deve usare anche un file speciale nella direttiva loader.
|
L'estratto seguente contiene due sezioni other per avviare due partizioni distinte contenenti copie indipendenti del sistema MS-Windows. Si osservi in particolare l'uso della direttiva loader = /boot/chain.b in ogni sezione other.
|
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net