Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

HowTo: compilare e installare il kernel Linux

Link copiato negli appunti

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

Impostare la configurazione del kernel. Potete impostare la configurazione del kernel da compilare in diversi modi: tramite un menu di configurazione oppure utilizzare una configurazione già pronta.

Volete utilizzare un menu di configurazione? Dovete solo sceglierne il tipo: interattivo, testuale, grafico. Utilizzate uno di questi comandi:

$ make config (interattivo)
$ make menuconfig (testuale)
$ make gconfig (grafico gtk+)
$ make xconfig (grafico qt)

Volete utilizzare una configurazione predefinita? Dovete solo capire quale:

$ make defconfig (la configurazione di default)
$ make allyesconfig (tutti i parametri abilitati)
$ make allnoconfig (tutti i parametri disabilitati)
$ make allmodconfig (tutti moduli)
$ make randconfig (sfidate il caso con qualcosa di casuale)

Anche per la configurazione non dimenticate di usare il parametro "O=" nel caso avete scelto di effettuare una compilazione remota.

Compilare i sorgenti:

$ make

Oppure:

$ make O=/usr/src/my/linux-objects

Ovviamente, qui l´unico problema che potete incontrare deriva dalla configurazione che avete impostato.

Installare e configurare il sistema per il boot col nuovo kernel. Anche qui nulla di più semplice:

# make modules_install (installa i moduli)
# make install (installa il nuovo kernel)

Attenzione, questi due comandi andranno eseguiti come utente root poiché richiedono l´accesso a cartelle di sistema normalmente protette.

Cosa significa installare i moduli? Tutti i file oggetto che sono moduli del kernel saranno copiati nella cartella /lib/modules/linux-2.6.x.y.

Cosa significa installare il kernel? Tipicamente questa operazione comporta la copia dei file vmlinuz-2.6.x.y, initrd-2.6.x.y, e System.map-2.6.x.y nella cartella /boot. In più verrà aggiunta l´entry di boot nel file di configurazione /boot/grub/grub.conf del BootLoader Grub.

Questa parte del processo è abbastanza standard e consolidata. Tuttavia è bene fare un rapido check controllando che i file siano stati copiati, e che la configurazione di Grub sia coerente e corretta.

Nota, e qui purtroppo va ridetto, ricordatevi di aggiungere il parametro "O=" nel caso abbiate scelto l´opzione di compilazione in remoto.

Riavviate il computer e gustatevi il boot del nuovo Kernel. Niente paura se vedrete spuntare fuori un "kernel panic" o un "kernel ops", la configurazione che avete scelto in fase di compilazione ha qualcosa che non va. Riavviate il PC con un kernel funzionante e "forza e coraggio" riconfigurate e ricompilate.

Ti consigliamo anche