La guida Gentoo per la migrazione completa a Linux 2.6
1.
Introduzione
Quali sono le novità di Linux 2.6?
Non è una domanda a cui si può rispondere facilmente. Linux 2.6 è il risultato
di oltre 2 anni di sviluppo e stabilizzazione di nuove funzionalità, ed è
architetturalmente molto diverso dalla sua controparte 2.4. Di seguito sono
elencati alcuni dei cambiamenti più importanti:
-
Miglioramento Schedulatore/Interattività: Linux dà una maggiore sensazione
di fluidità nei sistemi desktop e, sotto carico, risponde in modo migliore
di Linux 2.4
-
Scalabilità: Linux ora scala meglio in entrambe le direzioni - in piccoli
sistemi embedded e anche su sistemi con molti processori
-
Performance: le prestazioni delle applicazioni ordinarie sono di gran lunga
migliorate
-
Supporto hardware: Linux ora supporta più architetture e dispositivi
hardware non integrati di ogni altro sistema operativo.
Per chi fosse interessato, si può dare uno sguardo al documento molto
dettagliato scritto da Joseph Pranevich, The Wonderful World Of Linux
2.6. Se si desiderano dettagli più tecnici, si può fare riferimento al
documento The post-
halloween document, tenendo ben presente che ad oggi risulta alquanto
datato.
Gentoo e il kernel 2.6
Dal rilascio 2005.0 di Gentoo Linux, il kernel predefinito è dell'ultima serie
2.6. Il profilo predefinito viene prelevato da /etc/portage/make.profile
che, nella 2005.0 o successivi rilasci non è altro che un collegamento
simbolico a /usr/portage/profiles/default-linux/x86/2005.0 nel
quale sono contenuti varie impostazioni molto importanti.
Se si sta usando un profilo 2.4, bisogna cambiarlo con uno che supporti il
kernel 2.6 eseguendo la seguente operazione.
Codice 1.1: Cambiare il profilo |
# rm -f /etc/portage/make.profile
# ln -snf /usr/portage/profiles/default-linux/x86/2005.1 /etc/portage/make.profile
|
Cos'è udev?
In passato, gli utenti di Gentoo sono stati istruiti nell'utilizzo di
devfs per la gestione della directory /dev, contenente una
serie di interfacce ai dispositivi che permettono alle applicazioni di sistema
di comunicare con l'hardware (attraverso il kernel).
devfs, sebbene sia stato concepito ottimamente, ha dei problemi
strutturali interni, ed è stato rimosso completamente dal ramo stabile
principale a partire dalla versione 2.6.13 di Linux.
udev è la nuova modalità per gestire i nodi dei dispositivi. Risolve
vari problemi, inclusi tutti quelli dei precedenti gestori dei dispositivi.
Per l'utente finale questo cambiamento può non voler dire nulla o avere poco
significato, fortunatamente i bravissimi sviluppatori di Gentoo hanno messo
tutto il loro impegno nel rendere la migrazione da devfs il più semplice
possibile. È consigliabile leggere la Guida
ad udev su Gentoo per ulteriori informazioni su questo argomento.
Cos'è ALSA?
Con Linux 2.4, l'unico modo per far funzionare la scheda sonora era di usare i
driver OSS (open sound system). OSS è stato sostituito da una nuovo e migliore
insieme di driver: ALSA.
ALSA, ovvero Advanced Linux Sound Architecture (Architettura Avanzata del Suono
in Linux), è un nuova serie di driver per il suono, aventi nuove e migliori API,
presente nel kernel Linux 2.6. È retrocompatibile con le applicazioni OSS, a
condizione di selezionare le giuste opzioni di configurazione del kernel!
Nota:
Se non si dispone di nessun hardware audio/sonoro si possono ignorare
tranquillamente tutte le istruzioni, contenute in questo documento, relative ad
ALSA.
|
Cos'è LVM?
Logical Volume Management (LVM - Gestione Logica dei Volumi) è un insieme
di strumenti che permettono di gestire lo spazio su disco in maniera assai
flessibile. Tra le altre cose, permette un potente controllo sulle partizioni
(es. ridimensionamento senza bisogno di riavviare), e rende molto semplici
operazioni come il cambio di dispositivi. LVM rappresenta un'alternativa alla
classica gestione del disco basata sulle partizioni.
Il supporto a LVM è stato storicamente inserito in Linux 2.4. Linux 2.6 fornisce
una nuova versione di LVM, chiamata LVM2. Il processo di migrazione
richiede l'installazione di nuove versioni degli strumenti a livello utente
(operazione spiegata successivamente in questo documento) ma lascerà i vostri
dati completamente intatti!
Se attualmente non si sta usando LVM per la gestione della memorizzazione dei
dati, allora la migrazione a LVM2 è ininfluente. Se si rientra in questo
caso, si può ignorare tranquillamente qualsiasi riferimento a LVM/LVM2 nel
documento. L'aggiornamento a Linux 2.6 non richiede la memorizzazione
dei dati su partizioni LVM - si possono mantenere i dati in partizioni standard,
come si è sempre fatto.
Se non si è utenti LVM, ma si pensa che LVM2 possa essere utile, si possono
convertire i dischi a questo formato in un secondo momento, seguendo l'Installazione di Gentoo con LVM2. Per ora ci si
concentrerà nel l'effettuare la migrazione a Linux 2.6 il più fluidamente
possibile.
2.
Preparazione
Aggiornare il sistema
Qualcuna delle modifiche apportate in Linux 2.6 richiede dei cambiamenti nelle
applicazioni basilari di sistema. Prima di continuare, ci si deve assicurare che
il sistema sia aggiornato, e per esserne pienamente sicuri, si devono aggiornare
tutti i pacchetti installati (compresi quelli di sistema) aventi delle nuove
versioni disponibili.
In particolare, ci si assicuri di avere l'ultima versione stabile dei seguenti
pacchetti:
- sys-apps/baselayout
- sys-apps/util-linux
-
sys-kernel/genkernel (solo se si vuole usare genkernel, invece della
configurazione manuale)
Codice 2.1: Aggiornare tutti i pacchetti installati |
# emerge --sync
# emerge -ua world
|
modutils vs module-init-tools
sys-apps/modutils è il pacchetto che fornisce strumenti come
modprobe, rmmod e insmod per Linux 2.4.
Linux 2.6 introduce un nuovo formato dei moduli, ciò comporta l'uso di nuovi
strumenti per poterli gestire. Essi sono integrati nel pacchetto
sys-apps/module-init-tools.
A questo punto si può rimuovere modutils e installare module-init-tools:
Codice 2.2: Passare da modutils a module-init-tools |
# emerge --unmerge sys-apps/modutils
# emerge module-init-tools
|
Nota:
Non ci si deve preoccupare - anche se si ha appena rimosso modutils,
module-init-tools fornisce la retrocompatibilità con Linux 2.4, perciò si potrà
avviare il sistema con Linux 2.4 e gestire correttamente i suoi moduli.
|
Nota:
Per la ragione appena esposta, module-init-tools dovrebbe già essere installato
e funzionante per i kernel Linux 2.4 esistenti. In questo caso, non ci si deve
preoccupare di questo passaggio - il sistema nel quale si sta lavorando è già
pronto per gestire i moduli di Linux 2.6.
|
Installare udev
Non c'è nessuna configurazione coinvolta in questo passaggio. Si usi
semplicemente emerge per installare udev:
Codice 2.3: Installare udev |
# emerge -a udev
|
A questo punto si dovrebbe leggere la Guida
ad udev su Gentoo per avere un'idea più completa delle differenze tra
udev e devfs.
Verificare i file dei dispositivi essenziali
Quando il sistema si avvia, ha la necessità di accedere a degli essenziali file
dei dispositivi. Siccome udev non è incluso nel kernel, esso non viene attivato
immediatamente. Per aggirare questo inconveniente, ci si deve assicurare di
avere sul disco i file dei dispositivi necessari all'avvio del sistema.
Gli stage di installazione dovrebbero già aver creato i dispositivi richiesti
durante l'installazione iniziale. Tuttavia qualche utente ne ha riscontrato la
mancanza. Questa è l'occasione per verificare che esistano i file dei
dispositivi, e, in caso contrario, di crearli.
Siccome l'attuale gestore dei dispositivi sarà montato in /dev/,
non sarà possibile accedervi direttamente. Perciò si effettuerà il bind-mount
della partizione di root in un'altra locazione, e si accederà a
/dev/ da lì.
Codice 2.4: Efettuare il bind-mount della partizione di root ed elencare i dispositivi statici |
# mkdir -p /mnt/temp
# mount --rbind / /mnt/temp
# cd /mnt/temp/dev
# ls -l console null
|
Se il comando ls precedentemente elencato riporta la mancanza di
console o null, allora bisogna crearli manualmente, come mostrato
qui di seguito.
Codice 2.5: Creare i nodi console e null mancanti |
# mknod -m 660 console c 5 1
# mknod -m 660 null c 1 3
|
A questo punto si deve smontare la partizione di cui si era fatto il bind-mount,
anche se non si è dovuto creare manualmente i dispositivi:
Codice 2.6: Smontare la partizione di root bind-mounted |
# cd
# umount /mnt/temp
# rmdir /mnt/temp
|
Installare le utilità di ALSA
ALSA richiede che siano installati determinati pacchetti, per permettere alle
applicazioni di usare le API ALSA. Questi pacchetti, inoltre, permettono
all'utente di controllare il mixer e i livelli dei volumi. Si installino gli
strumenti richiesti in questo modo:
Codice 2.7: Installare le utilità e le librerie ALSA |
# emerge -a alsa-lib alsa-utils alsa-tools alsa-headers alsa-oss
|
3.
Installare i sorgenti di Linux 2.6
Scegliere e installare un kernel
La prima cosa da fare è scegliere quali sorgenti di un kernel 2.6 installare. I
due kernel 2.6 supportati da Gentoo sono attualmente gentoo-sources (per
i desktop) e hardened-sources (per i server). Nella Guida ai Kernel Gentoo Linux sono
elencate le altre possibilità di scelta.
In questa guida verrà utilizzati come esempio il pacchetto
gentoo-sources.Installare i sorgenti del kernel desiderato tramite
emerge:
Codice 3.1: Installare gentoo-sources |
# emerge -a gentoo-sources
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild NS ] sys-kernel/gentoo-sources-2.6.10-r4
Do you want me to merge these packages? [Yes/No] y
|
Se eseguendo il comando sopraelencato emerge vuole installare la versione 2.4 di
gentoo-sources (es. gentoo-sources-2.4.26), significa che si sta usando
un profilo non progettato per gli utenti di Linux 2.6. Si segua la Guida all'aggiornamento di Gentoo per
passare ad un profilo basato su Linux 2.6, riprovando successivamente a
installare i sorgenti del kernel 2.6.
Aggiornare il collegamento simbolico /usr/src/linux
Diversi componenti delle utilità di Gentoo fanno riferimento a
/usr/src/linux come collegamento simbolico ai sorgenti del kernel
in esecuzione (o che si sta compilando).
Si dovrà aggiornare di conseguenza il collegamento /usr/src/linux
facendolo puntare ai sorgenti del kernel appena installati, come mostrato
nell'esempio qui di seguito:
Codice 3.2: Aggiornare il collegamento simbolico /usr/src/linux |
# cd /usr/src
# ln -sfn linux-2.6.10-gentoo-r4 linux
|
4.
Errori comuni nella migrazione a Linux 2.6
Prima di addentrarsi nella configurazione del kernel, verranno elencati alcuni
degli errori più comuni in cui incorrono gli utenti che stanno migrando a Linux
2.6., in quanto qualcuno di questi punti influenzerà il modo in cui verrà
configurato il nuovo kernel.
Nota:
Delle problematiche elencate, alcune non sono rilevanti in questo fase, verranno
comunque tutte spiegate nel dettaglio, per avere un comodo riferimento in un
secondo momento.
|
Non usare "make oldconfig" con un .config 2.4
Nota:
Se non si capisce cosa significa, non ci si preoccupi, non si farà sicuramente
questo errore se si segue correttamente il resto della guida.
|
Verrebbero poste un sacco di domande, in quanto i cambiamenti avvenuti dalla
serie 2.4 alla 2.6 sono innumerevoli. Molte persone che provano ad eseguire
make oldconfig da una configurazione 2.4 finiscono per creare un kernel
inutilizzabile (es. senza output sullo schermo, senza input dalla tastiera,
ecc.). Si possono evitare queste seccature usando la tradizionale configurazione
tramite menuconfig anche solo per una volta.
Non usare ide-scsi per la masterizzazione CD/DVD
In Linux 2.4 l'unico modo per ottenere buoni risultati nella masterizzazione
CD/DVD era l'abilitazione (alquanto scomoda) dell'emulazione ide-scsi.
Per fortuna il layer IDE in Linux 2.6 è stato esteso per supportare in modo più
efficiente i masterizzatori CD/DVD.
Non occorre abilitare nessuna opzione extra per il supporto alla masterizzazione
CD. Basta solamente assicurarsi di non abilitare ide-scsi, come si
faceva abitualmente nei kernel 2.4.
Ora PC Speaker è un'opzione configurabile
Non si otterranno i normali beep della console (o qualsiasi risposta
dall'altoparlante PC) se non si abiliterà la nuova opzione per l'altoparlante PC
(CONFIG_INPUT_PCSPKR):
Codice 4.1: Locazione dell'opzione altoparlante PC |
Device Drivers --->
Input device support --->
[*] Misc
<*> PC Speaker support
|
Nota:
Con "altoparlante PC" ci si riferisce all'altoparlante analogico che emette un
segnale acustico ogni volta che il sistema si accende, non all'hardware sonoro
usato per ascoltare musica, ecc.
|
Il nuovo driver per i dispositivi a blocchi USB può dare dei
problemi
Recentemente è stato aggiunto al kernel un nuovo driver per i dispositivi di
archiviazione USB. Nel momento in cui si sta scrivendo questa guida, questo
driver ("ub") è ancora agli stadi iniziali di sviluppo, e per certi utenti
risulterà inutilizzabile. Se si riscontrano problemi nell'accedere a dispositivi
con interfaccia USB come dischi fissi, memorie flash, lettori di card,
fotocamere digitali, si provi a ritornare al vecchio driver "stile SCSI":
Codice 4.2: Disabilitare ub |
Device Drivers --->
Block devices --->
< > Low Performance USB Block driver
|
Nota:
Il vecchio driver "stile SCSI" (USB Mass Storage support) è abilitato in modo
predefinito. Si trova nel menù "Device Drivers --> USB support", ma
generalmente non entra in funzione se è presente anche ub.
|
usbdevfs rinominato in usbfs
Se si ha modificato /etc/fstab per personalizzare il modo in cui
il filesystem dei dispositivi USB viene montato, si dovrà modificare il tipo di
filesystem da usbdevfs a usbfs.
Nota:
I kernel 2.4 più recenti permettono l'utilizzo sia di "usbfs" che di "usbdevfs",
per cui non si rischia di interrompere nessuna retrocompatibilità, eseguendo
questa operazione.
|
Non eseguire X con una priorità maggiore
Se si è utenti desktop 2.4, probabilmente si avrà modificato il sistema per
eseguire X con una priorità maggiore per avere prestazioni desktop migliori.
I molti cambiamenti apportati alla schedulazione nel kernel 2.6 modificano
questo funzionamento. Se si continua ad eseguire X con una priorità maggiore,
si otterrà esattamente quello che si desiderava (eseguire il server
grafico con una priorità molto alta) ma con la conseguenza di avere i suoni
a scatti e tempi di avvio molto lunghi per le applicazioni, perchè la CPU
spenderà troppo tempo a servire X e solo X.
In Linux 2.6 non c'è più la necessità di eseguire le applicazioni con una
priorità maggiore per ottenere una buona interattività, per cui è consigliabile
rimuovere tutte le modifiche riguardanti il "niceness" dei programmi!
Il file di configurazione di X11 ora usa /dev/input/mice per i mouse PS/2
e USB
Uno dei cambiamenti introdotti dalla configurazione predefinita di udev è la
differente organizzazione dei nodi dispositivo relativi ai mouse. In precedenza
si avevano nodi tipo /dev/psaux e /dev/mouse. Ora si
avranno nodi tipo /dev/input/mouse0,
/dev/input/mouse1, e un nodo collettivo
/dev/input/mice che combina i movimenti da tutti i mouse.
Fino a che la vecchia configurazione di X farà riferimento a
/dev/mouse o /dev/psaux si otterrà, tentando di
eseguire X11, un errore simile a quello mostrato di seguito:
Codice 4.3: Errore comune quando si esegue X in un sistema udev per la prima volta |
(EE) xf86OpenSerial: Cannot open device /dev/mouse
No such file or directory.
(EE) Mouse0: cannot open input device
(EE) PreInit failed for input device "Mouse0"
No core pointer
|
Per correggere ciò, si apra il file di configurazione di X11 in un editor di
testo, aggiornando la sezione InputDevice relativa al mouse, specificando
l'uso del dispositivo /dev/input/mice. Qui di seguito viene
mostrato un esempio:
Codice 4.4: Aprire il file di configurazione di X11 |
# nano -w /etc/X11/xorg.conf
|
Nota:
Se si sta ancora usando XFree86, il file di configurazione sarà
/etc/X11/XF86Config
|
Codice 4.5: Sezione d'esempio InputDevice del mouse |
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
EndSection
|
Nota:
Se si sta usando un mouse seriale, il nuovo percorso del dispositivo sarà
/dev/tts/0 invece di /dev/ttyS0.
|
I nuovi driver Serial-ATA (SATA) indicano i dispositivi
diversamente
Se si usavano i driver originali Serial ATA in Linux 2.4, probabilmente si è
osservato che i dispositivi SATA avevano nomi tipo /dev/hde.
Linux 2.6 introduce dei nuovi driver SATA (libata) basati sul sottosistema SCSI.
Siccome questi driver sono basati su SCSI, i dischi SATA appariranno come
dispositivi SCSI. Il primo disco SATA si chiamerà /dev/sda.
Bisognerà aggiornare /etc/fstab per rispecchiare i cambiamenti,
tenendoli in mente successivamente, al momento di scegliere il parametro d'avvio
"root/real_root" del kernel.
Nota:
È stato effettuato il backport di libata nelle recenti versioni di Linux 2.4,
per cui si avrà familiarità con la nuova denominazione dei dispositivi.
|
bootsplash non è più mantenuto
Se si usava il kernel gentoo-sources-2.4, probabilmente sarà stata usata
la funzionalità di bootsplash, per ottenere una console colorata tramite
il framebuffer.
Lo sviluppatore di bootsplash sembra abbia perso interesse per il suo progetto,
per via di problemi progettuali. Tuttavia lo sviluppatore Michał
Januszewski sta sviluppando un successore, gensplash, incluso nel
kernel gentoo-sources-2.6. Si può seguire il documento
Gensplash in 5 semplici passi (in inglese) per familiarizzare con il
funzionamento di gensplash.
I driver I2C ora sono inclusi nel kernel
Se si usa lm-sensors per monitorare le temperature del sistema e i
livelli di alimentazione, precedentemente si aveva bisogno del pacchetto
i2c per fornire il supporto hardware.
I driver hardware I2C ora sono inclusi nel kernel Linux 2.6, il pacchetto
esterno i2c non è più richiesto. Si ricordi di compilare il supporto ai
dispositivi I2C specifici per il proprio sistema nella configurazione del
kernel. Si potrà utilizzare lm-sensors come di consueto.
5.
Configurare, compilare ed installare il kernel
Come con Linux 2.4, si hanno due opzioni per gestire la compilazione di un nuovo
kernel.
-
Il metodo predefinito è la configurazione manuale del kernel. Ciò può
scoraggiare ma è la scelta migliore se si conosce bene il proprio sistema.
Se si vuole configurare manualmente il kernel, si può passare al prossimo capitolo.
-
L'opzione alternativa è usare lo strumento genkernel che permette la
configurazione, compilazione ed installazione automatica del kernel. Se si
desidera usare genkernel si può saltare il prossimo capitolo e
passare all'utilizzo di genkernel.
6.
Modalità predefinita: Configurazione manuale
Configurare il kernel
Si procederà ora alla configurazione del kernel. Si apra menuconfig nel solito
modo:
Codice 6.1: Invocare menuconfig |
# cd /usr/src/linux
# make menuconfig
|
Probabilmente l'utilizzo di menuconfig sarà familiare, avendo già configurato i
kernel 2.4. Fortunatamente, l'interfaccia è stata cambiata quasi per intero,
tuttavia si noterà una migliore organizzazione delle opzioni del kernel e
molte nuove opzioni che non erano presenti nella versione 2.4.
Ci si assicuri di abilitare le importanti opzioni riportate qui di seguito:
Codice 6.2: Opzioni necessarie del kernel |
File systems --->
Pseudo Filesystems --->
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
General setup --->
[*] Support for hot-pluggable devices
Device Drivers --->
Sound --->
<*> Sound card support
Advanced Linux Sound Architecture --->
<M> Advanced Linux Sound Architecture
<M> Sequencer support
<M> OSS Mixer API
[*] OSS Sequencer API
Device Drivers --->
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
<*> Device mapper support
|
Avvertenza:
Probabilmente in precedenza si includeva il supporto per il filesystem
/dev (ora marcato come OBSOLETO). Non si deve abilitare il supporto
a devfs, in quanto da questo momento, al suo posto, verrà utilizzato udev.
|
Inoltre ci si deve ricordare di abilitare il supporto ai filesystem utilizzati e
all'hardware presente nel proprio sistema. Ci si assicuri di abilitare il
supporto al controller IDE della propria scheda madre per velocizzare, tramite
il DMA, l'accesso ai dischi. Per ulteriori informazioni si faccia riferimento
alla sezione Configurare il
kernel del Manuale Gentoo
Compilare il kernel
Dopo aver configurato il kernel, si può procedere al processo di compilazione:
Codice 6.3: Compilare i sorgenti del kernel |
# make && make modules_install
|
Nota:
Con i sorgenti di Linux 2.4 era richiesta l'esecuzione di make dep. Ora
questa operazione non è più richiesta.
|
Si aspetti il completamento della compilazione del kernel (e si osservi l'output
di compilazione molto più leggibile).
Installare il kernel
Il prossimo passaggio consiste nel montaggio della partizione /boot
in cui si copierà l'immagine del kernel. Si dovrà poi aggiornare manualmente la
configurazione del bootloader.
Codice 6.4: Installare il kernel |
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.10-gentoo-r4
|
È da notare che le istruzioni precedentemente elencate sono solo un esempio, si
dovrebbe seguire l'usuale procedura di aggiornamento del kernel tramite le
istruzioni nel Manuale Gentoo
(si legga il capitolo Configurare il
kernel).
Nell'aggiornamento della configurazione del bootloader, è consigliabile non
rimuovere la voce relativa al kernel 2.4. In questo modo si può facilmente
passare da uno all'altro nel caso qualcosa non funzioni correttamente.
A questo punto si prosegue con la sezione relativa alla Configurazione dei Moduli.
7.
Alternativa: Usare genkernel
Se si preferisce utilizzare genkernel al posto della configurazione manuale
del kernel, potrà far piacere sapere che con genkernel la creazione dei kernel
2.6 è molto simile al processo che si eseguiva per i precedenti kernel 2.4.
Si deve invocare genkernel nel seguente modo:
Codice 7.1: Invocare genkernel con alcuni dei parametri principali |
# genkernel --udev --menuconfig --bootloader=grub all
|
Nel precedente esempio, ci si avvantaggia inoltre delle funzionalità di
genkernel che permettono l'apertura di menuconfig per permettere di
personalizzare la configurazione del kernel (se lo si desidera), e di aggiornare
la configurazione del bootloader grub dopo la compilazione.
Si dovranno passare a genkernel gli argomento appropriati per le proprie
necessità, ma non ci deve dimenticare di includere l'argomento --udev! Si
faccia riferimento alla Guida Gentoo Linux
Genkernel e al capitolo Configurare il
kernel del Manuale Gentoo
per ulteriori informazioni.
Se si è scelto di aggiornare manualmente la configurazione del bootloader, ci
si deve ricordare di includere udev tra i parametri passati al kernel.
Qui di seguito viene mostrata un esempio di sezione della configurazione di
grub, si presti attenzione però nell'adattare il parametro real_root al
sistema che si sta usando.
Codice 7.2: Configurazione d'esempio di GRUB per genkernel + udev |
title Gentoo Linux (2.6 kernel)
root (hd0,0)
kernel /kernel-2.6.10-gentoo-r4 udev root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3
initrd /initrd-2.6.10-gentoo-r4
|
8.
Configurazione dei Moduli
Installare moduli esterni
Molti utenti fanno affidamento a moduli aggiuntivi del kernel, che vengono
creati esternamente all'albero dei sorgenti. Esempi comuni sono i driver
grafici binari di ATI e Nvidia. Se si necessita di installare questi moduli, i
quali vengono compilati rispetto ai sorgenti 2.6 trovati in
/usr/src/linux, basta eseguire emerge nomepacchetto per
tutti i moduli esterni usati con il kernel 2.4.
Si faccia nuovamente riferimento al capitolo Configurare il
kernel del Manuale Gentoo per
ulteriori informazioni.
Caricamento automatico dei moduli
Si potrebbe aver deciso di compilare dei componenti del kernel come moduli
(piuttosto che compilarli direttamente nel kernel) e volerli caricare
automaticamente durante l'avvio, come nel kernel 2.4. Inoltre, si potrebbe
volere caricare in automatico anche i moduli esterni presenti nell'albero di
portage (come descritto precedentemente).
Per ottenere questo modificare /etc/conf.d/modules con l'editor
di testo preferito ed elencare i nomi dei moduli che si desidera caricare in automatico.
Codice 8.1: Aprire con nano l'elenco dei moduli da caricare in automatico |
# nano -w /etc/conf.d/modules
|
Codice 8.2: Esempio di configurazione per il caricamento dei moduli 3c59x e nvidia |
modules="3c59x nvidia"
|
9.
Migrazione da LVM a LVM2
Aggiornamento agli strumenti di LVM2
Nota:
Se non si utilizza LVM per gestire la memorizzazione su disco dei dati, si può
tranquillamente saltare questo capitolo e passare al successivo.
|
Fortunatamente l'aggiornamento degli strumenti utente LVM1 alla versione LVM2 è
molto semplice:
Codice 9.1: Aggiornare gli strumenti utente da LVM1 a LVM2 |
# emerge --unmerge lvm-user
# emerge lvm2
|
Nota:
Bisognerà ri-emergere lvm-user se si pensa di tornare ad utilizzare un
kernel 2.4, in quanto lvm2 in sé non è sufficiente per il funzionamento
di LVM su tali versioni del kernel.
|
10.
Avviare il sistema in Linux 2.6
È ora di avviare il sistema in Linux 2.6. si chiudano tutte le applicazioni e
si riavvii:
Codice 10.1: Riavvio |
# umount /boot
# reboot
|
Dopo il riavvio, se si ha seguito correttamente dall'inizio questa guida, si
avrà l'opzione, tramite il bootloader, di caricare Linux 2.4 o Linux 2.6.
Scegliere Linux 2.6
Una volta che il sistema si è avviato, verificare che tutto funzioni. Se si ha
commesso qualche errore nella configurazione del kernel non c'è da
preoccuparsi, basta tornare indietro alla sezione Configurare,
compilare ed installare il kernel, effettuare i cambiamenti, ricompilare
e installare la nuova immagine del kernel, riavviare e riprovare ancora!
Configurare e attivare ALSA
Per completare la configurazione di ALSA e attivare i canali audio, il
pacchetto di ALSA fornisce un utilissimo strumento per rendere il processo
relativamente semplice:
Codice 10.2: Eseguire lo strumento di configurazione automatica di ALSA |
# alsaconf
|
La procedura è facile: dopo aver aggiornato automaticamente il file
/etc/modules.d/alsa e riavviato ALSA, alsaconf terminerà, tuttavia si
dovrà rieseguirlo più volte se si hanno diverse schede sonore installate nel
sistema.
A questo punto si dovrà aggiungere alsasound al runlevel di boot, per
permettere il salvataggio dei volumi allo spegnimento del sistema, e il loro
ripristino durante l'avvio:
Codice 10.3: Aggiungere alsasound al runlevel di boot |
# rc-update add alsasound boot
|
Nota:
Lo strumento alsaconf sceglie dei livelli iniziali di volume per la
scheda sonora in uso. Se dovessero essere inappropriati, si possono modificare
in qualsiasi momento tramite l'utilità alsamixer.
|
Si riscontrano da subito dei problemi?
Se si riscontrano da subito dei problemi, è consigliabile tornare indietro alla
sezione Errori comuni nella migrazione a Linux 2.6
per risolverli.
11.
File Header e NPTL
Arrivati a questo punto Linux 2.6 dovrebbe essere in esecuzione, e tutti i
problemi dovrebbero essere risolti. Ora bisogna aggiornare i file header del
kernel Linux e riemergere le librerie glibc per permettere alle applicazioni
utente di sfruttare le nuove funzionalità di Linux 2.6.
Codice 11.1: Aggiornare linux-headers |
# emerge -u linux-headers
|
A seguito dell'aggiornamento del pacchetto degli header, generalmente si
dovranno riemergere le librerie glibc. C'è una nuova funzionalità molto
interessante, chiamata NPTL. NPTL è un nuovo modello di threading presente in
Linux 2.6, che fornisce un meccanismo più veloce di creazione e distruzione dei
thread. Sul molti sistemi potrà non fare molta differenza, comunque si ha la
possibilità di abilitarlo durante il processo di migrazione. Per abilitare NPTL,
si deve modificare /etc/portage/make.conf, aggiungendo nptl alla
variabile USE.
Avvertenza:
Se si sceglie di abilitare anche la flag "nptlonly", è da tenere ben presente
che non si riuscirà più ad avviare un kernel 2.4
|
A questo punto effettuare nuovamente l'emerge di glibc (lo si dovrebbe fare
anche se non si ha scelto di abilitare NPTL).
Codice 11.2: Reinstallare glibc con i nuovi header del kernel |
# emerge -a glibc
|
Se NPTL è stato abilitato, i binari esistenti non lo useranno finché non
verranno ricompilati. Tuttavia, qualsiasi binario compilato da questo punto in
avanti userà NPTL. Volendo si più ricompilare da subito tutti i
pacchetti, come nell'esempio:
Codice 11.3: Ricompilare tutti i pacchetti installati nel sistema |
# emerge -e world
|
In alternativa, si può semplicemente lasciare che il sistema converta
"naturalmente" sé stesso a NPTL, aggiornando i pacchetti alle nuove versioni
quando esse vengono rilasciate.
12.
Note finali
Problemi?
Con l'incredibile mole di lavoro che Linux 2.6 porta con sé, è inevitabile che
talvolta le cose che prima (con Linux 2.4) funzionavano correttamente, con
Linux 2.6 non funzionino più come ci si aspettava.
Se si riscontrano problemi con il kernel 2.6, e si può confermare che questi
problemi non si verificavano con Linux 2.4, si prega di aprire un bug in Bugzilla. Il problema verrà analizzato e se
verrà riscontrato che il problema risiede nella struttura principale del kernel,
verrà chiesto di inviare un report nel bugzilla principale del kernel.
Conclusione
Si auspica che, a questo punto, la migrazione sia stata effettuata senza
imprevisti, e che si stia giovando dei benefici apportati da Linux 2.6 rispetto
alla versione 2.4.
L'autore ringrazia tutti quegli utenti che hanno effettivamente 'testato' questo
documento mentre era nelle sue prime fasi di sviluppo, e quelli che hanno
fornito dei feedback sul processo di migrazione. Inoltre l'autore si scusa se
non è riuscito a rispondere a tutte le e-mail (erano un sacco!), comunque le ha
lette una per una, rifinendo questo documento dove appropriato. È ora di godersi
il proprio sistema potenziato con il kernel 2.6 :)
Rimuovere Linux 2.4 dal proprio sistema
È probabile che Linux 2.4 non sia più indispensabile, dopo aver usato la
versione 2.6 per un certo tempo. Per pulire il sistema si possono seguire le
operazioni dettagliate successivamente. Si segua la procedura in questa
sezione solo se si è sicuri che non si vuole o non si necessita più del kernel
2.4!
I sorgenti del kernel 2.4 possono essere rimossi normalmente tramite lo
strumento emerge. Supponendo di avere installato le versioni 2.4 dei
vanilla-sources e gentoo-sources, li si potrà rimuovere, mantenendo intatte le
versioni 2.6, con il seguente comando:
Codice 12.1: Esempio: Rimuovere i sorgenti di Linux 2.4 |
# emerge --unmerge =vanilla-sources-2.4.* =gentoo-sources-2.4.*
|
Portage non ripulirà completamente l'installazione dei sorgenti del kernel 2.4,
in quanto la directory dei sorgenti conterrà dei file temporanei creati durante
la compilazione. li si può rimuovere in sicurezza con il seguente comando:
Codice 12.2: Rimuovere i rimanenti file temporanei |
# rm -rf /usr/src/linux-2.4.*
|
In aggiunta si potranno rimuovere i moduli e i file informativi relativi alle
vecchie installazioni dei kernel 2.4, in quanto non sono più necessari:
Codice 12.3: Rimuovere i moduli 2.4 precedentemente installati |
# rm -rf /lib/modules/2.4.*
|
Anche i binari dei kernel 2.4 usati per l'avvio del sistema possono essere
rimossi senza problemi. Si dovrà montare la partizione /boot e rimuovere
le relative immagini. Inoltre bisogna aggiornare la configurazione del
bootloader rimuovendo i riferimenti alle immagini dei kernel che sono state
eliminate.
Qualche utente di Linux 2.4 avrà a suo tempo installato il pacchetto
alsa-driver per beneficiare delle nuove capacità audio incluse in Linux
2.6. Se si è uno di loro, e si è seguito il consiglio, dato precedentemente in
questo documento, di compilare i driver ALSA contenuti nei sorgenti del kernel
2.6. (in alternativa all'uso del pacchetto alsa-driver), si potrà
rimuovere in sicurezza il pacchetto, per prevenire futuri conflitti.
Inoltre, gli utenti di lm-sensors in precedenza avranno usato il
pacchetto i2c per disporre dei driver hardware. Com'era già stato detto,
i driver I2C ora sono inclusi nel kernel, per cui questo pacchetto può essere
rimosso allo scopo di prevenire futuri conflitti.
Anche il demone di gestione di devfs, devfsd, può essere rimosso senza
indugi, poiché ora si userà udev per la gestione dei dispositivi.
Codice 12.4: Rimuovere alsa-driver, i2c, e devfsd |
# emerge --unmerge alsa-driver i2c devfsd
|
Se si è utenti LVM2, con molte probabilità si vorrà convertire i propri dati
nel formato LVM2 per beneficiare dei vantaggi offerti dalla nuova versione.
Tuttavia, questa operazione inibirà qualunque accesso ai dati LVM da un kernel
2.4. Se si vuole proseguire con la conversione (è assolutamente opzionale!), si
possono esaminare le pagine del manuale di vgconvert per le istruzioni su
come procedere. Viene comunque mostrato un esempio, dove main è il nome
del gruppo dei volumi.
Codice 12.5: Convertire un volume LVM1 al formato LVM2 |
# vgconvert -M2 main
|
|