logo AlexBio's Blog /dev/random

Ricompilare il kernel Linux: Debian-way

Introduzione

Come forse saprete il kernel, è il nucleo di un sistema operativo. In Linux è possibile creare una versione personalizzata del kernel aumentando in questo modo l’efficienza e la stabilità del nostro sistema. Infatti in molte distribuzioni sono attivi in modo predefinito la maggior parte dei moduli, per vari motivi (e.g. per fare in modo che il sistema sia compatibile con la maggior parte di configurazioni hardware), rimuovendo quelli non necessari il kernel sel nostro sistema sarà più snello, e quindi più veloce ed efficiente e meno soggetto a problemi.

In Debian la ricompilazione del kernel può essere effettuata in diversi modi, quella standard per tutte le distribuzioni, o alla debian-way, che permette di compilare il kernel e di creare un comodo pacchetto .deb per facilitare la sua installazione (ed eventualmente la disinstallazione).

In questo articolo verrà illustrato il secondo metodo. I passi che vedremo saranno la configurazione del kernel, la sua compilazione e l’installazione.

Preparazione

Prima di cominciare è necessario installare alcuni pacchetti necessari alla compilazione e alla pachetizzazione del kernel

# apt-get install build-essential kernel-package fakeroot

Dopo aver fatto questo è necessario ottenere i sorgenti del kernel senza i quali non potremmo fare niente

$ apt-cache search linux-source
linux-source-2.6.24 - Linux kernel source for version 2.6.24 with Debian patches

I sorgenti del kernel presenti nei repository di Debian sono leggermente diversi da quelli del kernel Vanilla (rilasciati da Torvalds e dal suo staff), in quanto vengono leggermente modificati per meglio integrarli con il sistema. Per questo articolo prenderemo come esempio la versione 2.6.24, voi potete sostituirla con la versione che userete.
Ora non resta che installarli:

# apt-get install linux-source-2.6.24

L’archivio contenente tutti i file verrà posizionati in

/usr/src

Per evitare di compilare il kernel con i privilegi di root, è consigliato aggiungere l’utente che andrà a compilare, al gruppo “src”, i cui membri hanno diritto di scrittura nella cartella dei sorgenti

# adduser nome-utente src

Per rendere effettive le modifiche è necessario riloggarsi.

A questo punto possiamo spostarci nella cartella dei sorgenti

$ cd /usr/src

dove troveremo un archivio tar.bz2 contenente i sorgenti, da decomprimere

$ tar -jxvf linux-source-2.6.24.tar.bz2

Per facilitarci il lavoro creiamo un link simbolico alla cartella appena creata

$ ln -s linux-source-2.6.24 linux

E spostiamoci al suo interno

$ cd linux

Pulizia

Il prossimo passo da eseguire è la pulitura dei sorgenti. Questa operazione è necessaria per eliminare i file creati dalle precedenti compilazioni, se questa è la prima ricompilazione che eseguite non è necessaria.

$ make-kpkg clean

Configurazione

Passiamo ora alla configurazione, parte centrale dell’intera operazione. Per farlo si possono utilizzare differenti interfacce grafiche.

$ make config

Questa è l’interfaccia più semplice: presenta le varie opzioni una in seguito all’altra. Personalmente non mi piace molto, in quanto obbliga l’utente a definire qualsiasi tipo di impostazione, anche se non necessarie.

$ make menuconfig

Il metodo più comune: crea un comodo menu grazie alle librerie ncurses, in cui l’utente può facilmente navigare con la tastiera. Per questo metodo sono necessarie le librerie di sviluppo ncurses (ncurses-dev).

$ make xconfig

Simile al precedente metodo, con la differenza che il menu viene creato per X con le librerie qt.

$ make gconfig

Come sopra, ma con le librerie gtk.
Per questi due ultime modalità sono necessarie le librerie di sviluppo rispettivamente di qt e gtk.

A questo punto dovrete esplorare le varie opzioni del kernel, suddivise in diverse sezioni logiche. È possibile impostarle a off (ovvero non disponibile), modulo (compilato separatamente e caricato quando necessario) e on (compilato nel kernel).
In questo articolo non entrerò nel dettaglio delle varie opzioni, per avere maggiori dettagli potete consultare il Linux Kernel Configuration Archive, in cui non dovrete fare altro che selezionare la versione del kernel e l’architettura.
Una volta finito di configurare, e necessario salvare le impostazione selezionando l’apposita voce nel menu, che creerà un file di testo (in modo predefinito col nome “.config”) che potrà essere utilizzato anche in futuro per ulteriori compilazioni.
Ed ora la compilazione…

Compilazione

Per facilitare questa procedura useremo il tool make-kpkg, installato precedentemente

$ fakeroot make-kpkg --append-to-version custom --revision=1 kernel_image

È possibile anche creare pacchetti deb dai sorgenti di moduli (ad esempio alsa) posizionati in /usr/src/modules aggiungendo modules_image alla fine del comando, in modo che diventi

$ fakeroot make-kpkg --append-to-version custom --revision=1 kernel_image modules_image

Analizziamo brevemente questo comando:
–append-to-version custom – Serve ad aggiungere una stringa personalizzata (in questo caso “custom”) al nome del pacchetto, dopo il numero di versione, che verrà creato .
–revision=1 – Imposta un numero di revisione per il kernel, in modo che ad un successivo aggiornamento del kernel, quello personalizzato non venga rimosso in favore di quello ufficiale.
kernel_image – Indica che si vuole creare un pacchetto deb con il kernel compilato.

È possibile indicare altre opzioni, per una lista più approfondita vi rimando al manuale di make-kpkg

$ man make-kpkg

La compilazione richiederà un pò di tempo, al termine della quale verrà creato un file del tipo linux-image-<versione>-<nomepersonalizzato>-<architettura>.deb nella cartelle /usr/src.

Non ci resta altro da fare se non installarlo tramite dpkg.

# dpkg -i linux-image-2.6.24-custom-i386.deb

In seguito sarà possibile installare lo stesso kernel anche su altre macchine Debian senza dover eseguire un’altra volta tutta l’operazione.

Boot Loader

Ora che il nuovo kernel è installato potrebbe essere necessario aggiornare il boot loader.
Nel caso di grub questo non è necessario, in quanto dopo l’installazione di un nuovo kernel viene automaticamente eseguito un update-grub.
Nel caso di Lilo invece, è necessario modificare il file /etc/lilo.conf e aggiornare l’MBR.

A questo punto il nuovo kernel non è ancora in uso, per utilizzarlo è necessario riavviare la macchina e selezionarlo dal menu del boot loader.

Nel caso che qualcosa andasse storto, niente paura, riavviate il sistema con il vecchio kernel selezionandolo dal menu del boot loader.

E questo è tutto…


1 Comment

[...] visto che non mi va di scrivere un’altra guida sulla compilazione del kernel, vi lascio ad una semplice videoguida (in inglese) proprio [...]

Posted by AlexBio’s Blog - Registrare musica da chitarra elettrica su linux - parte 1 on 23 febbraio 2009 @ 5pm

Leave a Comment

Google X Update #2 (o 4 non ricordo…) Nuovo Blog per Google X


Spread Firefox Affiliate Button