Top: International: Italiano: Computer: Software: Sistemi Operativi: Linux: Installazione LiLo


[ history ]

Come configurare LILO (LInux LOader).


[ history ]

Configurazione di LILO

La configurazione di lilo è molto semplice. La parte un po' ostica è solo quello che ci sta dietro e le varie complicanze dei limiti dei 1024 cilindro.

Casistiche
Prima di tutto dobbiamo analizzare la situazione che ci si prospetta sul nostro computer. Per la configurazione di LILO, bisogna supporre che una distribuzione Linux è già installata. Questi i casi possibili:

1) Windows + Linux: in questo caso il bootloader di Windows deve essere completamente sovrascritto perchè non permette il boot di sistemi Linux. Per questo la configurazione di LILO è indispensabile. Lilo dovrà essere installato nel Master Boot Record (MBR) e permettere l'avvio dei due sistemi operativi.

2) Linux = in questo caso l'unico boot loader presente sul computer è LILO e anch'esso dovrà essere installato nell'MBR.

3) Linux + Linux = ammettendo che i due sistemi linux abbiano installato Lilo, si tratterà di scoprire quale sistema ha la versione più aggiornata, per configurarla come boot loader installato nell'MBR.

Come avete notato in tutti i casi si tratta di Installare LILO nel Master Boot Record. Nel secondo caso, bisogna prima trovare quale dei due sistemi ha la versione più recente. Si configurerà quindi quella più recente.

Avvio del sistema
L'avvio del sistema è fatto tramite floppy di boot o da HD (nel caso una versione di bootloader Linux sia già installata correttamente).

Vari metodi
Una volta avuto l'accesso alla console, esistono vari metodi per configurare LILO e questi metodi variano da distribuzione a distribuzione. Gli utenti Slackware possono usare il comando "liloconfig". Questo permette una configurazione in modalità pseudo-grafica uguale a quella dell'installazione del sistema. In tutte le distribuzione, comunque, si può configurare LILO mettendo mano al suo file di configurazione e al comando "lilo". Vediamo com'è strutturato il file di configurazione:

/etc/lilo.conf
Il file di configurazione di LILO è comunemente salvato in /etc/lilo.conf. Apriamolo quindi con il nostro editor preferito e analizziamolo:


# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
lba32 # Allow booting past 1024th cylinder with a recent BIOS
boot = /dev/hda
message = /boot/boot_message.txt
prompt
timeout = 50
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# Normal VGA console
#vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769
# End LILO global section
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda1
label = vmlinuz
read-only
append="hdc=ide-scsi"
# Linux bootable partition config ends


Un comune lilo.conf si trova sotto questa forma. Il file lilo.conf si divide in due parti:
1) La prima parte del file è un insieme di opzioni globali (dall'inizio fino a "END LILO global section")
2) la seconda parte definisce le immagini da bootare. (da "Linux bootable partition config begins" a "Linux bootable partition config ends"). Le immagini non sono altro che i vari sistemi operativi da scegliere all'avvio.
Vediamo quindi, prima di tutto, quali possono essere le opzioni globali.

Le opzioni globali
Le opzioni globali più importanti possono essere:

- boot=*boot_device* = Specifica dove si trova il settore di boot. Visto che noi installaremo il tutto nell'MBR, probabilmente sarà /dev/hda.
- default=*nome_immagine* = Specifica quale sarà l'immagine di default. Se questo parametro non sarà specificato, allora quella di default sarà la prima della lista.
- install=*boot_loader* = Specifica quale modalità del boot loader installare. Dalla versione 21.5 ci sono due tipi: boot testuale (/boot/boot-text.b) e grafico (/boot/boot-menu.b). Se questa opzione non è specificata, allora LILO assumerà /boot/boot.b come default. /boot/boot.b è comunque un link ad uno dei due bootloader. Quindi per cambiare modalità, basta ricreare il link al tipo diverso, senza inserire niente nel file /etc/lilo.conf
- lba32 = permette di superare il limite per LILO di risiedere su partizioni situate oltre il 1024esimo cilindro.
- menu-title=*stringa_del_titolo* = permette di modificare a nostro piacimento il nome della finestra di boot (se in modalità boot-menu.b), al posto della stringa "LILO Boot Menu". Se il boot avviene in modalità testuale, questo parametro non ha effetto.
- menu-scheme=*schema_colori* = permette di modificare lo schema di colori usato nel boot a menu. Il parametro schema_colori è una sequenza di 4 coppie di caratteri separati da due punti secondo lo schema: "colore_testo:colore_highlight:colore_bordo:colore_titolo". In ogni coppia, il primo carattere identifica il colore di foreground mentre il secondo quello di background. Se definito, solo la prima coppia è obbligatoria. I caratteri sono: K (nero), B (blu), G (verde), C (cyan), R (rosso), M (magenta), Y (giallo) e W (bianco). Lettere maiuscole per colori vistosi, minuscole per standard. Una combinazione del tipo: "Wm" è bianco intenso su magenta, "Yk:kw" è giallo intenso su nero, "wr:bw:wr:Yr" è quello di default di LILO. Se non è abilitato il boot a menu, questa direttiva non ha effetto.
- message=*file_messaggio* = specifica il file che contiene il messaggio di benvenuto. DI solito in /boot/boot_message.txt
- prompt = visualizza il prompt e aspetta l'utente che inserisca il nome dell'immagine da bootare.
- timeout=*tempo* = dice quanto tempo aspettare l'utente prima di bootare l'immagine di default. Il tempo è espresso in decimi di secondo (50 == 5secondi).
- vga=*tipo* = si può specificare sia globalmente che per ogni singola immagine. Permette l'uso del framebuffer in fase di boot, mostrando un logo del pinguino in alto (nella slackware).

Opzioni immagini
Ogni sezione immagine inizia con la linea:

image=*path_immagine_del_kernel_linux"

per un'immagine di un sistema Linux, altrimenti:

other=*dispositivo*

per caricare altri dispositivi (ad esempio eseguire il boot da floppy o da un'altra partizione diversa da linux)
Nel primo caso si specifica il kernel da usare per caricare quell'immagine. "path_immagine_del_kernel" è dove si trova il file del kernel relativo a quell'OS nella partizione di root (quella dove risiedono tutti i file di boot usati, di solito in /boot). Quindi, per caricare dei sistemi Linux di altre partizioni bisogna prima copiare l'immagine del kernel sulla partizione di boot, eventualmente rinominando l'immagine per non sovrascrivere quella locale.
Nel secondo caso, "device" indica la partizione dove risiede quell'OS.

Opzioni comuni ai due tipi di immagini
Queste opzioni possono essere usate sia per definire un other= o un image=.

- label=*nome* = il nome dell'immagine. E' quello che viene visualizzato nel menu di boot.
- password=*password* = una password da inserire per caricare l'immagine. Ottima cosa per gli intrusi...hihihi - optional = definisce l'immagine come opzionale. In questo modo, quando non è presente nella mappa creata dal bootloader, omette la voce dal menu. Molto utile per usare kernel di test che quindi non sono sempre presenti.


Opzioni delle immagini linux
- append=*stringa* = passa i valori contenuti in *stringa* come parametri al kernel. E' richiesto dal kernel in alcuni casi, come per definire un'emulazione scsi (per i masterizzatori), per settare impostazioni hardware come geometria dei dischi fissi, schede audio,ecc. Nella maggior parte dei casi il kernel non necessita di argomenti.
- ramdisk=*dimensione* = permette di specificare la dimensione della RAM al boot.
- read-only = monta il filesystem come read-only. Necessario e sicuro se il kernel effettua dei controlli sull'integrità del disco.
- read-write = Lo monta in modalità lettura-scrittura.
- root=*device* = specifica il device che dovrà essere montato come root. Praticamente questa opzione abbina l'immagine del kernel alla relativa partizione e quindi al relativo OS (ad esempio /dev/hdb1).
- vga=*modo* = specifica come verrà settato lo schermo durante il boot. Ci sono 4 opzioni: normal, extended, ask o *numero*. Normal usa il testo 80x25, extended 80x50, ask chiede al boot quale modalità usare, e *numero* (dove a *numero* sostituiremo un numero vero) definisce una modalità in automatico (equivalente a usare ask e premere INVIO). Una lista delle opzioni disponibili è riportata di solito nel file etc/lilo.conf. Usando il numero si può attiva la modalità framebuffer, dividendo lo schermo in due parti: nella prima visualizzerà il pinguino di Linux e nell'altra tutti i messaggi di boot.

Esempio
Adesso che abbiamo specificato tutte le opzioni, possiamo passare a vederne una configurazione "tipo", per capire bene:
. Voglio configurare un sistema tipo con Windows, una partizione Linux di boot e un'altra Linux protetta da una password al boot. Sapendo che windows si trova nella seconda partizione del primo HD, che il primo Linux si trova nella prima partizione del primo HD e che l'altro Linux si trova nell'unica partizione del secondo HD, ecco come procedo per impostare LILO dal Linux di boot:

+Dal Linux di boot monto il filesystem del Linux protetto
#mount /dev/hdb2 /mnt/linux2
+copio il kernel nella directory di boot rinominandolo
#cp /mnt/linux2/boot/vmlinuz /boot/linux2
+Apro il file /etc/lilo.conf e comincio la configurazione

# File di configurazione di LILO
# Permetto lettura oltre 1024 cilindro
lba32
#LILO verrà installato nel MBR
boot = /dev/hda
# L'opzione install la inserisco ma commentata, visto che boot.b è già di default e che boot.b punta a boot-menu.b
# install=/boot/boot.b
# Imposto il titolo della finestra
menu-title=Il mio computer
# imposto il set di colori. Giallo e nero
menu-scheme=Yk:kw
# Il messaggio di benvenuto lo modificherò dopo
message = /boot/boot_message.txt
# visualizzo il prompt
prompt
# setto il timeout a 10 secondi
timeout = 100
# imposto il sistema di default. Sarà linux di boot. Il label lo potete trovare nella sezione delle immagini
default=linux1
# Queste due opzioni non le abbiamo trattate (ma le trovate in man lilo.conf). Non fa valere dei valori di default che possono riscrivere la tabella delle partizioni
change-rules
reset
# Lascio scritta la lista delle varie possibilità di framebuffer, in modo da non doverle cercare in un secondo momento, ma limitandomi a decommentare quella che voglio usare:
# Normal VGA console
#vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769
# Fine della sezione Globale
# Comincia la sezione delle immagini.
# La prima immagine sarà quella di windows e avrà nome "windows"
other = /dev/hda2
label = windows

# La seconda partizione sarà quella Linux di boot con kernel in /boot/vmlinuz, nome linux1, read-only e con un masterizzatore
image = /boot/vmlinuz
root = /dev/hda1
label = linux1
read-only
append="hdc=ide-scsi"

# la terza partizione sarà quella Linux protetta con kernel in /boot/linux2, protetta da password, nome "Linux protetta".
image = /boot/linux2
root = /dev/hdb1
label = Linux_protetta

read-only
password=ciaobelli
# Finisce la parte delle immagini

+Salvo il file, esco e modifico il file del messaggio
#emacs /boot/boot_message.txt
+Ecco come si presenta il file modificato:

Il bootloader LILO ti saluta, straniero.

Inserisci o scegli il nome della partizione che vuoi avviare. Le opzioni sono:
- Windows
- Linux di Boot
- Linux protetto

+salvo il file, esco, e controllo che il link /boot/boot.b porti a /boot/boot-menu.b
#ls -l /boot/boot.b
lrwxrwxrwx 1 root root boot.b -> boot-menu.b

+se fosse linkato a quello testuale sarebbe bastato dare "rm /boot/boot.b && ln -s /boot/boot-menu.b /boot/boot.b"

Tutto è pronto ora per essere salvato e installato.

Completiamo
Per salvare il tutto occorre dare un semplicissimo comando:

#lilo -v

(da root). Lilo in questo modo ricontrollerà tutto e installerà il necessario, controllando che tutto sia in ordine. Se otterrete degli errori in questa fase, interpretateli e correggeteli. Quando non otterrete più errori riavviate il sistema e incrociate le dita. hehehehe...

Errori in fase di boot
A questo punto dovrebbe essere tutto a posto e al boot dovreste ottenere il menu con le tre opzioni. Se qualcosa dovesse andare storto, ve ne accorgereste subito. LILO infatti dà degli output di errore in fase di boot impossibili da interpretare. A volta invece di scrivere LILO e andare avanti scrive solo LIL oppure LI? ecc... Vediamo adesso a cosa corrisponde ciascun errore:

- L = indica un errore dei supporti
- LI = Non si riesce a trovare il kernel. Verificare la configurazione di lilo.conf e controllare che l'immagine esista.
- LIL = altro errore causato dai supporti. In questo caso è illeggibile il file della mappa (/boot/map).
- LIL? = un errore causato dal caricamento di un indirizzo non corretto
- LIL_ = Centra il limite del 1024 cilindro. Controllare le opzioni generali.
- LIL- = La tabella descriptor è corrotta.
- LILO = tutto OK!
Se nessuna di queste scritte appare, ciò vuole dire che lilo non è stato installato correttamente.

Approfondimenti -- Il processo di boot
- Accendiamo il PC
- Viene avviato un processo chiamato Power On Self Test (POST) che controlla possibili errori di memoria. Il test finisce quando sentiamo un bip (con più bip ci sono stati dei problemi).
- Viene avviato il BIOS (Basic Input/Basic Output) e letta la CMOS (la memoria del BIOS) per determinare l'hardware presente e le preferenze di inizializzazione del sistema da parte dell'utente.
- In base alle impostazioni della CMOS viene cercato un settore boot (floppy, cd, disco rigido... in base alle impostazioni della CMOS).
- Viene letto l'MBR (master boot record) del dispositivo di boot. L'MBR, a sua volta, trasmette il controllo al settore di boot della partizione attiva. Il settore di boot carica il sistema operativo.

Approfondimenti -- Il Master Boot Record
l'MBR rappresenta il settore iniziale di qualunque supporto. Nel caso del disco rigido risiederà in cylinder 0, head 0,sector 1 e contiene informazioni sul numero e sul tipo di partizioni, oltre ad un programma chiamato "bootstrap" (che rappresenta il boot loader) atto a caricare il sistema operativo. l'MBR viene scritto in fase di installazione di un sistema operativo o di un boot loader indipendente. Il Master Boot Record ha una dimensione di 512byte, di cui, i primi 446 sono dedicati ad un'area codice (Master Boot Code), i successivi 64byte sono riservati ad una tabella di partizioni (Master Boot Table) e gli ultimi 2byte sono di controllo (se non assumono valore AA55 allora l'MBR non viene ritenuto valido da nessun OS). La MBT contiene la descrizione di tutte le partizioni del disco rigido: un hard disk può avere solo 4 partizioni primarie dentro le quali si possono creare altre partizioni (dette logiche). A sua volta, ogni partizione è dotata di un Boot Sector che ha caratteristiche analoghe all'MBR ed esiste una partizione primaria, detta attiva, che rappresenta quella da cui il computer dovrebbe avviarsi, ovvero il suo Boot Sector normalmente contiene il kernel-loader del sistema operativo. Il MBC è una porzione di codice che viene caricato in memoria dal BIOS subito dopo la fase di POST. Questo codice costituisce generalmente proprio il boot loader ed è il primo ad essere eseguito dopo l'accensione del PC; il suo scopo è unico e consiste nell'avvio del sistema, l a modalità in cui ciò avviene è indipendente dal programma stesso.

Questo è tutto per LILO. Spero di avervi chiarito le idee su una della parti più importanti di un computer. Alla prossima.
Giulio.


[ history ]

based

1. OpenSiteProject - http://www.opensp.org/



 All text is available under the terms of the GNU Free Documentation License. (See Copyright Policy for details.) 
© Open-Site Foundation, Inc.
Hosted by Android Technologies, Inc. the medical robotics news source.
Visit our sister sites dmoz.org | mozilla.org | chefmoz.org | musicmoz.org