HowTo: compilare e installare il kernel Linux

post_090803.jpg

Compilare un kernel Linux non è una attività complessa, ma richiede una buona conoscenza dell’hardware su cui eseguirlo, e quindi di quali funzionalità si ha bisogno, di quali chipset supportare. Tipicamente chi deve solo e semplicemente compilare un Kernel Linux avrà poco a che fare con l’editing dei sorgenti e il loro hacking. Nella maggior parte dei casi bisognerà spendere solo del tempo per individuare la giusta configurazione software da adottare. Solo in casi eccezionali un utente per PC potrebbe essere costretto a mettere mano ai sorgenti.

In termini molto pratici per compilare un kernel Linux è necessario:

  • pulire e preparare l’albero dei sorgenti, e quello di compilazione;
  • impostare la configurazione del kernel;
  • compilare i sorgenti;
  • installare e configurare il sistema per il boot col nuovo kernel.

La guida proposta in questo post si ispira a quella pubblicata su Linux.com. Questa, come ha fatto notare lo stesso autore, è stata provata e testata su una Fedora 11.

Per semplicità di esposizione si supporrà che i sorgenti del kernel, prelevati ad esempio sul sito ufficiale www.kernel.org, siano presenti nella cartella /usr/src/my/linux-2.6.x.y.

Due modi di compilare: in locale e in remoto. È possibile compilare il kernel Linux in due modi: in locale e in remoto. Nel primo caso tutti i file utili generati durante la configurazione e durante la compilazione saranno localizzati proprio nella stessa cartella dei sorgenti del kernel, quindi /usr/src/my/linux-2.6.x.y. Nel secondo caso, invece, l’utente può decidere di generare tutti questi file in una cartella separata e diversa da quella dei sorgenti.

La compilazione in remoto consentirebbe di separare i sorgenti dai file di configurazione e i file oggetto. In questo modo è possibile utilizzare uno stesso albero dei sorgenti per compilare più volte il kernel e con diverse configurazioni.

Per compilare in remoto un kernel Linux è sufficiente utilizzare un parametro da aggiungere al comando make. Supposto che la cartella remota in cui depositare i file compilati sia /usr/src/my/linux-objects allora il parametro da aggiungere al comando make deve avere la forma “O=/usr/src/my/linux-objects”. Questo parametro va aggiunto a tutti i comandi da impartire.

Inoltre, il sistema di compilazione del kernel Linux impone un vincolo. L’albero dei sorgenti può essere utilizzato o per la compilazione locale o per quella remota, ma non per entrambe le attività. Potete avere più cartelle remote, magari una per ogni vostro esperimento, ma non potrete mai usare un albero dei sorgenti su cui avete già compilato il kernel in locale per compilarne uno nuovo in remoto. L’albero locale deve essere preventivamente pulito prima di passare alla compilazione remota.

Pulire e preparare l’albero dei sorgenti, e quello di compilazione con i comandi:

$ CD /usr/src/my/linux-2.6.x.y
$ make clean
$ make mrproper
$ make distclean

Per pulire l’albero remoto è sufficiente aggiungere il parametro che ne indica la posizione:

$ CD /usr/src/my/linux-2.6.x.y
$ make O=/usr/src/my/linux-objects clean
$ make O=/usr/src/my/linux-objects mrproper
$ make O=/usr/src/my/linux-objects distclean

Tag: ,

Commenti

  1. [1]

    Finalmente un articolo un po’ tecnico.
    Bravo!

  2. [2]

    (il sistema più diffuso è Ubuntu, suo cugino)

  3. [3]

    Se il metodo di installazione funziona con Debian mi aspetto che funzioni anche con Ubuntu… sbaglio? Comunque meglio un articolo come questo, per quanto “copiato”, che tanti altri che leggo in giro (ad esempio l’interessantissimo “Quanto pesa Internet?”)

  4. [4]

    articolo semplice ma ben spiegato…

  5. [5]

    semplice e chiaro :)
    thx

  6. [6]

    Molti i Readme non sanno manco cosa sono, bell’articolo comunque, moooooooolto chiaro ed esplicativo se pur semplificato.

    Poi che io sappia il Readme in italiano non c’è quindi se qualcuno fino ad oggi ha usato come scusa i problemi con l’inglese ora non potrà più.

  7. [7]

    bella guida, ho un problema con una scheda wireless RT2860 sul mio portatile HP g62, linuxmint 11 non riesce ad attivare il wireless. Nel kernel (2.6.38.8) non mi sembra ci sia il supporto per questa scheda, ho scaricato i driver dal sito RALINK ma mi da errore quando tento di scompattarli o aprirli. Cosa posso fare? Grazie

Inserisci il tuo commento