Guida alle tecnologie

Costruire un kernel nel modo tradizionale

6 min read Linux Aggiornato 25 Sep 2025
Costruire un kernel Linux tradizionale
Costruire un kernel Linux tradizionale

Sommario rapido

  • Scarica i sorgenti dal sito ufficiale del kernel e posizionali in /usr/src.
  • Applica patch solo se necessario e verifica con –dry-run.
  • Usa la configurazione del kernel corrente come base e modifica con make menuconfig.
  • Compila, installa i moduli e aggiorna GRUB; mantieni sempre un kernel funzionante per rollback.

3 Costruire un kernel: panoramica

Questa sezione descrive un approccio tradizionale, valido su qualsiasi sistema Linux. Non crea un pacchetto RPM specifico per Fedora; compila direttamente i sorgenti e installa il kernel nel sistema.

3.1 Scaricare i sorgenti del kernel

Scarichiamo il kernel desiderato nella directory /usr/src. Vai su https://www.kernel.org e scegli la versione che vuoi installare, per esempio linux-2.6.18.2.tar.bz2 (tutte le serie 2.6 si trovano nella relativa directory di kernel.org).

Esempio di comandi per scaricare nella directory /usr/src:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2

Poi decomprimi i sorgenti e crea un collegamento simbolico chiamato linux verso la directory dei sorgenti:

tar xjf linux-2.6.18.2.tar.bz2
ln -s linux-2.6.18.2 linux
cd /usr/src/linux

Importante: esegui questi comandi con privilegi di root o usando sudo, se necessario. Mantieni sempre una copia dei file critici prima di modifiche estese.

3.2 Applicare patch ai sorgenti del kernel (opzionale)

A volte sono necessari driver o funzionalità non ancora presenti nel kernel ufficiale. In questi casi applica una patch ai sorgenti, se esiste una patch compatibile.

Supponiamo di aver scaricato una patch chiamata patch.bz2 in /usr/src. Per applicarla ai sorgenti (devi essere nella directory /usr/src/linux):

bzip2 -dc /usr/src/patch.bz2 | patch -p1 –dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1

La prima riga esegue una simulazione di applicazione (–dry-run). Se non mostra errori, esegui la seconda riga per applicare la patch. Non procedere se la simulazione segnala errori.

Prepatches e versioni candidate

I prepatch sono equivalenti alle release alpha. Ad esempio, se una funzionalità è disponibile solo in 2.6.19-rc5 e la sorgente completa non è ancora pubblicata, puoi applicare patch-2.6.19-rc5.bz2 ai sorgenti della precedente release completa (2.6.18) ma non a micro-release come 2.6.18.1 o 2.6.18.2.

Esempio: per applicare patch-2.6.19-rc5 alla sorgente 2.6.18:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc5.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1 –dry-run
bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1

Nota: assicurati che la versione di base sia compatibile con la patch che stai applicando.

3.3 Configurare il kernel

È buona pratica usare la configurazione del kernel attualmente in uso come base per il nuovo kernel. Copia il file di configurazione esistente in /usr/src/linux:

make mrproper
cp /boot/config-uname -r ./.config

Quindi esegui il menu di configurazione interattivo:

make menuconfig

Scegli Load an Alternate Configuration File e seleziona .config (che contiene la configurazione del kernel corrente) come file di configurazione.

Schermata di menuconfig che mostra l'opzione per caricare un file di configurazione alternativo

Schermata di menuconfig che mostra le opzioni di configurazione del kernel

Sfoglia il menu e modifica le opzioni secondo le tue esigenze. Quando scegli Esci, rispondi alla domanda “Do you wish to save your new kernel configuration?” con Yes.

Conferma di salvataggio della nuova configurazione del kernel mostrata in menuconfig

Suggerimenti pratici:

  • Disabilita le opzioni che non ti servono per ridurre dimensioni e complessità.
  • Attiva il supporto per il tuo filesystem di root e i driver del disco prima di compilare.
  • Se non sei sicuro, mantieni le impostazioni del kernel corrente e modifica solo ciò che serve.

3.4 Compilare e installare il kernel

Per compilare e installare il kernel, esegui questi tre comandi:

make all
make modules_install
make install

La compilazione può richiedere molte ore a seconda della configurazione e della velocità del processore. L’ultimo comando crea automaticamente anche un ramdisk e aggiorna /boot/grub/menu.lst.

Poi apri e verifica /boot/grub/menu.lst. Dovresti trovare una sezione (stanza) per il nuovo kernel nella parte alta dell’elenco. Per assicurarti che il nuovo kernel venga avviato per default, imposta default su 0.

vi /boot/grub/menu.lst

Esempio di menu.lst:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title Fedora Core (2.6.18.2)
        root (hd0,0)
        kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18.2.img

title Fedora Core (2.6.18-1.2798.fc6)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-1.2798.fc6.img

Ora riavvia il sistema:

shutdown -r now

Se tutto va bene, il sistema si avvierà con il nuovo kernel. Verifica la versione in uso con:

uname -r

Dovresti vedere qualcosa come:

2.6.18.2

Risoluzione problemi e rollback

Se il sistema non si avvia correttamente, riavvia e, quando vedi lo splash di GRUB, premi un tasto per entrare nel menu di GRUB.

Schermata di errore durante l'avvio con kernel non funzionante

Menu GRUB che permette di selezionare kernel alternativi

Seleziona il kernel precedente funzionante e avvia il sistema. Una volta tornato nel sistema operativo, rimuovi la voce del kernel non funzionante da /boot/grub/menu.lst o correggi la configurazione e riprova.

Importante: conserva sempre almeno un kernel funzionante nel menu di avvio per poter effettuare il rollback.

Criteri di accettazione

  • Il sistema si avvia con il nuovo kernel senza errori manifesti.
  • I servizi critici si avviano come previsto.
  • I dispositivi hardware essenziali (dischi, rete) sono riconosciuti e funzionanti.
  • uname -r mostra la versione del kernel installato.

Runbook di rollback rapido

  1. Riavvia la macchina.
  2. Alla schermata di GRUB, premi un tasto per accedere al menu.
  3. Seleziona il kernel precedente e avvia.
  4. Entra come root e modifica /boot/grub/menu.lst per rimuovere o commentare la voce del kernel fallito.
  5. Se necessario, ricompila con altre opzioni o ripristina la configurazione precedente.

Test di verifica e casi di accettazione

  • Test 1: uname -r ritorna la versione prevista.
  • Test 2: systemctl status mostra tutti i servizi critici attivi (o equivalente per sistemi non systemd).
  • Test 3: il mount del filesystem root è corretto e la scrittura/lettura su disco funzionano.
  • Test 4: ping a gateway o DNS interno per verificare funzionalità di rete.

Checklist per ruolo

  • Amministratore di sistema: eseguire backup di /boot e della configurazione GRUB prima di iniziare; tenere a portata di mano l’accesso fisico o console remota.
  • Sviluppatore kernel: verificare le patch su una macchina di test e documentare differenze dalla sorgente ufficiale.
  • Operatore QA: eseguire i test di integrazione e i controlli hardware su piattaforme representative.

Quando questo metodo fallisce

  • Se il kernel ha dipendenze di pacchetti specifici della distribuzione (moduli distribuiti come RPM), potresti avere problemi di compatibilità.
  • Su sistemi con gestori di pacchetti che aggiornano automaticamente GRUB o initramfs in modi non standard, l’approccio manuale può interferire con la gestione della distribuzione.
  • Se non hai accesso a una console di emergenza fisica, procedi con estrema cautela: un kernel non avviabile può lasciare il server irraggiungibile.

Alternative

  • Costruire un pacchetto della distribuzione (es. RPM, DEB) per integrare il kernel nel sistema di gestione pacchetti.
  • Usare helper come make-kpkg (Debian) o strumenti di build della distribuzione per creare pacchetti kernel.
  • Usare kernel precompilati e backport dei driver, se disponibili.

Box informativo: buone pratiche

  • Mantieni la macchina host aggiornata.
  • Compila su una macchina con sufficiente memoria e CPU; usare make -jN con N adeguato accelera la compilazione.
  • Testa sempre i kernel personalizzati in ambienti di staging prima di metterli in produzione.

Link utili

Riepilogo

Questa guida mostra i passaggi fondamentali per costruire un kernel Linux partendo dai sorgenti: scarico, patch, configurazione, compilazione, installazione e verifica. Mantieni sempre procedure di backup, test e un piano di rollback per ridurre il rischio in produzione.

Importante: non inventare numeri o statistiche non verificabili durante la pianificazione; mantieni test e documentazione aggiornati.

Autore
Redazione

Materiali simili

PWA in Firefox su Windows: Taskbar Tabs
Browser

PWA in Firefox su Windows: Taskbar Tabs

Liberare spazio iPhone senza cancellare app
Smartphone

Liberare spazio iPhone senza cancellare app

WireGuard su CentOS 8: installazione e configurazione
VPN

WireGuard su CentOS 8: installazione e configurazione

Liberare 24 GB su Windows 10 dopo Threshold 2
Windows

Liberare 24 GB su Windows 10 dopo Threshold 2

Corriere autonomo: come ottenere reddito regolare
Lavoro

Corriere autonomo: come ottenere reddito regolare

Cancellare la cache in Microsoft Edge — Guida rapida
Browser

Cancellare la cache in Microsoft Edge — Guida rapida