Compiliamo Linux



Il kernel è il cuore di un sistema operativo, esso senza kernel non potrebbe esistere, è il kernel ha dialogare a basso livello con l’ hardware della macchina.

Potremmo vedere un sistema operativo, come un qualcosa costruito a strati, dove il kernel costituisce la parte centrale, il nucleo appunto, ed esso è racchiuso da più strati costituiti dai vari comandi di utilità, dalle interfacce grafiche, i vari sottosistemi, i comuni programmi …

I kernel possono essere monolitici, oppure modulari, i kernel monolitici, hanno al loro interno tutto ciò che serve al funzionamento della macchina, mentre i kernel modulari, sono molto più piccoli, perché interagiscono con la macchina e con il sistema operativo grazie ad altri componenti quali  driver e device.

Perché compilare un kernel?

Questa è un’ operazione comune per tutti i sistemi UNIX like, e quindi anche per le varie flavour di GNU/Linux, a proposito, è il SOLO kernel a chiamarsi Linux, ad ogni nuova versione il kernel viene implementato di nuove funzionalità, nuovo hardware supportato, nonché vengono corretti molti bug delle release precedente, ecco perché compilare ed installare un nuovo kernel, per estendere il supporto a nuovo hardware e per proteggere eventuali falle di sicurezza.

Con questa guida intendo mostrare le modalità per la   compilazione del kernel, sia quella, per così dire “classica”, che quella propria delle distribuzioni derivate da Debian.

Procuriamoci tutti i pacchetti utili alla compilazione come il compilatore gcc.

Compilazione “classica”:

Per prima cosa recuperiamo i sorgenti del Kernel dalla pagina ufficiale del progetto: http://www.kernel.org, siano essi sia in formato tar.bz2 o tar.gz, il bz2.
Una volta scaricato il Kernel va copiato in /usr/src e decompresso, attenzione bisogna essere root per compiere queste operazioni

# cd /usr/src

# tar xjvf /Directory_dove_abbiamo_scaricato_il_kernel/linux-2.6.xx.tar.bz2

Andiamo a cancellare il link simbolico “linux” e poi ricreiamolo facendolo puntare alla nuova directory appena creata:

# rm linux | ln -s linux-2.6.xx linux

Spostiamoci in linux:

# cd linux

Preparate l’ambiente per la compilazione:

# make mrproper

Cominciamo ora la configurazione del Kernel, possiamo utilizzare sia interfacce testuali che grafiche:

make menuconfig: fa uso delle librerie ncurses, con un’ interfaccia semi testuale;
make xconfig: interfaccia grafica usando le librerie qt;
make gconfig: fa uso delle librerie gtk, le librerie di Gnome;
make oldconfig: usando un vecchio file di configurazione, questo tool permette la configurazione delle sole nuove feature, testuale.

Visto che compilo linux da anni oramai, e che quando ho cominciato ad usare questo sistema, la configurazione grafica non esisteva ancora, andiamo ad utilizzare make menuconfig:

# make menuconfig

A questo punto, se abbiamo scelto di cominciare tutto da zero, andiamo ad immettere  le opportune scelte facendoci aiutare dall’ opzione <Help> che vi aiuterà nella configurazione, ricordo che con l’ opzione <Y>, serve per compilare all’ interno del kernel, l’ opzione <m> compile la feature come modulo, mentre l’ opzione <n> elimina la feature dal kernel, ecco come appare la prima schermata del menù di configurazione del kernel:

Tra le opzioni da inserire assolutamente, vi è la scelta corretta del processore della macchina:

Terminate le modifiche usciamo con <Exit> e alla domanda “Do you wish to save your new kernel configuration?” salviamo la configurazione.
Verrà cosi creato all’ interno della directory /usr/src/linux il file .config che contiene la configurazione del Kernel.

Ma perchè tutta questa fatica?, Probabilmente se state leggendo questo pezzo avrete già una Linux box già installata, allora andiamo ad usare il config della vostra attuale distro:

# cd /boot

# cp config-2.6.x /usr/src/linux

Passiamo alla configurazione con il comando make oldconfig (testuale):

# make oldconfig

Terminata la configurazione, viene il momento di creare l’immagine del Kernel:

# make

# make modules

# make modules_install

# make install

Copiamo ora i files .config e System.map in /boot:

# cp System.map /boot/System.map-2.6.xx

# cp .config /boot/config-2.6.xx

E ora il Kernel:

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.xx

Abbiamo quasi terminato, creiamo il ramdisk:

# cd /boot

# mkinitrd -o initrd-2.6.x.img 2.6.x

Il file initrd è un particolare file, che permette il caricamento di

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest