Ricompilare il kernel IIII
di Zio Budda
Istruzioni Complete
La prima directory in cui abbiamo bisogno di lavorare e':
/lib/modules/2.x.x
Questa directory conterrà, suddivisi per categoria (net, scsi,
misc), le porzioni del Kernel che decideremo di compilare come
moduli in fase di configurazione.
2.x.x indica la versione del kernel che è installata. Abbiamo
bisogno di rinominare tale directory in qualcos’altro, come ad
esempio "2.x.x.old", solo per essere sicuri che non intralci
il nostro lavoro. Infatti sarà qui che finiranno i moduli
ricompilati dopo i nostri comandi "make modules" e
"make modules_install", quindi si capisce quanto importante sia
rinominare le vecchie directory presenti in modo da evitare
errori simbolici dopo la ricompilazione ed il reboot.
(NOTA: Gli utenti della RedHat 6.0 troveranno due directory,
una chiamata "2.x.x." l’altra "2.x.x.BOOT". Entrambe DEVONO
essere rinominate.)
La directory successiva nella quale andremo a lavorare è la
/usr/src/linux, dove dovranno essere installati i sorgenti.
Se non trovi una directory /linux sotto la /usr/src significa
che i sorgenti NON sono installati ed hai bisogno di farlo.
Controlla la documentazione della tua distribuzione o
riesegui il setup e seleziona l'opzione di installazione
dei sorgenti del kernel. Prima di procedere con il prossimo
punto assicurati di avere i sorgenti nella directory.
In verita' nella directory /usr/src/ NON esiste, di norma,
una directory linux ma un link simbolico (ottenuto con il
comando ln -s) che punta alla versione del kernel che vogliamo
compilare. A tal proposito è bene far attenzione quando,
avendo gia' una versione del kernel installata
(es: kernel-2.2.15) ed il relativo link (linux), vogliamo
installarne uno nuovo (es: 2.3.45).
Infatti in tal caso è opportuno dapprima rimuovere (rm linux)
il link linux puntante alla directory kernel-2.2.15 e, dopo
aver estratto il nuovo Kernel dall'archivio (tar zxvf kernel-2.3.45), rinominare la directory nella quale per default si installa (linux) in kernel-2.3.45 ed infine ricreare il link (ln -s kernel-2.3.45 linux). Questo perchè di default gli archivi dei Kernel creano una directory linux ma, trovando un link che punta ad un'altra directory,
l'archivio del NUOVO Kernel verrebbe estratto nella
directory del VECCHIO Kernel con risultati imprevedibili.
Spero sia sufficientemente chiaro.
Apri una shell quale utente root e digita
% cd /usr/src/linux
quindi digita il comando per il tool di configurazione che
preferisci. Ecco una breve panoramica delle possibilità:
% make xconfig
xconfig esegue la configurazione nell'ambiente X. Per la
sua esecuzione necessita dell'installazione di Tcl/Tk,
dell'ambiente X correttamente configurato e del supporto
del mouse. E' carino, raccomandabile per tutte le tue
ricompilazioni e veloce.
% make menuconfig
menuconfig è veloce, basato su un'interfaccia a caratteri
è come la controparte xconfig, semplicemente senza
l’intefaccia X. Il meglio per coloro che NON sono
interessati ad X o, comunque, un altro modo per provare
la configurazione. Personalmente lo considero il migliore.
In breve: l'aspetto e' quello di un insieme di voci
principali (menu) che porta alle opzioni contenute in
quella categoria. Ci si muove con i tasti freccia, si
selezionano le opzioni che si desiderano tenendo presente
che alla sinistra della relativa opzione si può selezionare
una M oppure un * (un asterisco).
M = modulo (ovvero questa opzione non la ritengo fondamentale.
Deciderò di caricarla o meno ad ogni sessione.
Es: Scheda Audio)
* = includilo STABILMENTE nel Kernel (è fondamentale per
linux e/o per me. Il classico esempio è il FileSystem Ext2
che DEVE, di norma, gestire le partizioni linux)
% make config
Questo è il metodo di configurazione più scarno.
Semplicemente bisogna rispondere ad una serie di domande
per ricompilare il kernel. Fai attenzione, se dimentichi
qualcosa devi ripartire da capo. E' difficoltoso se
comparato agli altri tool sopra menzionati adatti
allo stesso scopo.
Una volta terminata la fase di configurazione devi
digitare la corretta sequenza di comandi per portare a
termine la compilazione. Puoi eseguirli uno ad uno
% make clean (in realtà questo passo può essere saltato
se si ha spazio sull'HD ed il bisogno di provare
diverse soluzioni di compilazione)
% make dep
% make bzImage
% make modules
% make modules_install
oppure, puoi farlo in un unico passo (come visto in precedenza) digitando un unico lungo comando come il seguente:
% make clean dep bzImage modules modules_install
Quando eseguiamo tutti i comandi su di una linea
singola al termine dell'uno sarà eseguito l’altro.
Se vuoi tenere una copia di questo processo
(per capirlo o per semplice curiosita') puoi
digitare:
% make clean dep bzImage modules modules_install > /path/nomefile.txt
che ridireziona l'output nel file che desideri
(es: /tmp/new_kernel.txt)
Finita la fase di compilazione troverai due file
nella directory /usr/src/linux, chiamati "System.map"
e "vmlinux". System.map è la lista delle funzioni
del kernel (a basso livello), mentre "vmlinux"* è
il tuo kernel compresso pronto per l'uso.
* NOTA: Gli utenti RedHat NON troveranno il loro
kernel in questa directory. Invece, lo script di
installazione sposta, comprimendolo, il file corretto
vmlinux nel file /usr/src/linux/arch/i386/bzImage.
Finché c'è un file "vmlinuz" nella directory
/usr/src/linux, LILO NON lo userà e ne' funzionerà
se ci proverai. La regola, quindi, è:
gli utenti RedHat utilizzeranno il file
/usr/src/linux/System.map ed il file
/usr/src/linux/arch/i386/bzImage, mentri gli utenti
Slackware (e di altre distribuzioni) utilizzeranno
i file /usr/src/linux/vmlinuz e /usr/src/System.map.
I due file di cui sopra devono essere copiati nella
directory /boot. Tuttavia, allo scopo di preservare
i precedenti (e funzionanti) file sarebbe opportuno
procedere così: rinominiamo i VECCHI file
System.map.versione.del.kernel e
vmlinux.versione.del.kernel in modo d'avere i seguenti file:
vmlinux.2215
System.map.2215
vmlinux.2216
System.map.2216
Bene ora ad essi facciamo due bei link
(ln -sf vmlinux.2216 vmlinux e ln -sf System.map.2216 System.map).
Continua... Parte IIIII >>>