16.6. Installazione del nuovo kernel

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.10-foo
$ cp System.map /boot/System.map-2.4.10-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 Mandrake Linux è LILO.

16.6.1. Aggiornamento di 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 dell'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 Mandrake Linux 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.

Nota

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.10-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.10-foo root=/dev/hda5 vga=0x315 

Per avere ulteriori informazioni, per favore consultate le pagine info relative a grub (info grub).

16.6.2. Aggiornamento di lilo

Il modo più semplice di aggiornare LILO è usare drakboot (si veda il capitolo Modifica della configurazione di avvio nel Manuale dell'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.8-17mdk
        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.8-17mdk
        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.10-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.10-foo
        label=foo
        root=/dev/hda1
        read-only
# Se impieghiamo il framebuffer VESA:
        vga=0x315
#
# Il kernel originale
#
image=/boot/vmlinuz-2.4.8-17mdk
        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.

Note

[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.


Tux on Star from MandrakeSoft Linux è un marchio registrato di Linus Torvalds. Tutti gli altri marchi e copyright appartengono ai rispettivi proprietari.
Se non diversamente specificato, i diritti di tutto il contenuto di queste pagine e di tutte le immagini sono proprietà di MandrakeSoft S.A. e MandrakeSoft Inc. 2001.
http://www.mandrakelinux.com/