Compilare il kernel col metodo Debian (Debian-way)

Posted by RedBlue on June 20, 2012 · 3 mins read

Compilare il kernel è un'operazione piuttosto lunga e complessa, ma Debian ci viene in aiuto con un metodo tutto suo (utilizzabile anche sulle derivate da Debian ovviamente), il cosiddetto Debian-way.

In questo articolo cercherò di spiegare come ottenere, a partire da un kernel "Vanilla" (cioè i sorgenti rilasciati direttamente dal gruppo di "papà" Linus Torvalds), i comodi pacchetti deb pronti per essere installati nel proprio sistema e, in caso di necessità, semplici da rimuovere.

Prima di iniziare, cerchiamo di installare tutto il necessario per non imbatterci in errori dovuti alla mancanza di qualche pacchetto fondamentale:

sudo apt-get install git-core kernel-package fakeroot build-essential libncurses5-dev

Fatto questo, il primo, ovvio passo, è quello di scaricare i sorgenti dal sito ufficiale: http://www.kernel.org

In questa guida userò l'ultimo rilascio stabile, il 3.4.3, che ho installato proprio oggi sulla mia sid. Per policy Debian, questi files vanno nella directory /usr/src, e quindi andiamo a scaricare i sorgenti proprio in tale directory, poi ci portiamo nella directory ottenuta:

cd /usr/src
sudo wget --continue http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.3.tar.bz2
sudo tar jxvf linux-3.4.3.tar.bz2
cd linux-3.4.3

Ora, recuperiamo l'attuale configurazione del kernel (non è il massimo dell'ottimizzazione, ma se non ci sono esigenze particolari va benissimo):

cp /boot/config-`uname -r` ./.config

E successivamente diamo:

sudo make menuconfig

A questo punto, per evitare un errore che ci impedirebbe di proseguire, portatevi nella schermata che viene visualizzata, in Processor type and features -> Paravirtualized guest support e togliete la spunta a Xen guest support, selezionate poi Exit fino ad uscire da quell'interfaccia e salvate.

Bene, siete pronti al passo più importante! Date in sequenza:

sudo make-kpkg clean

sudo fakeroot make-kpkg --initrd kernel_image kernel_headers kernel_source
èè

E mettetevi comodi. Stiamo parlando di ore (a seconda del PC a disposizione ovviamente), questa è una compilazione davvero lunga, e richiede anche abbastanza spazio su hard disk (nel mio caso la directory dei sorgenti è arrivata a pesare più di 6 GB).

Prima di continuare, ci sono un paio di opzioni che potrebbero far comodo per l'ultimo comando visto:

  • --append-to-version=nomeversione, aggiunge al nome dei pacchetti creati la stringa nomeversione (utile ad esempio per ricordarsi una qualche caratteristica del kernel che stiamo compilando);
  • --revision, permette di impostare il numero di revisione del pacchetto (utile in caso di ricompilazione successiva con qualche modifica).

Conclusa la compilazione, se non avete ricevuto errori, potrete passare all'installazione dei tre pacchetti che avete creato:

cd ..

sudo dpkg -i linux-*.deb
è

Riavviate e godetevi il vostro nuovo kernel!! ;)

Attenzione però, potrebbe essere necessario ricompilare alcuni moduli esterni del kernel (ad esempio a me è capitato con VirtualBox, motivo per cui ho creato anche il pacchetto linux-source) dopo l'installazione, così come vi consiglio di non disinstallare alcun vecchio kernel prima di essere assolutamente certi del corretto funzionamento di quello nuovo.

Alla prossima..