Come costruire e installare un kernel personalizzato su Ubuntu

Immagine in evidenza del kernel personalizzato di Ubuntu

Il pensiero di compilare i propri kernel incute paura nei cuori dei nuovi utenti Linux. Sembra spaventoso, costruire la parte più cruciale del proprio sistema da zero. La verità è che costruire il kernel Linux su Ubuntu è davvero facile.

Costruire i kernel Linux non richiede programmazione. Alcuni dei migliori programmatori del mondo hanno già scritto tutto il codice. Devi solo scegliere le funzionalità che desideri e mettere tutto insieme. Qui ti mostreremo come costruire e installare un kernel personalizzato su Ubuntu.

Indice dei contenuti

  • Ottenere le dipendenze
  • Ottenere il codice sorgente del kernel per Ubuntu
  • Configurare la tua build
  • Configurare il kernel di Ubuntu
  • Costruire pacchetti del kernel per Ubuntu
  • Installare il kernel
  • Installare kernel binari personalizzati
  • Installare Mainline in Ubuntu
  • Usare Mainline

Leggi anche: Come effettuare il downgrade del kernel in Linux

Ottenere le dipendenze

Prima di toccare un kernel, hai bisogno degli strumenti giusti per costruirlo. Usa il comando qui sotto per scaricarli dai repository di Ubuntu.

sudo apt install wget build-essential bison flex libncurses-dev libssl-dev libelf-dev

Ottenere il codice sorgente del kernel per Ubuntu

Ora puoi prendere il sorgente che desideri costruire. Tutti i kernel sono disponibili dai repository ufficiali di Linux. Puoi dare un’occhiata alle ultime versioni nel loro repository cdn. Al momento di questo articolo, l’ultima è la 5.16. Puoi scaricare usando i comandi:

cd /home/$USER/  
mkdir kernelbuild  
cd kernelbuild  
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.19.tar.xz

Scarica il kernel personalizzato di Ubuntu

Ci vorrà un po’ di tempo per scaricare il kernel, quindi sii paziente.

Configurare la tua build

Inizia la tua configurazione decomprimendo il file tar del kernel. Poi, copia la configurazione del tuo kernel esistente al suo interno.

tar xavf linux-5.16.19.tar.xz && cd ./linux-5.16.19  
cp /boot/config-`uname -r` .config

Ora devi adattare la vecchia configurazione al nuovo kernel.

make oldconfig

Questo script ti chiederà cosa fare con ogni nuova funzionalità. Se vuoi usare le impostazioni predefinite, usa make olddefconfig invece.

Leggi anche: Come costruire un nuovo PC per Linux

Configurare il kernel di Ubuntu

Puoi lasciare la tua configurazione così com’è, e probabilmente andrà bene. Non ha senso costruire un kernel personalizzato se non lo personalizzi.

Per personalizzare la tua configurazione, esegui

make menuconfig

Esempio di Makeconfig del kernel personalizzato di Ubuntu

Un menu blu si aprirà con un elenco di categorie. Queste categorie contengono funzionalità che puoi selezionare per costruire nel tuo kernel.

Esempio di Btrfs del kernel personalizzato di Ubuntu

Ad esempio, se desideri davvero costruire il supporto per il file system BTRFS direttamente nel kernel e abilitare altre funzionalità, dovresti andare su “File systems ->”. Poi, scorri verso il basso fino a dove vedi “Supporto per il file system Btrfs.” Seleziona l’opzione che desideri e premi la barra spaziatrice. La barra spaziatrice cicla tra “M,” “*” e vuoto.

  • “M” indica che la funzionalità sarà costruita come un modulo che verrà caricato se necessario quando Ubuntu si avvia.
  • “*” significa che la funzionalità sarà costruita nel kernel e sempre caricata.

Lo script non include opzioni vuote nel prodotto finale. Quando hai finito di configurare le cose, pulisci la directory.

make clean

Ora il tuo kernel è pronto per essere costruito.

Costruire pacchetti del kernel per Ubuntu

Esiste un metodo in Ubuntu per costruire i loro kernel, ma ti costringe a usare script scritti per versioni più vecchie. A volte va bene; altre volte si rompe orribilmente. Quindi, di solito è meglio usare il metodo Linux più generico con GNU make.

make -j `getconf _NPROCESSORS_ONLN`  
make deb-pkg LOCALVERSION=-custom

Tutta quella riga fa è compilare il kernel in pacchetti .deb usando il numero di core CPU sul tuo sistema più uno. Aggiunge anche “custom” alla fine della versione del pacchetto per differenziare il tuo kernel personalizzato dagli altri.

Nota: può richiedere ore per compilare un kernel. Sii paziente.

Installare il kernel

Troverai i tuoi nuovi pacchetti del kernel un livello di directory sopra. Saranno facilmente identificabili dal loro numero di versione. Puoi usare dpkg per installarli.

cd ./../  
sudo dpkg -i linux-firmware-image-5.16.19-custom_5.16.19-custom-1_amd64.deb  
sudo dpkg -i linux-libc-dev_5.16.19-custom-1_amd64.deb  
sudo dpkg -i linux-headers-5.16.19-custom_5.16.19-custom-1_amd64.deb  
sudo dpkg -i linux-image-5.16.19-custom-dbg_5.16.19-custom-1_amd64.deb  
sudo dpkg -i linux-image-5.16.19-custom_5.16.19-custom-1_amd64.deb

Quando l’installazione è terminata, riavvia il computer. Ubuntu si avvierà automaticamente nel tuo nuovo kernel. Puoi verificare che sia andato a buon fine eseguendo uname -r in un terminale quando si avvia.

Installare kernel binari personalizzati

Un altro modo di utilizzare kernel Linux personalizzati in Ubuntu è installare una versione binaria precompilata. A differenza della versione basata su sorgente, queste sono copie del kernel che sono già state compilate per il sistema e l’architettura che stai eseguendo.

Elenco dei kernel personalizzati di Ubuntu

Inoltre, i kernel binari personalizzati possono anche offrirti la flessibilità di poter passare tra le versioni del kernel per la tua installazione di Ubuntu. Questo può essere particolarmente utile se stai eseguendo una macchina con problemi di compatibilità hardware e non vuoi occuparti di compilare il tuo kernel.

Sapendo questo, il modo più popolare per installare kernel binari personalizzati è tramite Mainline. Questo è un programma GUI sviluppato da bkw777 che mira a semplificare il processo di installazione di un kernel Linux.

Mainline del kernel personalizzato di Ubuntu

In questo, questo programma combina tutti i passaggi necessari per scaricare e configurare correttamente il kernel. Ad esempio, Mainline ti consente di scegliere facilmente un binario del kernel e un header che desideri installare. Terrà quindi questa versione in una cache da cui puoi facilmente caricare ogni volta che ne hai bisogno.

Leggi anche: 5 strumenti per creare facilmente una distribuzione Linux personalizzata

Installare Mainline in Ubuntu

Detto ciò, installare Mainline è relativamente facile. Prima, devi dire a apt di includere il repository dei pacchetti di Mainline. Per farlo, puoi eseguire il seguente comando dal tuo Terminale:

sudo add-apt-repository ppa:cappelikan/ppa

Aggiungi nuovo repo del kernel personalizzato di Ubuntu

Da qui, devi quindi aggiornare la directory dei pacchetti di Ubuntu. Questo permetterà a apt di leggere dal repository che hai appena aggiunto e, a sua volta, ti permetterà di scaricare Mainline tramite esso:

sudo apt update

Con questo, l’unica cosa rimasta da fare è installare Mainline stesso:

sudo apt install mainline

Installazione di Mainline del kernel personalizzato di Ubuntu

Usare Mainline

Una volta fatto, puoi ora caricare Mainline andando nel tuo Menu Applicazioni e cercandolo. Il programma Mainline si caricherà quindi e mostrerà tutti i pacchetti del kernel che puoi installare per il tuo sistema.

Cerca Mainline del kernel personalizzato di Ubuntu

Da lì, puoi quindi selezionare e installare la versione del kernel che desideri utilizzare per il tuo sistema. Ad esempio, posso selezionare “Linux 5.16.19” e cliccare su Installa nella barra laterale destra per caricare completamente questa versione del kernel sulla mia macchina.

Installa nuovo kernel personalizzato di Ubuntu 1

D’altra parte, posso anche usare Mainline per rimuovere i kernel che non voglio più utilizzare. Ad esempio, posso selezionare “Linux 5.15” e cliccare su Rimuovi nella stessa barra laterale destra per rimuovere questo kernel dal mio sistema.

Disinstalla vecchio kernel personalizzato di Ubuntu

Farò in questo modo consente di aggiungere o rimuovere in modo pulito qualsiasi file e binario collegato a quella versione del kernel. Questo perché un binario del kernel include anche le librerie, gli header e il firmware che, a loro volta, consentono di funzionare correttamente.

Leggi anche: Come risolvere il problema di sicurezza del kernel in Windows 10

Domande frequenti

Quali sono i problemi di eseguire un kernel personalizzato?

Uno dei maggiori problemi di eseguire un kernel personalizzato è che stai estraendo un pezzo vitale del tuo sistema dagli aggiornamenti regolari. Questo significa che devi installare manualmente tutti gli aggiornamenti del kernel da questo punto in poi. Questi includono funzionalità hardware aggiuntive così come aggiornamenti critici di sicurezza.

Questo può essere un problema se hai bisogno di un sistema che funzioni e si mantenga da solo con un intervento minimo dell’utente. Pertanto, eseguire un kernel personalizzato non solo richiede di sapere quali funzionalità del kernel desideri, ma anche di essere consapevole degli aggiornamenti critici.

Ci sono svantaggi nell’usare un binario del kernel?

Sì. Uno dei principali svantaggi dell’utilizzo di un binario del kernel è che non hai alcun controllo sulle sue funzionalità integrate. Questo significa che, a differenza di un kernel basato su sorgente, un binario del kernel non conterrà ottimizzazioni e supporto specifici per l’hardware.

Questo significa che se intendi utilizzare pezzi di hardware esotici con Ubuntu, dovrai compilare il tuo kernel da zero.

È meglio compilare una funzionalità del kernel come modulo o integrata?

Questo dipende in gran parte da cosa vuoi usare il tuo kernel. Ad esempio, compilare una funzionalità come integrata garantirà che venga caricata immediatamente una volta che il kernel è caricato in memoria. Tuttavia, farlo in questo modo aumenterà la dimensione complessiva del kernel finale.

Nel frattempo, compilare una funzionalità come modulo la rimuoverà dal kernel di base. Invece, questo modulo si carica una volta che il kernel è già in memoria. Questo riduce la dimensione del file del kernel finale che, a sua volta, lo rende veloce e sicuro.

Sapendo questo, è buona pratica compilare le funzionalità del kernel come integrate poiché riduce le possibilità di eventuali problemi di compatibilità nel tuo sistema. Tuttavia, dovresti anche prestare attenzione a non includere troppe funzionalità poiché farlo aumenterà significativamente la dimensione complessiva del tuo kernel.