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 >>>

AUTORE DEL TESTO
Zio Budda

Pubblicato il: 17/10/2001