Ricerca nel sito web

Una guida di base alle diverse fasi del processo di avvio di Linux


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

In questa guida, metteremo in evidenza i vari passaggi eseguiti dal sistema operativo Linux dal momento in cui viene acceso al momento in cui accedi. Tieni presente che questa guida prende in considerazione solo il bootloader GRUB2 e systemd init poiché sono attualmente utilizzati dalla stragrande maggioranza delle moderne distribuzioni Linux.

Il processo di avvio prevede i seguenti 4 passaggi di cui parleremo in maggior dettaglio:

  • Controllo dell'integrità del BIOS (POST)
  • Caricamento del bootloader (GRUB2)
  • Inizializzazione del kernel
  • A partire da systemd, il genitore di tutti i processi

1. Il controllo di integrità del BIOS (POST)

Il processo di avvio viene solitamente inizializzato quando un utente preme il pulsante di accensione (se il PC era già spento) o riavvia il sistema utilizzando la GUI o la riga di comando.

Quando il sistema Linux si accende, il BIOS (Basic Input Output System) si attiva ed esegue un Power On Self Test (POST ). Si tratta di un controllo di integrità che esegue numerosi controlli diagnostici.

Il POST verifica l'operabilità hardware di componenti come HDD o SSD, tastiera, RAM<, porte USB e qualsiasi altro componente hardware. Se qualche dispositivo hardware non viene rilevato o se si verifica un malfunzionamento in uno qualsiasi dei dispositivi come un HDD o SSD corrotto, sullo schermo viene visualizzato un messaggio di errore che richiede l'intervento.

In alcuni casi verrà emesso un segnale acustico, soprattutto in caso di modulo RAM mancante. Tuttavia, se l'hardware previsto è presente e funziona come previsto, il processo di avvio procede alla fase successiva.

2. Il bootloader (GRUB2)

Una volta che il POST è completo e la strada è libera, il BIOS analizza l'MBR (Master Boot Record) per il bootloader e le informazioni sul partizionamento del disco.

L'MBR è un codice di 512 byte che si trova nel primo settore del disco rigido che solitamente è /dev/sda o /dev/hda a seconda dell'architettura del disco rigido. Tieni presente, tuttavia, che a volte l'MBR può trovarsi su un'installazione Live USB o DVD di Linux.

Esistono 3 tipi principali di bootloader in Linux: LILO, GRUB e GRUB2. Il bootloader GRUB2 è il bootloader più recente e principale nelle moderne distribuzioni Linux e spiega la nostra decisione di tralasciare gli altri due che sono diventati antiquati con il passare del tempo.

GRUB2 sta per GRand Unified Bootloader versione 2. Una volta che il BIOS individua il bootloader grub2, lo esegue e lo carica nella memoria principale (RAM).

Il menu grub2 ti consente di fare un paio di cose. Ti consente di selezionare la versione del kernel Linux che desideri utilizzare. Se hai aggiornato il tuo sistema un paio di volte, potresti vedere elencate diverse versioni del kernel. Inoltre, ti dà la possibilità di modificare alcuni parametri del kernel premendo una combinazione di tasti della tastiera.

Inoltre, in una configurazione dual-boot in cui sono presenti più installazioni di sistemi operativi, il menu di grub consente di selezionare in quale sistema operativo eseguire l'avvio. 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. Interfaccia l'hardware del PC con i processi sottostanti. Il kernel controlla tutti i processi sul tuo sistema Linux. Una volta che il kernel Linux selezionato viene caricato dal bootloader, deve autoestrarre dalla sua versione compressa prima di intraprendere qualsiasi attività. Dopo l'autoestrazione, il kernel selezionato monta il file system root e inizializza il programma /sbin/init comunemente chiamato init.

Init è sempre il primo programma ad essere eseguito e gli viene assegnato l'ID processo o PID pari a 1. È il processo init che genera vari demoni e monta tutte le partizioni specificate in /etc/ fstab.

Il kernel poi monta il disco RAM iniziale (initrd) che è un filesystem root temporaneo finché non viene montato il vero filesystem root. Tutti i kernel si trovano nella directory /boot insieme all'immagine iniziale del disco RAM.

4.Avvio di Systemd

Il kernel carica infine Systemd, che sostituisce il vecchio init SysV. Systemd è la madre di tutti i processi Linux e gestisce tra le altre cose il montaggio dei file system, l'avvio e l'arresto dei servizi, per citarne solo alcuni.

Systemd utilizza il file /etc/systemd/system/default.target per determinare lo stato o la destinazione in cui deve avviarsi il sistema Linux.

  • Per una workstation desktop (con una GUI) il valore di destinazione predefinito è 5 che è l'equivalente del livello di esecuzione 5 per il vecchio SystemV init.
  • Per un server, il target predefinito è multi-user.target che corrisponde al livello di esecuzione 3 in SysV init.

Ecco una ripartizione degli obiettivi di systemd:

  • poweroff.target (runlevel 0): spegne o spegne il sistema.
  • rescue.target (runlevel 1): avvia una sessione di Rescue Shell.
  • multi-user.target (runlevel 2,3,4): configura il sistema su un sistema multiutente non grafico (console).
  • graphic.target (runlevel 5): imposta il sistema per utilizzare un'interfaccia grafica multiutente con i servizi di rete.
  • reboot.target (runlevel 6): riavvia il sistema.

Per verificare la destinazione corrente sul tuo sistema, esegui il comando:

systemctl get-default

Puoi passare da una destinazione all'altra 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 sistema e init 0 spegne il sistema. Assicurati di invocare il comando sudo quando vuoi passare a questi due target.

Il processo di avvio termina una volta che systemd carica tutti i demoni e imposta il valore di destinazione o del livello di esecuzione. È a questo punto che ti vengono richiesti il nome utente e la password con cui potrai accedere al tuo sistema Linux.