Costruire un kernel nel modo 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.
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.
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.
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
- Riavvia la macchina.
- Alla schermata di GRUB, premi un tasto per accedere al menu.
- Seleziona il kernel precedente e avvia.
- Entra come root e modifica /boot/grub/menu.lst per rimuovere o commentare la voce del kernel fallito.
- 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
- Fedora: http://fedora.redhat.com
- Fedora Wiki: http://fedoraproject.org/wiki
- The Linux Kernel Archives: http://www.kernel.org
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.
Materiali simili

PWA in Firefox su Windows: Taskbar Tabs

Liberare spazio iPhone senza cancellare app

WireGuard su CentOS 8: installazione e configurazione

Liberare 24 GB su Windows 10 dopo Threshold 2

Corriere autonomo: come ottenere reddito regolare
