Nota: questo è un obiettivo d’esame RHCSA 7.
Presentazione di GRUB2
GRUB2 è il nuovo bootloader Linux. GRUB2 è l’acronimo di GRand Unified Bootloader version 2.
Dato che GRUB non è stato mantenuto per un po ‘di tempo e non aveva alcune funzionalità critiche come la gestione GPT necessaria per gestire dischi di dimensioni superiori a 2,4TB, è stato deciso di iniziare una nuova versione da zero con in mente la modularità.
GRUB2 offre le seguenti nuove funzionalità:
possibilità di avviarsi su vari file system (xfs, ext4, ntfs, hfs +, raid, ecc.),
decomprimere file gzip al volo,
gestire tutte le geometrie del disco,
supporto per GPT (GUID Partition Tables) e MBR (Master Boot Record),
portabilità con diverse architetture (BIOS, EFI, Coreboot, ecc.),
possibilità di caricare moduli al momento dell’esecuzione.
Processo di avvio di Linux
Organizzazione GRUB2
La configurazione di GRUB2 è distribuita su diversi file:
/boot/grub2/grub.cfg: questo file contiene la configurazione finale di GRUB2 (non modificarla direttamente!),
/etc/grub2.cfg: questo è un collegamento simbolico al file /boot/grub2/grub.cfg,
/etc/default/grub: questo file contiene l’elenco delle variabili GRUB2 (i valori delle variabili d’ambiente possono essere modificati),
/etc/sysconfig/grub: questo è un collegamento simbolico al file /etc/default/grub,
/etc/grub.d: questa directory contiene tutti i singoli file utilizzati internamente da GRUB2.
Questo tutorial esplorerà solo le conoscenze richieste per l’esame RHCSA.
Fare riferimento alla sezione Risorse aggiuntive per ulteriori dettagli.
Gestione di base
Per ottenere i dettagli sul kernel attivo corrente, digitare:
# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-229.11.1.el7.x86_64) 7 (Core)
Nota: questa informazione è memorizzata nel file /boot/grub2/grubenv.
Per ottenere l’elenco dei kernel visualizzati all’avvio, digitare:
# grep ^menuentry /boot/grub2/grub.cfg
menuentry 'CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)' ...
menuentry 'CentOS Linux (3.10.0-229.14.1.el7.x86_64) 7 (Core)' ...
menuentry 'CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127' ...caf
Per definire in modo definitivo il kernel da eseguire al momento dell’avvio (qui 0 per la prima voce), digitare:
# grub2-set-default 0
Per visualizzare le variabili GRUB2, digitare:
# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"
Dove
GRUB_TIMEOUT definisce il ritardo di attesa all’avvio (qui 5 secondi),
GRUB_DISTRIBUTOR contiene il nome della distribuzione (qui CentOS Linux),
GRUB_DEFAULT specifica la voce di menu predefinita; può essere un numero, un nome di voce o una stringa saved che significa la voce salvata durante l’ultimo riavvio o l’esecuzione del comando grub2-set-default,
GRUB_DISABLE_SUBMENU consente (false) o meno (true) la visualizzazione di un sottomenu (vedi sotto),
GRUB_TERMINAL definisce il terminale di input e output device (qui console e seriale),
GRUB_SERIAL_COMMAND configura la porta seriale,
GRUB_CMDLINE_LINUX specifica gli argomenti della riga di comando aggiunti alle voci di menu per il kernel Linux,
GRUB_DISABLE_RECOVERY definisce se tutte le voci possono essere selezionate in modalità di ripristino tramite una riga separata (false) o solo la voce predefinita (true).
Se si desidera modificare il contenuto di qualsiasi variabile nel file precedente, è necessario digitare:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Nota: questo è il comando principale da memorizzare per l’esame. Puoi anche sostituire /boot/grub2/grub.cfg con /etc/grub2.cfg
Per capire meglio alcune variabili d’ambiente, ecco la visualizzazione standard con GRUB_DISABLE_RECOVERY=”true” e GRUB_DISABLE_SUBMENU=true:
CentOS Linux 7 (Core), with Linux 3.10.0-229.20.1.el7.x86_64
CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64
CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127>
Use the ^ and v keys to change the selection.
Press 'e' to edit the selected item, or 'c' for a command prompt.
Se GRUB_DISABLE_RECOVERY è impostato su “false”, ecco il nuovo display:
CentOS Linux 7 (Core), with Linux 3.10.0-229.20.1.el7.x86_64
CentOS Linux 7 (Core), with Linux 3.10.0-229.20.1.el7.x86_64 (recovery m>
CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64
CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64 (recovery m>
CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127>
CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127>
Use the ^ and v keys to change the selection.
Press 'e' to edit the selected item, or 'c' for a command prompt.
Ogni linea del kernel ottiene una linea associata in modalità di ripristino.
Se GRUB_DISABLE_RECOVERY è ora impostato su “true” (come nel display standard iniziale) e GRUB_DISABLE_SUBMENU è impostato su false, ecco il nuovo display:
CentOS Linux 7 (Core)
Advanced options for CentOS Linux 7 (Core)
Use the ^ and v keys to change the selection.
Press 'e' to edit the selected item, or 'c' for a command prompt.
Se viene selezionata la prima voce (“CentOS Linux 7 (Core)”), il sistema si avvia. Se viene selezionata la seconda opzione, il menu standard viene visualizzato con una riga aggiuntiva in basso per tornare al primo menu con il tasto Esc:
CentOS Linux 7 (Core), with Linux 3.10.0-229.20.1.el7.x86_64
CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64
CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127>
Use the ^ and v keys to change the selection.
Press 'e' to edit the selected item, or 'c' for a command prompt.
Press Escape to return to the previous menu.
Risorse addizionali
Per esplorare meglio GRUB2, puoi:
leggi l’articolo di Brendan Swigart,
esplorare il manuale di configurazione di GRUB2,
leggi questo articolo che descrive il processo di avvio di RHEL 7.