Il kernel Linux è la forza vitale di tutta la famiglia di sistemi operativi Linux, inclusi Ubuntu, CentOS e Fedora.
Per la maggior parte, non è necessario compilare il kernel, poiché viene installato per impostazione predefinita quando si installa il sistema operativo. Inoltre, quando viene eseguito un aggiornamento critico del kernel, puoi usare yum o apt-get per aggiornare il kernel sul tuo sistema Linux.
Tuttavia potresti incontrare determinate situazioni, in cui potresti avere per compilare il kernel dal sorgente. Le seguenti sono alcune situazioni in cui potresti dover compilare il kernel sul tuo sistema Linux.
- Per abilitare funzionalità sperimentali che non fanno parte del kernel predefinito.
- Per abilitare il supporto per un nuovo hardware che non è attualmente supportato dal kernel predefinito.
- Per eseguire il debug del kernel
- Oppure, solo per imparare come funziona il kernel, potresti voler esplorare il codice sorgente del kernel e compilarlo da solo.
In questo tutorial, spiegheremo come compilare il kernel Linux dal sorgente.
Inoltre, tieni presente che se vuoi semplicemente compilare un driver, non è necessario compilare il kernel. Hai solo bisogno del pacchetto linux-headers del kernel.
1. Scarica l'ultimo kernel stabile
Il primo passo è scaricare l'ultimo kernel stabile da kernel.org.
# cd /usr/src/ # wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.3.tar.xz
2. Decomprimi la sorgente del kernel
Il secondo passo è decomprimere il file sorgente del kernel per la compilazione.
# tar -xvJf linux-3.9.3.tar.xz
3. Configura il kernel
Il kernel contiene quasi 3000 opzioni di configurazione. Per rendere il kernel utilizzato dalla maggior parte delle persone sulla maggior parte dell'hardware, la distribuzione Linux come Ubuntu, Fedora, Debian, RedHat, CentOS, ecc., generalmente includerà il supporto per l'hardware più comune. Puoi prendere una qualsiasi delle configurazioni dalla distribuzione, e per di più puoi aggiungere la tua configurazione, oppure puoi configurare il kernel da zero, oppure puoi usare la configurazione predefinita fornita dal kernel.
# cd linux-3.9.3 # make menuconfig
Il make menuconfig avvierà un'interfaccia utente basata su testo con opzioni di configurazione predefinite come mostrato nella figura. Dovresti aver installato i pacchetti "libncurses e libncurses-devel" affinché questo comando funzioni.
Useremo la configurazione predefinita fornita dal kernel. Quindi seleziona "Salva" e salva la configurazione nel nome del file ".config".
Quello che segue è un esempio del file “.config”:
CONFIG_MMU=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y
4. Compila il kernel Linux
Compila il kernel principale:
# make
Compila i moduli del kernel:
# make modules
Installa i moduli del kernel:
# make modules_install
A questo punto, dovresti vedere una directory denominata /lib/modules/3.9.3/ nel tuo sistema.
5. Installa il nuovo kernel
Installa il nuovo kernel sul sistema:
# make install
Il comando make install creerà i seguenti file nella directory /boot.
- vmlinuz-3.9.3 – Il kernel vero e proprio
- System.map-3.9.3 – I simboli esportati dal kernel
- initrd.img-3.9.3 – l'immagine initrd è un file system radice temporaneo utilizzato durante il processo di avvio
- config-3.9.3 – Il file di configurazione del kernel
Il comando "make install" aggiornerà anche grub.cfg per impostazione predefinita. Quindi non è necessario modificare manualmente il file grub.cfg.
6. Avvia Linux con il nuovo kernel
Per utilizzare il nuovo kernel appena compilato, riavvia il sistema.
# reboot
Poiché, in grub.cfg, il nuovo kernel viene aggiunto come avvio predefinito, il sistema si avvierà dal nuovo kernel. Nel caso in cui dovessi avere problemi con il nuovo kernel, puoi selezionare il vecchio kernel dal menu di grub durante l'avvio e puoi usare il tuo sistema come al solito.
Una volta che il sistema è attivo, usa il comando uname per verificare che sia installata la nuova versione del kernel Linux.
$ uname -r 3.9.3