Passare dal kernel 2.4 al 2.6
1.Introduzione
In questa tips ho cercato di riunire alcune informazione spulciate
qua e là dai vari forum di Gentoo e non, per passare in modo indolore
da un kernel della serie 2.4 ad un kernel della serie 2.6.
Il kernel testato in questa tips e' il 2.4.6-test4.
Se alcune informazioni non sono corrette o avete altre info che potrebbero
migliorare questo doc, vi prego di farmele sapere scrivendo a gentoo-dev@gentoo.it.
2.Installazione e prerequisiti
Prima di installare il nuovo kernel avete bisogno di un pacchetto che
si chiama module-init-tools. Basilarmente questo pacchetto
installa nuovi gestori di moduli (come lsmod) nella directory
/sbin e rinomina i vecchi comandi aggiungendo loro
il suffisso .old (avrete così /sbin/lsmod.old, /sbin/modprobe.old, ecc.).
Questi nuovi gestori sono in grado di individuare il kernel che state
usando al boot (sia esso della serie 2.4, 2.5 o 2.6) e ridirigerlo al
gestore di moduli appropriato in modo del tutto trasparente all'utente,
in modo tale che possiate far convivere i vari kernel senza dover
cambiare nessuna configurazione.
Esempio 1: Installazione module-init-tools |
# emerge module-init-tools
|
Una volta che avete installato i module-init-tools, passate al kernel
Esempio 2: Installazione dei sorgenti del kernel 2.6 |
# emerge development-sources
|
3.Metodi per la configurazione del kernel
Uno dei primi cambiamenti che potrete notare è la nuova interfaccia per
la configurazione del kernel. Il 'vecchio' xconfig in Tcl/Tk è
stato sostituito con un nuovo xconfig basato sulle librerie QT.
Per coloro ai quali non piacciono le QT c'è anche una nuova interfaccia basata
sulle GTK chiamata gconfig.
I modi per configurare il kernel 2.6 includono:
# make config
Questo metodo è identico alla serie 2.4 e rimane il metodo più
semplicistico di configurazione. Chiede semplicemente l'opzione
per ogni configurazione, un passo alla volta. E' richiesta la
bash shell.
# make menuconfig
Anche questo è identico al menuconfig della serie 2.4. Un semplice
metodo basato sulle curses.
# make xconfig
Questo nuovo metodo grafico usa le librerie QT. Trovo che sia abbastanza
funzionale e facile da usare.
# make gconfig
Questa opzione è un clone del nuovo xconfig, ma fa uso delle librerie
GTK al posto delle QT. Sfortunatamente, nei brevi test che ho fatto
crasha abbastanza spesso e sputa diversi errori.
# make oldconfig
Troverete questa opzione estremamente utile per aggiornare la serie
2.6 del kernel. A prima vista sembra identico al 'make config',
comunque 'oldconfig' legge i settaggi contenuti nel file .config e
automaticamente fa delle richieste basandosi su questa configurazione
solo se nel nuovo kernel sono state aggiunte ulteriori voci.
Per usarlo, copiate nella directory del nuovo kernel il .config che
avevate nel kernel precedente e date 'make oldconfig'.
4.Configurazione del kernel
Durante la configurazione del kernel fate attenzione ad abilitare
alcune opzioni direttamente nel kernel e non come moduli.
Avrete bisogno di abilitare le seguenti opzioni:
Esempio 3: Opzioni da abilitare di default |
Code maturity level option -->
[*] Prompt for development and/or incomplete code/drivers
|
Nella sezione "File System" accertatevi di abilitare
il supporto per il filesystem /dev e per il /dev/pts, mentre non avrete
bisogno del supporto per il file system /dev/dsp. Avrete anche bisogno
del supporto per il "Virtual Memory Filesystem".
Esempio 4: Sezione File systems |
File systems --->
Pseudo filesystems --->
[*] /dev file system support (EXPERIMENTAL)
[*] Automatically mount at boot
[ ] Debug devfs
[*] /dev/pts file system for Unix98 PTYs
[ ] /dev/pts Extended Attributes
[*] Virtual memory file system support (former shm fs)
|
Ricordate di abilitare "ReiserFS" se avete partizioni ReiserFS. Stessa
cosa per "Ext3". Se state usando XFS, abilitate l'ozione "XFS
filesystem support". E' sempre una buona idea lasciare abilitato
il supporto per ext2 anche se non lo usate.
Esempio 5: Abilitare il supporto per i vari filesystem |
File systems --->
<*> Second extended fs support
<*> Ext3 journalling file system support
[*] Ext3 extended attributes
<*> Reiserfs support
<*> XFS filesystem support
|
Per coloro che usano
hard disk IDE, abilitate l'opzione "USE DMA by default" altrimenti
i vostri dischi IDE avranno prestazioni veramente scandalose.
Naturalmente ricordate di abilitare il supporto per "IDE disk", altrimenti
il vostro kernel non vedrà i vostri dischi IDE.
Esempio 6: Per dischi IDE |
ATA/ATAPI/MFM/RLL support --->
<*> ATA/ATAPI/MFM/RLL support
.
.
<*> Include IDE/ATA-2 DISK support
.
.
[*] Use PCI DMA by default when available
|
Se state usando RAID hardware avrete bisogno di abilitare un paio
di opzioni: per controller Highpoint RAID selezionate il supporto
per il chipset hpt366, il supporto per controller IDE RAID e
Highpoint 370 software RAID. Per controller Promise RAID selezionate
il supporto PROMISE PDC202{46|62|65|67|68|69|70}, il supporto
per controller IDE RAID e il Support Promise software RAID (Fasttrak(tm)).
Se usate PPPoE per la connessione a Internet, avrete bisogno
delle seguenti opzioni nel kernel (interne o preferibilmente
come modulo): "PPP (point-to-point protocol) support",
"PPP support for async serial ports",
"PPP support for sync tty ports". Le due opzione relative
alla compressione non fanno male a nessuno ma non sono necessarie
come non lo è "PPP over Ethernet" che potrebbe essere usata solo
da rp-pppoe.
Esempio 7: Per connessioni PPPoE |
Networking support --->
.
.
<*> PPP (point-to-point protocol) support
<*> PPP support for async serial ports (NEW)
<*> PPP support for sync tty ports (NEW)
|
Dovrete anche compilare il supporto per input devices ("Input device support->Input devices"),
i virtual terminal ("Character Devices->Virtual terminal"),
la vga_console ("Graphics Support->Console...->VGA text console"),
e la vt_console ("Character Devices->Support for console..."),
altrimenti potreste avere l'errore "Uncompressing the Kernel
ewarn ".
Esempio 8: Altri supporti da includere |
Nota: Le seguenti opzioni sono abilitate di default. Non sono
visibili con "make menuconfig", mentre con "make xconfig" vengono
mostrate se selezionate dal menu "Option" -> "Show All Options". |
Input device support --->
[*] Input devices (needed for keyboard, mouse,...)
.
.
Character devices --->
[*] Virtual terminal
[*] Support for console on virtual terminal
[*] HW_CONSOLE
.
.
Graphic support --->
Console display driver support --->
[*] VGA text console (NEW)
.
.
|
Se avete un masterizzatore IDE, avrete bisogno di abilitare
l'emulazione SCSI. Abilitate l'"ATA/IDE/MFM/RLL support" --> "IDE,
ATA and ATAPI Block devices" --> "SCSI emulation support" (
generalmente come modulo), quindi sotto "SCSI support", abilitate
"SCSI CD-ROM support" e "SCSI generic support" (anche qusti
come moduli). Se avete scelto di usare le suddette opzioni
come moduli, date il comando echo -e "ide-scsi\nsg\nsr_mod" >> /etc/modules.autoload.d/kernel-2.6 per caricarle automaticamente al boot.
Esempio 9: Per masterizzatori IDE |
ATA/ATAPI/MFM/RLL support --->
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
.
.
<M> SCSI emulation support
.
.
SCSI device support --->
<M> SCSI CDROM support
[*] Enable vendor-specific extensions (for SCSI CDROM)
<M> SCSI generic support
|
Per l'abilitazione della scheda audio, date un'occhiata anche al
capitolo relativo ad ALSA.
5.Compilazione del kernel
Una volta che avete salvato la vostra configurazione e siete tornati
al prompt, potete iniziare la compilazione.
Per compilare la serie 2.6 del kernel avrete bisogno solo di due
comandi:
Esempio 10: Compilazione del kernel |
# make && make modules_install
|
Noterete l'output ridotto prodotto dalla compilazione, in paragone
con i kernel precedenti.
I suddetti comandi creano il nuovo kernel (bzImage) in
/usr/src/linux-beta/arch/i386/boot (per
architetture x86) come quelli precedenti.
6.Installazione del kernel
Nota: Ricordate di montare /boot prima di installare il nuovo kernel |
Ecco un esempio di installazione del nuovo kernel:
Esempio 11: Installazione del kernel |
# pwd
/usr/src/linux-2.6.0-test4
# mv arch/i386/boot/bzImage /boot/bzImage-2.6.0-test4
# mv System.map /boot/System.map-2.6.0-test4
# cd /boot
# rm System.map
# ln -s System.map-2.6.0-test4 System.map
|
Se non volete eseguire i suddetti comandi a mano potete anche dare il
seguente comando:
Esempio 12: Installazione automatica del kernel |
# make install
|
Usando questo comando, viene installato il nuovo kernel in /boot
con un nome univoco del tipo vmlinuz-2.6.0-test4.
Se esiste già un kernel della stessa serie, viene rinominato
apponendo al nome il suffisso .old.
Dovrete ora modificare il vostro bootloader (GRUB o LILO) per
aggiungere una voce che permetta la scelta del nuovo kernel.
Nota: Il nuovo kernel ha bisogno di una directory /sys che
dovrete creare prima di fare il reboot. | .
7.ALSA
Per molti che fanno l'aggiornamento dal kernel 2.4 al 2.6,
potrebbe essere la prima volta che usano l'Advanced Linux Sound
Architecture (ALSA) che ha preso il posto di OSS. Sebbene sia
possibile semplicemente abilitare l'ormai in disuso OSS e
far funzionare le cose come prima, è probabilmente il momento
di passare ad ALSA (nello spirito di Gentoo ;-)).
Grazie alle OSS API Emulation di ALSA non è una cosa estremamente
difficile. Durante la configurazione del kernel, ricordate di abilitare
le opzione per la OSS Emulation (SND_OSSEMUL, SND_MIXER_OSS e SND_PCM_OSS):
Esempio 13: Abiltazione dell'OSS Emulation |
<*> Sound card support
Advanced Linux Sound Architecture --->
[*] OSS API emulation
<*> OSS Mixer API
<*> OSS PCM (digital audio) API
|
Ricordate inoltre di abilitare il driver appropriato per la
vostra scheda audio in PCI devices.
Ed infine, installate le ultime versioni di alsa-lib e alsa-utils.
Nota: Potrebbe essere utile inserire in /etc/make.conf
la variabile ALSA_CARDS assegnandogli il nome della
vostra scheda audio. Io ho ALSA_CARDS="intel8x0". |
Esempio 14: Installazione di ALSA |
# emerge alsa-lib alsa-utils
|
Nota: Se avete abilitato il driver della scheda audio come modulo,
potete fare in modo che venga caricato al boot, inserendone il nome
in /etc/modules.autoload.d/kernel-2.6.
|
Nota: Se dopo il riavvio non riuscite a sentire niente e chiaramente
non avete avuto errori durante il boot e il relativo caricamento
dei moduli della vostra scheda audio, avrete probabilmente
bisogno di usare alsamixer per abilitare i vari canali audio.
|
Nota: Per avere un'idea del buon funzionamento della scheda audio,
o perlomeno per essere sicuri che sia stata riconosciuta, potete
dare il comando cat /proc/asound/cards che dovrebbe
mostrarvi alcuni dati sulla vostra scheda.
|
8.Touchpad
Soluzione 1, testata
Io, come tanti, ho avuto qualche problema a fare vedere a X
il mouse touchpad del mio portatile. Mentre con la serie
2.4 del kernel, potevo avere un mouse PS/2 e il touchpad
funzionanti nello stesso momento, non è così per la serie
2.6 dove sembra che il mouse PS/2 abbia la priorità sul touchpad.
Per far funzionare il touchpad sotto X occorre abilitare il supporto
per l' "Event interface" ("Input device support ---> Event interface").
Esempio 15: Supporto per l'"Event interface" |
Input device support --->
.
.
<*> Event interface
.
.
|
Questo supporto permette ai device di input di essere accessibili
attraverso /dev/input/eventX, dove X sarà un numero
che varia da macchina a macchina.
Una volta compilato il kernel e riavviata la macchina, dovreste
avere in /dev/input alcune voci:
Esempio 16: /dev/input |
# ls /dev/input
event0 event1 event2 mice mouse0
|
Quale di queste device corrisponde al touchpad?
Basta dare il comando cat /dev/input/event0 e usare
il touchpad per vedere comparire sullo schermo caratteri
strani. Se ciò non accade, provate gli altri device event.
Occorre ora installare l'ultima versione del Synaptics touchpad driver, che trovate qui,
estrarre l'archivio e copiare il driver synaptics_drv.o
nella directory dei moduli di XFree, di solito /usr/X11R6/lib/modules/input/.
Esempio 17: Installazione driver Synaptics |
# wget http://w1.894.telia.com/~u89404340/touchpad/synaptics-0.11.3p11.tar.bz2
# tar jxvf synaptics-0.11.3p11.tar.bz2
# cd synaptics
# cp synaptics_drv.o /usr/X11R6/lib/modules/input/
|
Occorre aggiungere ora in /etc/X11/XF86Config la voce
Load "synaptics" nella sezione dei moduli e le seguenti
righe nella sezione InputDevices:
Esempio 18: Modifiche a XF86Config |
Section "InputDevice"
Driver "synaptics"
Identifier "touchpad"
Option "Device" "/dev/input/event1"
Option "Protocol" "auto-dev"
Option "Edges" "1900 5400 1800 3900"
Option "Finger" "25 30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.02"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.0010"
# Option "Repeater" "/dev/ps2mouse"
# Option "SHMConfig" "on"
EndSection
Nota: Modificate il Device in base a quello che avete trovato in precedenza |
|
Con questa configurazione il touchpad funziona se nessun mouse
PS/2 è collegato al portatile.
Soluzione 2, non testata
Alcuni hanno dato una seconda soluzione che sfrutta il fatto di
riuscire a mettere il touchpad in PS/2 compatibily mode.
Occorre naturalmente configurare il kernel col supporto psmouse.
Esempio 19: Abilitare il supporto per il psmouse |
Input device support --->
.
.
[*] Mice
<*> PS/2 mouse
.
|
Se avete abilitato il supporto interno al kernel, ricordate
di passare la seguente opzione al kernel psmouse_noext=1.
Esempio 20: Modifica grub.conf |
# vi /boot/grub/grub.conf
kernel (hd0,0)/bootvmlinuz-2.6.0-beta5 root=/dev/hda3 psmouse_noext=1
|
Se invece avete scelto di abilitare psmouse come modulo, dovete caricare il modulo sempre con l'opzione psmouse_noext=1.
Dopo aver ricompilato il kernel e riavviato la macchina dovete modificare
l'/etc/X11/XF86Config nella sezione "InputDevice":
Esempio 21: Modifiche all'XF86Config |
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mouse"
EndSection
|
Avendo attivi sia gpm che X entrambi i mouse dovrebbero funzionare
contemporaneamente.
9.Framebuffer + bootsplash
Configurazione e compilazione del kernel
Al momento della stesura di questa guida (kernel 2.6.0-test9), non sono riuscito
a far andare il framebuffer e il bootsplash a meno di non
applicare una patch
al kernel della serie 2.6.
Una volta scaricata la patch occorre applicarla al kernel:
Esempio 22: Patchare il kernel |
# cd /usr/src/linux-beta
# patch -p1 < /percorso/bootsplash-3.1.2-2.6.0-test9.diff
|
Una volta patchato, passiamo alla configurazione.
Esempio 23: Preparazione del kernel al framebuffer |
# make menuconfig
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Processor type and features --->
[*] MTRR (Memory Type Range Register) support
Device Drivers -->
Block devices -->
[*] Loopback device support
<*>RAM disk support
(4096) Default RAM disk size
[*] Initial RAM disk (initrd) support
Graphics support -->
[*] Support for frame buffer devices
[*] VESA VGA graphics support
Console display driver support -->
[*] Video mode selection support
<M> Framebuffer Console support
[*] Select compiled-in fonts
[*] VGA 8x16 font
Bootsplash configuration -->
[*] Bootup splash screen
|
Nota: Probabilmente la selezione di 'Framebuffer Console support' non serve,
ma senza questa selezione, non è possibile entrare in 'Bootsplash configuration'
|
Compiliamo e installiamo il kernel.
Esempio 24: Compilazione e installazione del kernel |
# make && make modules_install
# make install
|
Passi successivi
Una volta messo a posto il kernel dobbiamo costruire l'immagine
per l'installazione. Possiamo sia fare un emerge bootsplash,
che scaricare il pacchetto che arriva da Suse, nel qual caso va decompresso e compilato.
Esempio 25: Decompressione e compilazione del bootsplash Suse |
# tar ztvf bootsplash-3.0.7.tar.bz2
# cd bootsplash-3.0.7/Utilities
# make
# cp fbmngplay fbresolution fbtruetype splash /sbin
|
Dovreste avere anche un'immagine e un file di configurazione per il bootsplash.
Se avete installato il pacchetto bootsplash con emerge,
dovreste averne in /etc/bootsplash/gentoo/.
Altrimenti potete scaricare questo set.
Prepariamo l'immagine:
Esempio 26: Preparazione dell'immagine |
# /sbin/splash -s -f /etc/bootsplash/default/config/bootsplash-1280x1024.cfg > /boot/initrd-1280x1024
oppure
# /sbin/splash -s -f /etc/bootsplash/temi/ilvostrotema/config/bootsplash-1024x768.cfg > /boot/initrd.splash
|
Configurazione del grub
Passiamo alla configurazione del grub.
Esempio 27: Configurazione del grub |
# vi /boot/grub/grub.conf
default 0
timeout 10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
# Con framebuffer e bootsplash
title=Gentoo GNU/Linux 1.4 (+fb +splash)
root=(hd0,0)
kernel=(hd0,0)/boot/vmlinuz root=/dev/hda3 video=vesa:ywrap,mtrr vga=0x31A
initrd=/boot/initrd-1280x1024
# Con framebuffer senza bootsplash
title=Gentoo GNU/Linux 1.4 (+fb -splash)
root=(hd0,0)
kernel=(hd0,0)/boot/vmlinuz root=/dev/hda3 video=vesa:ywrap,mtrr vga=0x31A
# Senza framebuffer e bootsplash
title=Gentoo GNU/Linux 1.4 (-fb -splash)
root=(hd0,0)
kernel=(hd0,0)/boot/vmlinuz root=/dev/hda3
|
Nota: Naturalmente modificate i vari device affinché puntino alle vostre partizioni | .
Nota: Se al boot non vedete l'immagine, provate a modificare vga in
vga=791.
|
Nota: Modificate initrd=/boot/initrd-1280x1024 in initrd=/boot/initrd.splash se avete usato il secondo esempio nella preparazione dell'immagine. |
Riavviamo il computer e incrociamo le dita ;-))
|