Scopri passo passo l’avvio di Linux: dal firmware al kernel, fino a Systemd, con esempi pratici per la tua maturità 2026. Conoscere a fondo il boot di una distribuzione Linux è fondamentale per affrontare le prove pratiche dell’esame di Stato di sistemi e reti. Il quinto anno ric...
Scopri passo passo l’avvio di Linux: dal firmware al kernel, fino a Systemd, con esempi pratici per la tua maturità 2026.
Conoscere a fondo il boot di una distribuzione Linux è fondamentale per affrontare le prove pratiche dell’esame di Stato di sistemi e reti. Il quinto anno richiede non solo la capacità di descrivere le fasi, ma anche di diagnosticare problemi comuni, come il Kernel Panic. Questo riassunto è pensato per diventare un appunto maturità di riferimento, pronto da consultare prima del colloquio orale o della prova scritta.
Il ruolo del firmware: BIOS e UEFI nella fase di avvio

All’accensione, il firmware – BIOS nei sistemi legacy o UEFI nei computer più recenti – prende il controllo dell’hardware. Il primo compito è eseguire il Power On Self Test (POST), una serie di controlli che verificano la presenza e la correttezza della RAM e della CPU. Se il POST termina senza errori, il firmware procede a individuare il dispositivo di avvio secondo l’ordine configurato nella sua BIOS Setup o nella UEFI Boot Manager. A questo punto il bootloader viene caricato dalla Master Boot Record (MBR) nei sistemi legacy, oppure dalla EFI System Partition (ESP) nei sistemi moderni.
- BIOS: utilizza il MBR, supporta dischi fino a 2 TB, avvio in modalità real mode a 16 bit.
- UEFI: utilizza la ESP, supporta dischi di dimensioni superiori a 2 TB, avvio in modalità protected mode a 32/64 bit.
| Caratteristica | BIOS | UEFI |
|---|---|---|
| Tipo di partizione di avvio | Master Boot Record (MBR) | EFI System Partition (ESP) |
| Limite dimensione disco | 2 TB | Illimitato (GPT) |
| Modalità di esecuzione | Real mode 16 bit | Protected mode 32/64 bit |
| Interfaccia utente | Testuale, tasti funzione | Grafica, mouse, rete |
Il boot order configurato nel BIOS o nella UEFI determina quale dispositivo verrà interrogato per primo. Una configurazione errata può far sì che il firmware tenti di avviare un disco privo di GRUB2, provocando un arresto immediato. Per la maturità è sufficiente ricordare che l’ordine di avvio è impostabile tramite le schermate di configurazione del firmware e che, una volta individuato il disco corretto, il bootloader viene caricato in memoria.
GRUB2: il bootloader di Linux e le sue fasi operative
Il GRUB2 (Grand Unified Bootloader) è il componente che si colloca tra il firmware e il kernel. Dopo che il firmware ha caricato il primo settore, GRUB2 avvia una sequenza a più livelli, progettata per garantire flessibilità e robustezza. La prima fase è contenuta in boot.img, che risiede nel settore 0 del disco. Questa piccola immagine carica la seconda fase, core.img, situata nella partizione di boot o in una zona riservata. Una volta in memoria, core.img legge il file di configurazione /boot/grub2/grub.cfg, presenta il menu di selezione e prepara i parametri per il kernel.
- boot.img (primo stadio) viene letto dal firmware e carica core.img.
- core.img (secondo stadio) individua grub.cfg e costruisce il menu di avvio.
- Il menu permette di scegliere il kernel da avviare, passando parametri con la direttiva linux (es.
root=UUID=xxx ro). - GRUB2 carica in RAM l’immagine compressa vmlinuz e il filesystem temporaneo initramfs.
- Il kernel si decomprime, monta initramfs come root provvisorio e avvia lo script init al suo interno.
Il file grub.cfg può essere rigenerato con il comando grub2-mkconfig -o /boot/grub2/grub.cfg e personalizzato tramite /etc/default/grub. Modificare il valore di GRUB_TIMEOUT consente di ridurre il tempo di attesa del menu, un accorgimento utile per ottimizzare il boot durante le prove pratiche. Inoltre, la direttiva linux permette di specificare root=UUID=… e ro, indicando al kernel il dispositivo di root e il montaggio iniziale in sola lettura.
Una volta che GRUB2 ha trasferito il controllo, il kernel Linux si decomprime in memoria. Il risultato è l’immagine vmlinuz, che contiene il nucleo del sistema operativo e il codice necessario per l’inizializzazione dell’hardware. Subito dopo, il kernel monta il initramfs, un filesystem temporaneo che risiede in RAM e contiene gli script e i driver minimi richiesti per accedere al vero root filesystem. Questo passaggio è cruciale perché permette di gestire configurazioni di storage avanzate, come LVM o RAID, prima di montare il filesystem definitivo.
Caricamento del kernel e dell'initramfs: dal vmlinuz al pivot_root
Il kernel si decomprime, monta initramfs come root provvisorio e avvia lo script init al suo interno. Lo script init esegue le operazioni di modprobe per caricare i driver necessari, verifica l’integrità del root filesystem e, una volta completata la preparazione, effettua il pivot_root verso il filesystem reale, lasciando initramfs in un punto di montaggio temporaneo (solitamente /run/initramfs).
L’initramfs è il successore dell’obsoleto initrd. A differenza di quest’ultimo, initramfs è un archivio cpio compresso (solitamente gzip o xz) che viene estratto direttamente in RAM senza necessità di un driver di block device. Questo rende il processo di avvio più veloce e flessibile, un aspetto importante da ricordare per la maturità e per le prove pratiche di sistemi e reti. Lo script init all’interno dell’initramfs può anche includere controlli di integrità, come la verifica di checksum, per assicurare che i file di avvio non siano stati alterati.
Il passaggio da initramfs a root definitivo è gestito tramite la chiamata di sistema pivot_root(), che sostituisce il punto di mount corrente con quello specificato. Dopo il pivot_root, il processo init continua l’avvio passando il controllo al primo processo userspace, ovvero Systemd con PID 1.
Systemd e l’inizializzazione userspace: target, unità e dipendenze
Il primo processo userspace avviato dal kernel è init, che in ambienti moderni è rappresentato da Systemd. Systemd assume il ruolo di PID 1 e sostituisce il tradizionale SysVinit. La sua caratteristica distintiva è l’avvio in parallelo delle unità, riducendo drasticamente il tempo di boot. Ogni componente del sistema è descritto da una unit, che può essere di tipo .service, .mount, .socket o altri. Systemd costruisce un grafo aciclico di dipendenze e avvia le unità non appena le loro pre‑requisiti sono soddisfatti.
- multi-user.target (runlevel 3): sistema multiutente senza interfaccia grafica.
- graphical.target (runlevel 5): avvio con interfaccia grafica completa.
- rescue.target (runlevel 1): modalità di emergenza, simile a single‑user mode.
Il comando systemctl isolate graphical.target consente di passare da un target all’altro a runtime, utile per testare rapidamente configurazioni o per intervenire in caso di problemi. Una volta raggiunto il target finale, Systemd avvia il demone getty, che gestisce i terminali di login testuali, oppure il display manager (ad es. gdm, lightdm) per l’interfaccia grafica.
“Systemd è stato progettato per fornire un avvio più veloce e una gestione più coerente dei servizi rispetto al tradizionale SysVinit.” (Linux Documentation Project, 2023)
Grazie alla capacità di avviare le unit in parallelo, Systemd riduce il valore di T_{userspace} nella formula di boot. Questo vantaggio è particolarmente evidente nei test di maturità, dove la rapidità di avvio può influenzare il tempo a disposizione per le attività successive.
Gestione di errori comuni: il caso del Kernel Panic e la ricostruzione di initramfs
Uno dei sintomi più frequenti durante il boot è il Kernel Panic con il messaggio “VFS unable to mount root fs”. Questo indica che il kernel non è riuscito a montare il filesystem di root, spesso a causa di un initramfs mancante o corrotto, oppure di un errore nell’UUID specificato in /etc/fstab. Il problema è particolarmente critico durante l’esame pratico di sistemi e reti, poiché impedisce l’accesso al sistema.
Il kernel non trova il filesystem root, causando Kernel Panic e l’interruzione del processo di boot. Per risolvere la situazione è necessario intervenire da un ambiente di ripristino, come una LiveCD o una chiavetta USB avviabile.
Durante il colloquio orale è consigliabile descrivere brevemente ciascuna fase dell’intervento, evidenziando l’importanza di controllare gli UUID e di rigenerare l’initramfs. Una risposta chiara e strutturata può fare la differenza nella valutazione finale.
Una buona pratica per mantenere l’initramfs sempre aggiornato consiste nell’eseguire update-initramfs -u (o dracut -f) subito dopo ogni aggiornamento del kernel. In questo modo si evitano incongruenze tra il kernel e i moduli caricati, riducendo il rischio di Kernel Panic durante il boot.
Strategie di ottimizzazione del boot per la maturità 2026
Ridurre i tempi di boot è un obiettivo ricorrente sia in ambito professionale che durante le prove pratiche dell’esame di Stato. Systemd offre diversi meccanismi per velocizzare l’avvio: l’attivazione parallela delle unità, il lazy loading dei driver e la possibilità di disabilitare servizi non essenziali. Inoltre, la configurazione di GRUB2 può influire sul tempo di avvio, ad esempio riducendo il timeout del menu o eliminando voci non necessarie.
Il tempo totale di boot può essere modellato come la somma dei tempi di ciascuna fase:
$$T_{boot} = T_{firmware} + T_{GRUB2} + T_{kernel} + T_{userspace}$$Dove T_{firmware} è il tempo impiegato dal firmware per eseguire il POST, T_{GRUB2} il tempo di caricamento del bootloader, T_{kernel} il tempo di decompressione e montaggio di initramfs, e T_{userspace} il tempo necessario a Systemd per attivare tutti i target richiesti. Ottimizzando ciascuna di queste componenti, è possibile ridurre T_{boot} di diversi secondi, un vantaggio evidente durante le prove pratiche di sistemi e reti maturità.
Tra le pratiche più efficaci per la maturità 2026 troviamo:
- Disabilitare servizi di rete non necessari con
systemctl disable nome_servizio. - Rimuovere voci superflue dal file /boot/grub2/grub.cfg o impostare
GRUB_TIMEOUT=0per eliminare il menu di selezione. - Utilizzare un initramfs minimale, generato con
dracut --no-early-mountoupdate-initramfs -u -k allcon opzioni di riduzione. - Verificare la presenza di driver di storage duplicati e consolidare le configurazioni di LVM o RAID (senza introdurre nuove informazioni, ma rimandando al concetto di moduli kernel necessari).
Per valutare l’impatto delle ottimizzazioni, è possibile confrontare i valori di T_{firmware}, T_{GRUB2}, T_{kernel} e T_{userspace} prima e dopo le modifiche. Un miglioramento significativo in T_{userspace} è spesso indice di una configurazione Systemd più efficiente, grazie alla riduzione delle dipendenze sequenziali.

Conclusione
Conoscere a fondo ogni anello della catena – dal firmware al kernel, passando per GRUB2 e Systemd – ti permette di affrontare con sicurezza le prove pratiche della maturità 2026. Rivedi gli appunti maturità, esercitati con gli scenari di Kernel Panic e sperimenta le ottimizzazioni suggerite: solo così potrai trasformare la teoria in performance concreta durante l’esame di Stato e il colloquio orale. Buono studio e in bocca al lupo per il tuo percorso di sistemi e reti maturità!