Linux-Mandrake: Manuale di riferimento | ||
---|---|---|
Indietro | Capitolo 15. Compilazione e installazione di nuovi kernel | Avanti |
Il kernel compilato si trova nel file arch/i386/boot/bzImage (oppure zImage se avete scelto di lanciare make zImage). La directory standard in cui vengono installati i kernel è /boot. Dovete anche copiarvi il file System.map per essere sicuri che alcuni programmi (top, ad esempio) funzioneranno in modo corretto. Di nuovo, per amor di precisione e per identificare in maniera chiara i vostri kernel, è preferibile dare nomi basati sul numero di versione. I comandi da digitare sono i seguenti:
$ cp arch/i386/boot/bzImage /boot/vmlinux-2.4.4-foo $ cp System.map /boot/System.map-2.4.4-foo |
Adesso dovete comunicare al boot loader che sul vostro sistema è stato installato un nuovo kernel. Ci sono due possibilità: GRUB o LILO. Notate che al momento il boot loader standard utilizzato da Linux-Mandrake è GRUB.
Com'è ovvio, per prima cosa vogliamo essere sicuri di potere effettuare il boot usando il kernel attualmente in uso! Il metodo più semplice per aggiornare GRUB è usare DrakBoot (consultate il capitolo Modifica della configurazione di avvio del Manuale utente). In alternativa, potete modificare a mano il file di configurazione secondo le istruzioni che troverete qui di seguito.
Il file che dovete modificare è /boot/grub/menu.lst. Questo è l'aspetto tipico di un file menu.lst subito dopo aver installato una distribuzione Linux-Mandrake e prima di qualsiasi modifica:
timeout 5 color black/cyan yellow/cyan i18n (hd0,4)/boot/grub/messages keytable (hd0,4)/boot/fr-latin1.klt default 0 title linux kernel (hd0,4)/boot/vmlinuz root=/dev/hda5 title failsafe kernel (hd0,4)/boot/vmlinuz root=/dev/hda5 failsafe title Windows root (hd0,0) makeactive chainloader +1 title floppy root (fd0) chainloader +1 |
Questo file si compone di due parti: l'intestazione, che contiene le opzioni più comuni (le prime cinque righe), e le diverse sezioni (o entrate), ciascuna delle quali corrisponde a un diverso kernel di GNU/Linux oppure a un altro OS da voi specificato. timeout 5 determina la quantità di tempo (in secondi) che avete a disposizione prima che GRUB lanci il sistema operativo (o il kernel) predefinito. Questa opzione predefinita è determinata dalla direttiva default 0, che in questo caso specifica che la prima sezione è quella predefinita. La direttiva keytable, se presente, stabilisce dove si trova la mappa di tastiera scelta dall'utente: nell'esempio in questione si tratta di una tastiera francese; se tale direttiva non è presente, come opzione predefinita verrà usata una tastiera qwerty. Tutte le sigle hd(x,y) che vedete si riferiscono alla partizione numero y sul disco numero x secondo quanto vede il BIOS.
Quindi incontriamo la parte contenente le sezioni. Nel nostro esempio sono state definite quattro sezioni: linux, failsafe, windows, e floppy.
La riga di opzioni per la sezione linux comunica a GRUB qual è l'immagine di boot che vogliamo sia caricata (kernel hd(0,4)/boot/vmlinuz, ovvero il kernel vmlinuz che si trova nella directory /boot/ nella quarta partizione del primo disco rigido). Seguono le opzioni da passare al kernel specificato: in questo caso root=/dev/hda5 informa il kernel del fatto che il filesystem radice si trova nella partizione /dev/hda5. L'opzione /dev/hda5 corrisponde perfettamente alla stringa hd(0,4) usata da GRUB, ma nulla vieta che il kernel si trovi su di una partizione diversa rispetto al filesystem radice.
La sezione failsafe assomiglia molto alla precedente, fatta eccezione per il fatto che verrà comunicato un argomento al kernel (failsafe) per ordinargli di entrare in modalità "single user" (monoutente) o "rescue" (salvataggio).
La sezione Windows semplicemente ordina a GRUB di caricare il settore di boot della prima partizione, che probabilmente contiene un settore di boot di Windows.
L'ultima sezione, floppy, non fa altro che eseguire il boot a partire da un floppy disk inserito nel primo lettore, qualunque sia il sistema operativo installato su di esso. Potrebbe trattarsi di un dischetto di boot di Windows, o anche di un kernel GNU/Linux su dischetto.
![]() | A seconda del livello di sicurezza che usate sul vostro sistema, alcune delle voci qui descritte potrebbero non essere presenti nel vostro file di configurazione. |
Adesso arriviamo al nocciolo della questione: dobbiamo aggiungere un'altra sezione per comunicare a GRUB che abbiamo installato un nuovo kernel. In questo esempio verrà inserita prima delle altre entrate, ma niente vi impedisce di collocarla in un'altra posizione<:
title foo kernel (hd0,4)/boot/vmlinux-2.4.4-foo root=/dev/hda5 |
Non dimenticate di modificare questa entrata in base alla vostra effettiva configurazione hardware! Il filesystem radice di GNU/Linux qui si trova in /dev/hda5, ma è possibile (e probabile) che sulla vostra macchina risieda altrove.
E con questo abbiamo finito. A differenza di LILO, come vedremo tra poco, non dobbiamo fare nient'altro: è sufficiente riavviare il computer e la nuova entrata sarà ben visibile. Selezionatela e il vostro nuovo kernel verrà usato per il boot.
Se avete compilato il kernel abilitando l'opzione relativa al framebuffer, probabilmente vorrete usarlo: in tal caso, dovete istruire il kernel riguardo la risoluzione di partenza. La lista di modi video è disponibile nel file /usr/src/linux/Documentation/fb/vesafb.txt (soltanto nell'eventualità che si tratti del framebuffer VESA! Altrimenti, fate riferimento al file corrispondente). Per il modo 800x600 a 32 bit[1], il numero della modalità video è 0x315, perciò dovete aggiungere la direttiva:
vga=0x315 |
in maniera tale che la sezione diventi più o meno così:
title foo kernel (hd0,4)/boot/vmlinux-2.4.4-foo root=/dev/hda5 vga=0x315 |
Per avere ulteriori informazioni, per favore consultate le pagine info relative a GRUB (info grub).
Il modo più semplice di aggiornare LILO è usare DrakBoot (si veda il capitolo Modifica della configurazione di avvio nel Manuale utente). In alternativa, potete modificare a mano il file di configurazione secondo le istruzioni che troverete qui di seguito.
Il file di configurazione di LILO è /etc/lilo.conf. Quello che segue è un tipico esempio di lilo.conf subito dopo aver installato il pacchetto LILO e prima di ogni modifica:
boot=/dev/hda map=/boot/map install=/boot/boot.b vga=normal default=linux keytable=/boot/fr-latin1.klt lba32 prompt timeout=50 message=/boot/message image=/boot/vmlinuz-2.4.9-19mdk label=linux root=/dev/hda1 read-only other=/dev/hda2 label=dos table=/dev/hda |
Un file di configurazione lilo.conf consiste di una sezione principale seguita da una sezione per ogni sistema operativo (o kernel) dal quale si può effettuare il boot. Nell'esempio visto in precedenza, la sezione principale consiste delle seguenti istruzioni:
boot=/dev/hda map=/boot/map install=/boot/boot.b vga=normal default=linux keytable=/boot/fr-latin1.klt lba32 prompt timeout=50 message=/boot/message |
La direttiva boot= comunica a LILO dove deve installare il suo settore di boot; nel nostro esempio si tratta del MBR (Master Boot Record) del primo disco rigido IDE. Se desiderate creare un floppy disk basato su LILO, non dovete far altro che sostituire /dev/hda con /dev/fd0. La direttiva prompt impone a LILO di mostrare il menu al momento del boot: dato che è stato specificato un tempo di attesa, LILO procederà all'avvio del sistema usando l'immagine predefinita al momento in cui questo è esaurito (cioè dopo 5 secondi: timeout=50). Se cancellate la direttiva timeout=, LILO attenderà finché non avrete digitato qualcosa.
Segue poi una sezione linux:
image=/boot/vmlinuz-2.4.9-19mdk label=linux root=/dev/hda1 read-only |
Una sezione destinata a effettuare il boot di un kernel GNU/Linux comincia sempre con la direttiva image=, seguita dal percorso completo di un kernel GNU/Linux valido. Come ogni altra sezione, contiene un'etichetta label= che funge da identificatore univoco. La direttiva root= comunica a LILO qual è la partizione che ospita il filesystem root per questo sistema GNU/Linux. Ovviamente potrebbe essere diverso per il vostro sistema... La direttiva read-only ordina a LILO di montare questo filesystem root in modalità di sola lettura al momento dell'avvio del sistema: se questa direttiva non è presente, il fatto vi verrà segnalato con un messaggio di errore.
Subito dopo viene la sezione relativa a Windows:
other=/dev/hda2 label=dos table=/dev/hda |
Una sezione che comincia con other=, infatti, viene usata da LILO per avviare qualsiasi sistema operativo diverso da GNU/Linux: l'argomento passato a questa direttiva è il luogo in cui si trova il settore di boot di questo sistema operativo, nel caso specifico si tratta di un sistema Windows. Per trovare il settore di boot, situato all'inizio della partizione che ospita questo secondo sistema operativo, GNU/Linux ha anche bisogno di sapere dove si trova la tabella delle partizioni, che gli permetterà di individuare la partizione in questione: questa informazione la ottiene grazie alla direttiva table=. La direttiva label=, esattamente come in una sezione linux, serve per identificare la sezione.
Adesso è il momento di aggiungere una sezione che provvede ad avviare il sistema usando il nuovo kernel. Potete inserirla ovunque dopo la sezione principale, a patto che non venga inserita all'interno di un'altra sezione. Ecco quale sarà il suo aspetto:
image=/boot/vmlinux-2.4.4-foo label=foo root=/dev/hda1 read-only |
Non dimenticate di modificarla in base alla configurazione del vostro sistema! Non per caso che abbiamo immaginato una situazione diversa rispetto a quella che abbiamo usato prima per GRUB...
Se avete compilato il vostro kernel abilitando l'opzione relativa al framebuffer, fate riferimento al paragrafo corrispondente, visto in precedenza, per GRUB; la differenza adesso è che l'opzione si trova su una propria riga:
vga=0x315 |
Ecco l'aspetto che il nostro lilo.conf dovrebbe avere dopo tutte le modifiche apportate, compreso l'inserimento di qualche commento supplementare (tutte le righe che cominciano con un #), che verrà ignorato da LILO:
# # Sezione principale # boot=/dev/hda map=/boot/map install=/boot/boot.b # Al momento del boot vogliamo la VGA normale. Il framebuffer, se # lo usiamo, cambierà automaticamente la risoluzione: vga=normal # Il nostro messaggio di boot... message=/boot/message # L'immagine predefinita, indichiamo il nostro nuovo kernel: default=foo # Mostra il prompt... prompt # ... e aspetta 5 secondi timeout=50 # # Il nostro nuovo kernel: immagine predefinita # image=/boot/vmlinux-2.4.4-foo label=foo root=/dev/hda1 read-only # Se impieghiamo il framebuffer VESA: vga=0x315 # # Il kernel originale # image=/boot/vmlinuz-2.4.2-19mdk label=linux root=/dev/hda1 read-only # # La sezione Windows # other=/dev/hda2 label=dos table=/dev/hda |
Non dimenticate di adattare il file in modo che corrisponda alla vostra effettiva configurazione! Il filesystem root di GNU/Linux qui si trova in /dev/hda1, ma certo potrebbe risiedere altrove sul vostro sistema; lo stesso vale per il sistema operativo Windows.
Adesso che il file di configurazione è stato modificato in maniera appropriata, dovete dire a LILO di cambiare il settore di boot:
$ lilo Added foo * Added linux Added dos $ |
In questo modo avete la possibilità di compilare tutti i kernel che volete, e di aggiungere le sezioni necessarie per utilizzarli. Adesso non vi resta che riavviare il sistema per provare il nuovo kernel.
[1] | 8 bit significa 28 colori, cioè 256; 16 bit significa 216 colori, cioè 64k, o 65536, colori; alla risoluzione di 24 bit, come pure di 32, i colori sono codificati utilizzando 24 bit,s cioè 224 colori possibili, in altre parole 16M, o un po' più di 16 milioni di colori. |
Indietro | Partenza | Avanti |
Compilazione del kernel e dei moduli, installazione dei moduli | Risali | La compilazione e l'installazione di software libero |