In questa post vedremo il processo boot Linux, tutti i passaggi eseguiti dal sistema operativo Linux dal momento in cui viene acceso al momento in cui accedi. Si prega di notare che questa guida prende in considerazione solo il bootloader GRUB2 e systemd init in quanto sono attualmente in uso dalla stragrande maggioranza delle moderne distribuzioni Linux .
Il processo di avvio prevede i seguenti 4 passaggi che discuteremo in modo più dettagliato:
- Controllo di integrità del BIOS ( POST )
- Caricamento del Bootloader ( GRUB2 )
- Inizializzazione del kernel
- Avviando systemd , il genitore di tutti i processi
Sommario
Processo boot Linux: controllo di integrità del BIOS (POST)
Il processo di avvio è solitamente inizializzato quando un utente preme il di accensione pulsante – se il PC era già spento – o riavvia il sistema utilizzando la GUI o sulla linea di comando.
Quando il sistema Linux si accende, il BIOS ( Basic Input Output System ) si attiva ed esegue un Power On Self Test ( POST ). Questo è un controllo di integrità che esegue una pletora di controlli diagnostici.
Il POST verifica l’operatività dell’hardware di componenti come l’ HDD o l’ SSD , la tastiera , la RAM , le porte USB e qualsiasi altro componente hardware. Se qualche dispositivo hardware non viene rilevato, o se c’è un malfunzionamento in uno dei dispositivi come un HDD o SSD corrotto, viene visualizzato un messaggio di errore sullo schermo 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.
Il bootloader (GRUB2)
Una volta che il POST è completo, il BIOS sonda l’ MBR ( Master Boot Record ) per il bootloader e le informazioni sul partizionamento del disco.
L’ MBR è un codice a 512 byte che si trova nel primo settore del disco rigido che di solito è /dev/sda
o /dev/hda
dipende dall’architettura del disco rigido. Si noti, 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 è l’ultimo e principale bootloader nelle moderne distribuzioni Linux e informa la nostra decisione di lasciare fuori 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 di grub2 ti consente di selezionare la versione del kernel Linux che desideri utilizzare. Se hai aggiornato il tuo sistema un paio di volte, potresti vedere diverse versioni del kernel elencate. Inoltre, ti dà la possibilità di modificare alcuni parametri del kernel premendo una combinazione di tasti della tastiera.
Inoltre, in una configurazione a dual boot in cui sono presenti più installazioni 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.
Inizializzazione del kernel
Il kernel è il cuore 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 autoestrarsi 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 indicato come init .
Nel processo boot Linux Init è sempre il primo programma ad essere eseguito e gli viene assegnato l’ID di processo o PID di 1. È il processo di 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 di root temporaneo fino a quando non viene montato il vero filesystem di root. Tutti i kernel si trovano nella /boot
directory insieme all’immagine del disco RAM iniziale.
Avvio del Systemd
Il kernel infine carica Systemd , che è la sostituzione del vecchio SysV init. 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 il sistema Linux dovrebbe avviarsi.
- Per una workstation desktop (con una GUI) il valore target predefinito è 5 che è l’equivalente del livello di esecuzione 5 per il vecchio init SystemV.
- Per un server, la destinazione predefinita è multi-user.target che corrisponde al livello di esecuzione 3 in SysV init.
Ecco una ripartizione degli obiettivi systemd:
- poweroff.target (runlevel 0) : Spegni o spegni il sistema.
- rescue.target (runlevel 1) : lancia una sessione di shell di salvataggio.
- multi-user.target (runlevel 2,3,4) : Configura il sistema in un sistema multiutente non grafico (console).
- graphic.target (runlevel 5) : imposta il sistema per utilizzare un’interfaccia grafica multiutente con servizi di rete.
- reboot.target (runlevel 6) : riavvia il sistema.
Per controllare il target 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 obiettivi.
Il processo boot Linux termina quando systemd carica tutti i demoni e imposta il valore di destinazione o di livello di esecuzione. È a questo punto che ti vengono richiesti il nome utente e la password con cui accedi al tuo sistema Linux.
Conclusione
Abbiamo visto il processo boot linux e tutti i passaggi che vengono eseguiti quando viene avviato il sistema operativo Linux.
Se hai dubbi sul processo boot linux e hai bisogno di maggiori informazioni scrivimi nei commenti.