How To - Compilare il kernel della serie 2.6.XX
Vi riporto la mia esperienza con Slackware 10.2 sulla compilazione del kernel. Il metodo è pressochè uguale in tutte le distribuzioni. Alcune addirittura installano nuove versioni del kernel con strumenti automatici (Debian e derivate) ma se volete un kernel ad hoc dovrete necessariamente compilarvelo da voi.
Author: Emanuele Borghetti, ebnospam@fgasoftware.com
Compilazione Nuovo Kernel Serie 2.6.xx:
Vi riporto la mia esperienza con Slackware 10.2 sulla compilazione del kernel. Il metodo è pressochè uguale in tutte le distribuzioni. Alcune addirittura installano nuove versioni del kernel con strumenti automatici (Debian e derivate) ma se volete un kernel ad hoc dovrete necessariamente compilarvelo da voi a seconda dell'hardware che avete.
Per comodità ho recuperato il file config-2.6.xx di Patrick Volkerding ftp://ftp.slackware.no/linux/slackware/slackware-10.2/testing/source/linux-2.6.x / per risparmiare un po di tempo, poi ho recuperato i sorgenti del Kernel da http://www.kernel.org/pub/linux/kernel prelevando il formato tar.bz2 che utilizza una compressione perciò sarà più piccolo e quindi più veloce da trasferire.
Ho scaricate il Kernel in /usr/src e lo decomprimo cosi
# cd /usr/srcCancello e ricreo il link simbolico e mi sposto di directory
# tar xjvf linux-2.6.xx.tar.bz2
# rm linux | ln -s linux-2.6.xx linuxPreparo l'ambiente (da usare solo la prima volta che compiliamo!)
# cd linux
# make mrproperE incomincio la configurazione del Kernel utilizzando uno dei seguenti tool:
- make menuconfig
- make xconfig
- make gconfig
- make oldconfig
Make menuconfig che usa ncurses si basa su un menù testuale, xconfig e gconfig devono essere avviati da X e usano rispettivamente le lib QT e GTK. Make oldconfig è molto comodo in caso di aggiornamento, e vi chiederà solo le risposte alle nuove domande di configurazione, che si aggiungono di volta in volta alle release, ovviamente dovete avere il file .config presente in /usr/src/linux.
Io ho sempre usato
# make menuconfig
Ora carico la configurazione di PJV (config scaricato prima, non usare file config della serie 2.4.X) usando la funzione Load an Alternate Configuration File nel menu in fondo e una volta apportate le modifiche salvo con la funzione Save Configuration to an Alternate File, questo per non sovrascrivere il config funzionante.
Esco con < Exit > e salvo la configurazione. In entrambi i casi verrà creato in /usr/src/linux il file .config che contiene appunto tutta la configurazione del Kernel.
Terminata la configurazione creo l'immagine del Kernel compresso usando
# make -j5 bzImage
Se avete problemi con bzImage potete usare anche zImage ma ormai è quasi deprecato.
Se volete fare un bootdisk (senza filesystem di root o LILO) inserite un floppy nuovo e impartite il comando
# make bzdisk
L'operazione è un po lunga dipende dalla velocità del vostro PC e dopo un certo periodo trovo l'immagine del Kernel pronta in /usr/src/linux/arch/i386/boot/. Ora procedo con la compilazione e installazione dei moduli
# make -j5 modules && make modules_install
I moduli saranno installati regolarmente in /lib/modules/versione-kernel ed ora dando un ls -a sotto /usr/src/linux posso notare i file che sono stati creati. Oltre al file .config ho un file System.map. Questi due file devo copiarli in /boot, rinominandoli, cosi gestisco una nuova direttiva nel LILO. N.B.: cosa molto importante è non eliminare MAI il kernel funzionante perchè in caso di errore potete usarlo per riaccedere al pc!
# mv System.map /boot/System.map-2.6.xx
# mv .config /boot/config-2.6.xx
Ora sposto il Kernel con
# mv /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.xx
Ora devo gestire il nuovo kernel nel /etc/lilo.conf
label = Slack_2.6.7
image = /boot/vmlinuz-2.6.7
root = /dev/hda3
read-only
Terminato questo impartite il comando lilo per aggiornare la nuova configurazione
# lilo -v
Io gestisco il dual boot da Windows XP quindi darò un lilo -b /dev/hda3 per installare il lilo nella root della mia partizione Slackware. Se è la prima volta che compilo un kernel 2.6.X devo ricordarmi di generare il file modprobe.conf che rimpiazza il vecchio modules.conf.
# generate-modprobe.conf /etc/modprobe.conf
Ora modifico il file /etc/fstab ed inserisco il filesystem virtuale Sysfs, il quale si occupa delle informazioni sui dispositivi lasciando a Procfs il compito delle informazioni sui processi, quindi se non presente creo nella root principale la dir sys
# mkdir /sys
e poi inserisco in /etc/fstab
none /sys sysfs defaults 0 0
Riavvio il sistema e, se tutto è stato fatto al meglio son pronto a godermi il mio nuovo Kernel. In ogni caso posso sempre riavviare con il mio vecchio kernel che non ho cancellato. Ecco l'importanza di non eliminare l'immagine vecchia!!!
Ricompilazione Kernel Serie 2.6.xx:
Con un nuovo Kernel si vuole sempre ricompilare per avere una personalizzazione maniacale sul nostro HW.
In questo caso unico accorgimento è di affiancare sempre la nuova versione creata alle altre già presenti gestendo una nuova direttiva nel LILO.