Guida all'aggiornamento del kernel Gentoo Linux
1.
Introduzione
Il kernel è uno dei pochi pacchetti in portage che richiede un intervento
manuale da parte dell'utente per completare un aggiornamento. Portage può
scaricare ed installare il nuovo kernel autonomamente, ma dall'utente stesso ne
dipendono la configurazione e la compilazione.
Nonostante la guida sia scritta per gli utenti che intendono aggiornare il
proprio kernel da una release ad un'altra, può comunque essere utile a tutti
gli utenti che che passano da un particolare pacchetto del kernel ad un altro.
Il kernel utilizzato come esempio in questa guida è il gentoo-sources, in
ogni caso le istruzioni qui presenti possono essere applicate anche ad altri
pacchetti presenti in portage.
2.
Perché aggiornare il kernel?
Genericamente, l'aggiornamento del kernel da una release ad un'altra non porta
nessun evidente cambiamento. Nonostante cio' ci sono diverse ragioni per
aggiornare il kernel: una può essere quella di beneficiare dei vantaggi di una
nuova caratteristica o di un nuovo driver; un'altra può essere quella di
correggere un'eventuale problema di sicurezza, oppure semplicemente quella di
mantenere il sistema aggiornato.
Anche se si decidesse di non aggiornare ad ogni revisione del kernel è comunque
consigliato che questo venga aggiornato periodicamente. Inoltre è fortemente
raccomandato aggiornare il kernel se questo porta alla risoluzione di eventuali
problemi di sicurezza.
3.
Ottenere i sorgenti aggiornati tramite portage
Il kernel si aggiorna esattamente come si aggiornerebbe un qualunque altro
pacchetto - utilizzando emerge. Normalmente quindi si può decidere di
aggiornare il kernel quanto l'aggiornamento appare nell'elenco
dell'aggiornamento di world. Ad esempio:
Codice 3.1: I sorgenti di un nuovo kernel segnalati da un update world |
# emerge -Dup world
Calculating dependencies ...done!
[ebuild NS ] sys-kernel/gentoo-sources-2.6.9-r2 [2.6.8-r5]
|
Nota:
La presenza della sigla "NS" nell'output sopra indica che il kernel sarà
installato in un nuovo slot, quindi i sorgenti del vostro vecchio kernel
non verranno toccati sino a che non si deciderà di cancellarli manualmente.
|
A questo punto si può andare avanti ed installare l'aggiornamento, es.:
Codice 3.2: Aggiornare i sorgenti del kernel |
# emerge -u gentoo-sources
|
I sorgenti del kernel saranno quindi installati in una subdirectory in
/usr/src. Nell'esempio precedente verranno installati in
/usr/src/linux-2.6.9-gentoo-r2
4.
Aggiornare il link simbolico /usr/src/linux
Gentoo necessita che il collegamento simbolico /usr/src/linux punti
ai sorgenti del kernel che si sta utilizzando sulla macchina.
Portage può aggiornare anche il collegamento simbolico automaticamente quando si
effettua l'aggiornamento dei sorgenti. Tutto ciò che si deve fare è aggiungere
la flag symlink alle variabili USE nel proprio
/etc/make.conf.
Codice 4.1: Esempio delle variabili USE in /etc/make.conf |
USE="symlink x86 3dnow 3dnowex X aac aalib adns alsa apache2"
|
In alternativa, è possibile usare app-admin/eselect per modificare il
collegamento simbolico.
Codice 4.2: Usare eselect per modificare il symlink |
# emerge eselect
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.9-gentoo-r1
[2] linux-2.6.9-gentoo-r2
# eselect kernel set 1
|
Se si preferisce fare tutto da sè il prossimo esempio mostra come far puntare
il collegamento a linux-2.6.9-gentoo-r2:
Codice 4.3: Aggiornare il link simbolico /usr/src/linux manualmente |
# cd /usr/src
# ln -sfn linux-2.6.9-gentoo-r2 linux
|
5.
Configurare, compilare ed installare il nuovo kernel
Per ognuna di queste operazioni fare riferimento alla guida presente nel Manuale Gentoo, in particolare alle sezioni
Configurare il kernel e Configurare il Bootloader. Qui di
seguito vengono delineate le operazioni necessarie:
Opzione 1: configurare automaticamente il kernel con GenKernel
Se si è utenti Genkernel, tutto quello che bisogna fare è ripetere i passi fatti
la prima volta che si ha installato il kernel.
Eseguire semplicemente genkernel:
Codice 5.1: Avviare genkernel |
# genkernel all
|
È possibile inoltre utilizzare dei parametri aggiuntivi per attivare particolari
funzionalità di genkernel. Per esempio, se si desidera configurare alcune
opzioni attraverso menuconfig e che genkernel aggiorni automaticamente la
configurazione di grub, allora lanciare genkernel come segue:
Codice 5.2: Eseguire genkernel con alcuni comandi aggiuntivi |
# genkernel --menuconfig --bootloader=grub all
|
Per approfondire l'argomento seguire la
Guida a genkernel o fare riferimento al Manuale Gentoo. Molte delle opzioni di
genkernel possono essere direttamente impostate nel suo file di
configurazione: /etc/genkernel.conf
Opzione 2: Configurazione manuale
Per cominciare, avviare menuconfig nella directory dei sorgenti:
Codice 5.3: Avviare menuconfig |
# cd /usr/src/linux
# make menuconfig
|
Selezionare le voci che maggiormente si confanno alla propria configurazione
hardware ed alle proprie necessità. Per saperne di più sulla configurazione
del kernel fare riferimento al paragrafo intitolato Configurazione del
kernel del Manuale Gentoo.
Adesso compilare il proprio kernel e copiare l'immagine nella directory di boot.
Fare riferimento alla guida nel Manuale
Gentoo, in particolare al paragrafo Configurare il Bootloader. Se
/boot dovesse essere una partizione dedicata accertarsi di averla
montata prima di copiarvi il kernel appena compilato. Se non si fa questo non si
avvia il sistema con il nuovo kernel.
Codice 5.4: Compilare ed installare un nuovo kernel |
# make && make modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.9-gentoo-r2
|
Infine, si deve aggiornare la configurazione del bootloader, aggiungendo una
voce per il nuovo kernel (non cancellare ancora le vecchie voci!) e smontare
la partizione /boot, fare riferimento ancora una volta al
Manuale Gentoo per una descrizione
dettagliata di tale procedura.
6.
Reinstallare eventuali moduli esterni
Se si utilizzano moduli del kernel che non sono distribuiti con i sorgenti del
kernel ma che sono comunque presenti in portage (es. i driver ALSA, NVIDIA o
ATI), bisognerà reistallarli dopo avere completato l'installazione del nuovo
kernel. Tale procedura e' semplice e consiste nel riemergere gli eventuali
pacchetti interessati. Per ulteriori informazioni fare riferimento al paragrafo
Configurare il Kernel del Manuale
Gentoo.
Gentoo fornisce un semplice strumento (sys-kernel/module-rebuild) che
ricompila tutti i moduli del kernel installati con ebuild separati per il
kernel in /usr/src/linux. Il suo uso è semplicissimo. Dopo averlo
emerso, eseguire semplicemente module-rebuild populate, per popolare il
database con una lista di pacchetti che necessitano di essere ricompilati dopo
aver aggiornato o ricompilato il kernel. Una volta finito di aggiornare o
ricompilare il kernel, eseguire module-rebuild rebuild, in modo da
ricompilare i driver per il proprio nuovo kernel.
Per ulteriori informazioni, eseguire module-rebuild senza alcuna opzione
per visualizzare una lista di comandi che possono essere passati all'utilità.
7.
Riavviare col nuovo kernel
Successivamente chiudere tutte le applicazioni e riavviare il sistema. Se sono
state eseguito correttamente tutte le istruzioni della guida, il menu del
proprio bootloader dovrebbe includere una voce con il nuovo kernel. Selezionarlo
e far proseguire l'avvio del sistema.
Probabilmente il proprio sistema si avviera' col nuovo kernel e si potrà
continuare a fare qualunque cosa si stava facendo prima. Se cosi' fosse allora
l'aggiornamento del kernel e terminato ed e' andato a buon fine.
Se invece sono stati fatti degli errori ed il sistema non vorra' saperne di
avviarsi col nuovo kernel, riavviare il sistema e dal menu' del bootloader
scegliere il vecchio kernel, a questo punto si può riprendere da Configurare, compilare ed installare il nuovo kernel
correggendo gli eventuali errori. In alcuni casi non ci sarà bisogno di
riavviare per apportare qualche piccola modifica (es. se si ha dimenticato di
installare i driver per la propria scheda audio o per la propria scheda di
rete).
8.
Utilizzare kernel multipli
Probabilmente si avrà notato che quando si installano i sorgenti del nuovo
kernel quelli del vecchio kernel non vengono rimossi. Questo consentira' di
utilizzare senza problemi diversi kernel.
Utilizzare diversi kernel e' molto semplice lasciando i sorgenti in
/usr/src/ e lasciando l'immagine del kernel (bzImage)
in /boot. Ogni volta che si avvierà il sistema si potrà scegliere,
da una schermata del proprio bootloader, quale kernel avviare.
9.
Rimuovere i vecchi kernel
Nel momento in cui il nuovo kernel dovesse rispondere alle proprie necessità
non c'è più alcun motivo per tenere le versioni vecchie del kernel. Per
rimuovere semplicemente tutti i sorgenti per uno specifico kernel eccetto
quello più recente è possibile utilizzare l'opzione prune di
emerge. Ecco un esempio sempre con i gentoo-sources:
Codice 9.1: Effettuare il 'prune' delle vecchie versioni |
# emerge -P gentoo-sources
|
Nella maggior parte dei casi i file temporanei utilizzati durante la
compilazione rimarranno nella directory dei sorgenti /usr/src.
Potranno essere comunque rimossi tranquillamente utilizzando rm.
È anche possibile cancellare senza indugio ogni modulo utilizzato dal vecchio
kernel, rimuovendo la directory che fa riferimento al kernel vecchio in
/lib/modules/. Prestare comunque attenzione a non cancellare i
moduli del kernel che si ha ancora intenzione di utilizzare!
Dopo la rimozione dei sorgenti e dei moduli si può montare la partizione
/boot e rimuovere il file bzImage che fa riferimento
al/ai kernel appena disinstallato/i. Bisogna anche modificare la configurazione
del proprio bootloader in modo che non ci siano più riferimenti a questi kernel.
10.
Utilizzare il vecchio .config per configurare il nuovo kernel
E' comunque possibile risparmiare tempo nell'installazione di un nuovo kernel
utilizzando il file di configurazione del vecchio. Generalmente questa non e'
una procedura sicura viste le modifiche che possono intercorrere tra una release
e l'altra.
L'unica situazione appropriata e quando si aggiorna da una revisione all'altra
del kernel Gentoo. Per esempio, i cambiamenti tra gentoo-sources-2.6.9-r1
e gentoo-sources-2.6.9-r2 saranno molto pochi, ed e' questo un caso in
cui utilizzare il file di configurazione del vecchio kernel per il nuovo non
causera' problemi di sorta. Invece non e' consigliato utilizzare questo metodo
passando dal 2.6.8 al 2.6.9 ad esempio. In questo caso i cambiamente possono
essere tali da non garantire il controllo sulla configurazione.
Per utilizzare il .config del vecchio kernel basta copiarlo nella
directory dei sorgenti del nuovo kernel e poi dare un make oldconfig.
Nell'esempio che segue viene copiato il file di configurazione da
gentoo-sources-2.6.9-r1 a gentoo-sources-2.6.9-r2
Codice 10.1: Utilizzare il file di configurazione del vecchio kernel |
# cd /usr/src/linux-2.6.9-gentoo-r2
# cp ../linux-2.6.9-gentoo-r1/.config .
# make oldconfig
|
Codice 10.2: Riutilizzare la configurazione del vecchio kernel con genkernel |
# cd /etc/kernels
# cp kernel-config-x86-2.6.9-gentoo-r1 kernel-config-x86-2.6.9-gentoo-r2
# genkernel all
|
A questo punto potrebbe venire chiesto di configurare alcune opzioni che sono
cambiate tra le due versione dei gentoo-sources. Una volta fatto questo, si
potrà compilare ed installare il kernel come sempre, senza dover passare per
menuconfig.
Un metodo di aggiornamento molto più sicuro è quello di copiare la propria
configurazione come mostrato in precedenza, ed eseguire semplicemente make
menuconfig. In questo modo si evitano i problemi di make oldconfig
menzionati in precedenza, in quanto make menuconfig caricherà la
configurazione precedente il più possibile nel menu. Quello che occorrerà fare
successivamente sarà navigare attraverso le opzioni alla ricerca di nuove
sezioni, rimozioni, e così via. Usando menuconfig si guadagneranno i
contesti dei nuovi cambiamenti, e si potranno individuare facilmente le nuove
scelte e revisionarne le schermate di aiuto. È possibile perfino usare questo
metodo per aggiornamenti come quello dalla versione 2.6.8 alla 2.6.9; basta
assicurarsi di leggere attentamente le varie opzioni. Una volta completata
l'operazione, compilare ed installare normalmente il proprio kernel.
11.
Problemi dopo un aggiornamento del kernel?
Con la velocita' con cui viene sviluppato il kernel linux, e' possibile che
alcuni cambiamenti da una release all'altra diano qualche problema. Se si
dovessero avere dei problemi aggiornando il kernel si consiglia di fare
riferimento all'ultima versione di Guida ai Kernel Gentoo Linux e
poi rendere noto il problema agli sviluppatori di Gentoo.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|