Gentoo Logo

La guida Gentoo per la migrazione completa a Linux 2.6

Indice:

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.

  1. 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.
  2. 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)

(le seguenti sono necessarie per udev):
General setup  --->
 [*] Support for hot-pluggable devices

(le seguenti sono necessarie per ALSA):
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
   (non ci si dimentichi di selezionare la propria scheda sonora dai sottomenù!)

(le seguenti sono necessarie si si usa LVM per la gestione dei dischi):
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


Stampa

Aggiornato il 24 luglio 2012

La versione originale di questo documento non è più mantenuta

Oggetto: Questo documento vi aiuterà nel processo di migrazione da Linux 2.4 a Linux 2.6, da devfs a udev, da OSS ad ALSA, e da LVM a LVM2.

Daniel Drake
Autore

Sergey Galkin
Contributi

Sergey Kuleshov
Contributi

Xavier Neys
Redazione

Benny Chuang
Redazione

Joshua Saddler
Redazione

Davide Cendron
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.