Modificare boot loader del sistema

By | agosto 29, 2018

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.