Ogni volta che accendi il tuo PC Linux, passa attraverso una serie di fasi prima di mostrare finalmente la schermata di accesso che richiede il tuo nome utente o la password. Ci sono 4 fasi distinte che ogni distribuzione Linux attraversa in un normale processo di avvio.

In questo guida, sottolineeremo i vari passaggi compiuti dall’OS Linux dalla volta in cui viene acceso fino a quando ti registri. Notare che questa guida considera solamente il caricatore di avvio GRUB2 e l’init systemd, poiché sono attualmente in uso da una vasta maggioranza delle distribuzioni Linux moderne.
Il processo di avvio comprende i seguenti 4 step, che discuteremo in dettaglio:
- BIOS Check di integrità (POST)
- Caricamento del caricatore di avvio (GRUB2)
- Inizializzazione del nucleo
- Avvio di systemd, il genitore di tutti i processi
1. Il Check di integrità BIOS (POST)
Il processo di avvio è di solito iniziato quando l’utente preme il pulsante accendi – se il PC era già spento – o riavvia il sistema usando sia la GUI che in linea di comando.
Quando il sistema Linux viene acceso, il BIOS (Basic Input Output System) entra in funzione e esegue una Power On Self Test (POST). Questo è un check di integrità che compie una varietà di test di diagnostica.
Il POST verifica la funzionalità hardware dei componenti come l’HDD o l’SSD, la Tastiera, la RAM, le porte USB e qualsiasi altro dispositivo hardware. Se un dispositivo hardware non viene rilevato o se c’è un malfunzionamento di uno dei dispositivi come un HDD o SSD corrotto, compare un messaggio di errore sullo schermo che richiede la tua intervenzione.
In alcuni casi, potrebbe essere emesso un segnale acustico, specialmente in caso di mancanza di un modulo RAM. Tuttavia, se l’hardware previsto è presente e funziona correttamente, il processo di avvio procede alla fase successiva.
2. Il Bootloader (GRUB2)
Una volta completato il POST e tutto è a posto, il BIOS verifica l’MBR (Master Boot Record) per il bootloader e le informazioni sulla suddivisione del disco.
L’MBR è un codice di 512 byte che si trova sul primo settore dell’hard disk, che di solito è /dev/sda
o /dev/hda
a seconda dell’architettura del tuo hard disk. Tuttavia, nota che a volte l’MBR può trovarsi su una Live USB o su un’installazione di Linux da DVD.
Ci sono 3 tipi principali di bootloader in Linux: LILO, GRUB e GRUB2. Il bootloader GRUB2 è il più recente e principale bootloader nelle distribuzioni Linux moderne e la nostra scelta di escludere gli altri due che sono diventati obsoleti nel corso del tempo.
GRUB2 sta per GRand Unified Bootloader versione 2. Una volta che il BIOS individua il caricatore di avvio di grub2, lo esegue e lo carica nella memoria principale (RAM).
Il menu di grub2 consente di fare alcune cose. Consente di selezionare la versione del kernel Linux che si desidera utilizzare. Se si è eseguito l’aggiornamento del sistema diverse volte, è possibile visualizzare diverse versioni del kernel elencate. Inoltre, consente di modificare alcuni parametri del kernel premendo una combinazione di tasti sulla tastiera.

Inoltre, in una configurazione dual-boot in cui sono presenti installazioni multiple del sistema operativo, il menu di grub consente di selezionare quale sistema operativo avviare. Il file di configurazione di grub2 è il file /boot/grub2/grub2.cfg. L’obiettivo principale di GRUB è caricare il kernel Linux nella memoria principale.
3. Inizializzazione del kernel
Il kernel è il nucleo di qualsiasi sistema Linux. Interagisce con l’hardware del PC attraverso i processi sottostanti. Il kernel controlla tutti i processi sul sistema Linux. Una volta che il kernel Linux selezionato viene caricato dal caricatore di avvio, deve estrarre se stesso dalla sua versione compressa prima di svolgere qualsiasi attività. Dopo l’estrazione, il kernel selezionato monta il file system radice e inizializza il programma /sbin/init comunemente chiamato init.

Init è sempre il primo programma ad essere eseguito e viene assegnato l’ID processo o PID 1. È il processo init che genera vari demoni e monta tutte le partizioni specificate nel file /etc/fstab.
Il kernel quindi monta il disco RAM iniziale (initrd) che è un filesystem root temporaneo fino a quando non viene montato il vero filesystem root. Tutti i kernel si trovano nella directory /boot
insieme all’immagine del disco RAM iniziale.
4. Avvio di Systemd
Infine il kernel carica Systemd, che è il sostituto del vecchio init SysV. Systemd è la madre di tutti i processi Linux e gestisce, tra le altre cose, il montaggio dei filesystem, l’avvio e lo spegnimento dei servizi, per citarne solo alcuni.
Systemd utilizza il file /etc/systemd/system/default.target per determinare lo stato o il target in cui il sistema Linux dovrebbe avviarsi.
- Per una workstation desktop (con una GUI), il valore predefinito del target è 5, che corrisponde al run level 5 per il vecchio init di SystemV.
- Per un server, il target predefinito è multi-user.target, che corrisponde al run level 3 iniziale di SysV.
Ecco una panoramica dei target di systemd:
- poweroff.target (runlevel 0): Spegni o spegni il sistema.
- rescue.target (runlevel 1): avvia una sessione di shell di soccorso.
- multi-user.target (runlevel 2,3,4): Configura il sistema come sistema multi-utente non grafico (console).
- graphical.target (runlevel 5): impostare il sistema per utilizzare una interfaccia grafica multiutente con i servizi di rete.
- reboot.target (runlevel 6): riavvia il sistema.
Per verificare il target corrente sul tuo sistema, esegui il comando:
$ systemctl get-default

Puoi passare da un target all’altro eseguendo il seguente comando sul terminale:
$ init runlevel-value
Ad esempio, init 3 configura il sistema in uno stato non grafico.
Il comando init 6 riavvia il tuo sistema e init 0 spegne il sistema. Assicurati di richiamare comando sudo quando vuoi passare a questi due target.
Il processo di avvio termina una volta che systemd ha caricato tutti i demone e impostato il valore del target o del run level. È a questo punto che ti viene richiesto il tuo nome utente e la password, dopo di che otteniamo accesso al tuo sistema Linux.