Il bootloader GRUB2 – Installazione e configurazione
GRUB2 è l’ultima versione di GNU GRUB, il GRand Unified Bootloader. Il bootloader è il primo programma software che viene eseguito all’avvio del computer. È responsabile del caricamento e del trasferimento del controllo al kernel del sistema operativo. In Fedora il kernel è Linux. Il kernel inizializza poi il resto del sistema operativo.
GRUB2 è il successore della versione precedente GRUB (versione 0.9x). La versione originale è disponibile con il nome GRUB Legacy.
Da Fedora 16, GRUB2 è il bootloader predefinito sui sistemi x86 BIOS. Anche per gli aggiornamenti di sistemi BIOS il comportamento predefinito è installare GRUB2, ma è possibile scegliere di saltare del tutto la configurazione del bootloader.
Individuare il tipo di firmware
Per scoprire quale firmware utilizza la tua macchina, esegui il seguente comando:
$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Il comando restituisce solo UEFI oppure BIOS, in base al firmware in uso sulla macchina.
Installare GRUB2 su un sistema BIOS
Normalmente GRUB2 viene installato e configurato dal programma di installazione, Anaconda, durante il processo di installazione. Probabilmente non dovrai mai occuparti dell’installazione manuale di GRUB2. Tuttavia, in alcune situazioni potresti doverlo installare manualmente, soprattutto se devi riparare un’installazione esistente di GRUB2 o se vuoi modificarne la configurazione.
Questa procedura mostra i passaggi per installare GRUB2 nel Master Boot Record (MBR) del disco rigido primario.
-
Assicurati che i pacchetti GRUB2 e il pacchetto os-prober siano installati nel sistema.
$ dnf list installed | grep grub
-
Per raccogliere automaticamente informazioni sui dischi e sui sistemi operativi installati, è necessario che il pacchetto
os-prober
sia installato nel sistema.
-
Elenca i dispositivi a blocchi disponibili sul sistema.
$ lsblk
-
Individua il disco rigido primario. Di solito è il dispositivo
sda
. -
Installa GRUB2 nel MBR del disco rigido primario.
# grub2-install /dev/sda
-
Crea un file di configurazione per GRUB2.
# grub2-mkconfig -o /boot/grub2/grub.cfg
-
Riavvia il computer per avviarlo con il nuovo bootloader.
-
Il comando
grub2-mkconfig
crea una nuova configurazione basata sul sistema attualmente in esecuzione. Raccoglie informazioni dalla partizione (o directory)/boot
, dal file/etc/default/grub
e dagli script personalizzabili in/etc/grub.d
. -
Il formato della configurazione cambia nel tempo e un nuovo file di configurazione potrebbe risultare leggermente incompatibile con versioni più vecchie del bootloader. Esegui sempre
grub2-install
prima di creare il file di configurazione congrub2-mkconfig
. -
In Fedora è generalmente sicuro modificare manualmente
/boot/grub2/grub.cfg
. Grubby in Fedora applica le patch alla configurazione quando viene eseguito un aggiornamento del kernel e cerca di non apportare altre modifiche se non quelle strettamente necessarie. Le modifiche manuali possono essere sovrascritte dagrub2-mkconfig
quando il sistema viene aggiornato con Anaconda. Le personalizzazioni inserite nei file/etc/grub.d/40_custom
o/boot/grub2/custom.cfg
sopravvivono all’esecuzione del comandogrub2-mkconfig
.
Installare GRUB2 su un sistema UEFI
Normalmente GRUB2 viene installato e configurato dal programma di installazione, Anaconda, durante il processo di installazione. Probabilmente non dovrai mai occuparti dell’installazione manuale di GRUB2. Tuttavia, in alcune situazioni potresti doverlo installare manualmente, soprattutto se devi riparare un’installazione esistente di GRUB2 o se vuoi modificarne la configurazione.
Questa procedura mostra i passaggi per installare GRUB2 su un sistema UEFI in Fedora 18 o successivi. La procedura è suddivisa in quattro parti.
Creare una partizione EFI System (ESP)
Il firmware UEFI richiede di avviarsi da una EFI System Partition su un disco con etichetta GPT. Per creare tale partizione:
-
Elenca i dispositivi a blocchi disponibili per trovare dove creare la tua ESP.
$ lsblk -f -p
-
Crea almeno una partizione da 128 MiB con etichetta GPT sul disco rigido primario.
# gdisk /dev/sda
Per questa procedura, presupponiamo che la partizione creata sia riconosciuta come
/dev/sda1
. -
Formatta la partizione con il file system FAT32.
# mkfs.vfat /dev/sda1
-
Crea la directory
/boot/efi
come punto di mount per la nuova partizione.# mkdir /boot/efi
-
Monta la partizione nel punto di mount
/boot/efi
.# mount /dev/sda1 /boot/efi
-
Procedi con la parte successiva.
Installare i file del bootloader
In order to use GRUB2 with on UEFI systems, you need to install necessary packages:
-
Re-installa i pacchetti necessari.
# dnf reinstall grub2-efi grub2-efi-modules shim-\*
-
Se il comando precedente termina con un errore, installa i pacchetti.
# dnf install grub2-efi grub2-efi-modules shim-\*
-
Ciò installa lo shim firmato e il binario GRUB2.
Creare la configurazione di GRUB2
Se hai già un file di configurazione GRUB2 EFI funzionante, non devi fare altro.
In caso contrario, crea il file di configurazione utilizzando il comando grub2-mkconfig
.
# grub2-mkconfig -o /boot/grub2/grub.cfg
-
In modalità EFI, GRUB2 cerca la sua configurazione in
/boot/efi/EFI/fedora/grub.cfg
; tuttavia lo script post-install digrub2-common
installa un piccolo shim che rimanda alla configurazione standard in/boot/grub2/grub.cfg
generata sopra. Per ripristinare questo shim ai valori predefiniti, elimina il file/boot/efi/EFI/fedora/grub.cfg
esistente e reinstallagrub2-common
.# rm -f /boot/efi/EFI/fedora/grub.cfg # dnf reinstall grub2-common
-
Per far funzionare i kernel appena installati,
grubby
si aspetta che/etc/grub2-efi.cfg
sia un link simbolico al filegrub.cfg
effettivo (ad esempio/boot/grub2/grub.cfg
).
Risolvere problemi con il bootloader UEFI
Quando accendi il sistema, il firmware cerca le variabili EFI che indicano come avviare. Nei sistemi attivi, avviati in modalità EFI e con i servizi di runtime EFI funzionanti correttamente, puoi configurare il menu di avvio con efibootmgr
.
In caso contrario, shim
può aiutarti ad avviare. Il programma EFI /boot/efi/EFI/BOOT/fallback.efi
cerca file chiamati BOOT.CSV
nella tua ESP e aggiunge le voci di avvio corrispondenti. Il comando shim
fornisce il proprio file BOOT.CSV
che aggiungerà una voce per grub2-efi
.
Durante il processo di avvio, puoi usare la EFI Shell per invocare il profilo fallback.efi
e avviare il sistema:
-
Entra nella partizione di avvio.
fs0:
-
Spostati nella directory
EFI\BOOT
.> cd EFI\BOOT
-
Invoca il profilo
fallback.efi
.> fallback.efi
-
Se non hai alcuna voce di avvio, avviare il disco in modalità UEFI dovrebbe invocare automaticamente
/boot/efi/EFI/BOOT/BOOTX64.EFI
, che a sua volta invocheràfallback.efi
. -
Se hai già voci di avvio errate, dovrai eliminarle o modificare
BOOT.CSV
per creare nuove voci con nomi diversi.
Aggiungere altri sistemi operativi al menu GRUB2
Normalmente GRUB2 è pre-impostato per avviare più sistemi operativi durante l’installazione di Fedora. Quando possibile, è consigliabile installare prima i sistemi operativi non-Linux. Durante l’installazione, tali sistemi e le loro posizioni verranno rilevati e configurati correttamente.
Per aggiungere altre voci nel menu GRUB2 basta eseguire il comando grub2-mkconfig
per rigenerare i file di configurazione. Durante questo processo, tutti i sistemi operativi rilevati verranno aggiunti alla configurazione. Re-installando GRUB2, questa configurazione verrà usata per i successivi avvii.
-
Assicurati che i sistemi operativi si trovino su dischi collegati al sistema.
-
Hai installato il pacchetto
os-prober
.
-
Ricrea il file di configurazione di GRUB2.
# grub2-mkconfig -o /boot/grub2/grub.cfg
-
Installa GRUB2.
-
Su sistemi UEFI.
# dnf reinstall shim-\* grub2-efi-\* grub2-common
-
Su sistemi BIOS, specifica il disco su cui installare il bootloader.
# grub2-install /dev/sda
-
-
Il comando
grub2-mkconfig
aggiungerà voci per tutti i sistemi operativi trovati. -
Quando si verificano problemi, consulta il manuale GRUB per risolvere le difficoltà nell’avvio di sistemi operativi secondari.
Impostare la voce predefinita per GRUB2
Poiché grub2-mkconfig
(e os-prober) non possono stabilire quale dei sistemi trovati debba essere contrassegnato come predefinito, non è possibile prevedere l’ordine delle voci in /boot/grub2/grub.cfg
. Per modificare l’impostazione predefinita, è necessario impostarla in base al name
o al title
.
-
Apri
/etc/default/grub
e assicurati che contenga queste righe.GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=false
-
Se hai modificato il contenuto di
/etc/default/grub
, applica le modifiche agrub.cfg
.# grub2-mkconfig -o /boot/grub2/grub.cfg
-
Elenca tutte le possibili voci di menu.
# grep -P "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
-
Seleziona una delle opzioni mostrate e usala come argomento per impostare la voce di menu predefinita.
# grub2-set-default <menuentry>
-
Verifica la voce di menu predefinita
# grub2-editenv - list
-
Rigenera il file di configurazione di GRUB2 e reinstalla il bootloader nel MBR, come descritto in Aggiungere altri sistemi operativi al menu GRUB2.
Se comprendi i rischi coinvolti, puoi modificare manualmente il file /boot/grub2/grub.cfg
. In tal caso, imposta il numero del sistema operativo predefinito utilizzando la variabile set default
.
Ad esempio:
set default="5"
Se modifichi il file di configurazione manualmente, le impostazioni verranno sovrascritte ogni volta che viene eseguito il comando |
Ripristinare il bootloader usando il disco Live
A volte, specialmente dopo l’installazione di un sistema operativo secondario, il Master Boot Record si danneggia e impedisce l’avvio del sistema Linux originale.
Se ciò accade, è necessario reinstallare GRUB2 per ricreare le impostazioni originali. Il processo non solo rileva tutti i sistemi operativi installati, ma di solito li aggiunge alla configurazione di GRUB2, così che tutti possano essere avviati da GRUB2.
-
Ottieni l’ISO Fedora Live da fedoraproject.org.
-
Prepara un dispositivo avviabile usando l’ISO scaricata, sia esso un CD o una chiavetta USB.
-
Avvia il sistema Fedora Live dal dispositivo avviabile creato.
-
Apri il terminale.
-
Esamina il layout delle partizioni e identifica la partizione
/boot
e la partizione/root
.# lsblk -f -p
-
Se la tua partizione
/root
è cifrata con LUKS, devi decifrarla.-
Assicurati che il modulo crypt sia caricato.
# modprobe dm-crypt
-
Decifra la partizione
/root
(es./dev/sda3
).# cryptsetup luksOpen /dev/sda3 myvolume
Il dispositivo decifrato (ad es.
myvolume
) sarà accessibile in/dev/mapper
.
-
-
Segui i passaggi BTRFS (usati di default da Fedora 33 o più recenti).
-
Monta la partizione
/root
.-
Per LUKS.
# mount /dev/mapper/myvolume /mnt -o subvol=root
-
Per non-LUKS.
# mount /dev/sda3 /mnt -o subvol=root
-
-
-
Segui i passaggi LVM (usati di default prima di Fedora 33).
-
Scansiona i volumi LVM per il gruppo di volumi corrispondente alla partizione
/root
.# vgscan
-
Attiva il gruppo di volumi (es.
fedora
).# vgchange -ay fedora
-
Trova il volume logico corrispondente a
/root
.# lvs
Il volume logico sarà accessibile in
/dev/mapper
. -
Monta il volume logico (es.
/dev/mapper/fedora-root
) corrispondente alla partizione/root
.# mount /dev/mapper/fedora-root /mnt
-
-
Monta la partizione
/boot
(es./dev/sda2
).# mount /dev/sda2 /mnt/boot
-
Monta i processi e i dispositivi di sistema nel filesystem
/root
.# mount -o bind /dev /mnt/dev # mount -o bind /proc /mnt/proc # mount -o bind /sys /mnt/sys # mount -o bind /run /mnt/run
-
Su sistemi UEFI, collega la directory
efivars
e monta la partizione EFI System (es./dev/sda1
).# mount -o bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars # mount /dev/sda1 /mnt/boot/efi
-
Cambia il tuo filesystem in quello montato sotto
/mnt
.# chroot /mnt
-
Reinstalla GRUB2.
-
Su sistemi UEFI sono richiesti diversi pacchetti.
# dnf reinstall shim-\* grub2-efi-\* grub2-common
-
Su sistemi BIOS, specifica il disco (es.
/dev/sda
) su cui installare GRUB2.# grub2-install /dev/sda
-
-
Rigenera il file di configurazione di GRUB2.
# grub2-mkconfig -o /boot/grub2/grub.cfg
-
Sincronizza ed esci dal chroot.
# sync && exit
-
Riavvia il sistema.
Usare la schermata di avvio di GRUB2
Se configurato impropriamente, GRUB2 potrebbe non caricarsi e mostrare una schermata di avvio (boot prompt). Per avviare il sistema, segui i passaggi qui sotto.
-
Carica i moduli necessari per leggere le partizioni del sistema (dovrai anche caricare
part_msdos
opart_gpt
, in base alla tua tabella delle partizioni).-
Per filesystem BTRFS (Fedora 33 o più recente).
grub> insmod btrfs
-
Per filesystem LVM (versioni precedenti a Fedora 33).
grub> insmod xfs grub> insmod lvm
-
-
Elenca i dischi rilevati da GRUB2.
grub> ls
-
Esamina l’output per comprendere la tabella delle partizioni del dispositivo
/dev/sda
. L’esempio seguente mostra una tabella DOS con tre partizioni.(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)
Una tabella GPT del dispositivo
/dev/sda
con quattro partizioni potrebbe essere così.(hd0) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
-
Ispeziona ogni partizione del disco e localizza i file
vmlinuz
einitramfs
.grub> ls (hd0,1)/
L’output del comando precedente elencherà i file in
/dev/sda1
. La partizione che contiene la directory/boot
è quella corretta; lì cercherai i nomi completi dei filevmlinuz
einitramfs
. -
Segui Pre-boot setup per BTRFS o Pre-boot setup per LVM per recuperare il sistema.
-
Dopo il pre-boot setup, avvia il sistema.
grub> boot
-
Per ripristinare la funzionalità del bootloader, rigenera il file di configurazione di GRUB2 e reinstalla il bootloader, come descritto in Aggiungere altri sistemi operativi al menu GRUB2.
Pre-boot setup per filesystem BTRFS
-
Su sistemi BIOS.
-
Imposta la root di GRUB2 sulla tua partizione
/boot
. Se la tua partizione/boot
è(hd0,msdos1)
, il comando sarà.grub> set root=(hd0,msdos1)
-
Successivamente, seleziona il kernel desiderato. Imposta la partizione
/root
(es./dev/sda2
).grub> linux /vmlinuz-5.14.10-300.fc35.x86_64 root=/dev/sda2 ro rootflags=subvol=root
-
-
Su sistemi UEFI.
-
Imposta la root di GRUB2 sulla tua partizione EFI System. Se la tua partizione EFI è
(hd0,gpt1)
, usa questo comando.grub> set root=(hd0,gpt1)
-
Successivamente, seleziona il kernel desiderato. Trova il percorso di
vmlinuz
e imposta la partizione/root
(es./dev/sda3
).grub> linux (hd0,gpt2)/vmlinuz-5.14.10-300.fc35.x86_64 root=/dev/sda3 ro rootflags=subvol=root
-
Seleziona il filesystem RAM che verrà caricato.
grub> initrd (hd0,gpt2)/initramfs-5.14.10-300.fc35.x86_64.img
-
Pre-boot setup per filesystem LVM
-
Su sistemi BIOS.
-
Imposta la root di GRUB2 sulla tua partizione
/boot
. Se la tua partizione/boot
è(hd0,msdos1)
, usa questo comando.grub> set root=(hd0,msdos1)
-
Successivamente, seleziona il kernel desiderato. Imposta
root
sul volume logico corrispondente alla directory/root
.grub> linux /vmlinuz-3.0.0-1.fc16.i686 root=/dev/mapper/fedora-root
-
Seleziona il filesystem RAM che verrà caricato.
grub> initrd /initramfs-3.0.0-1.fc16.i686.img
-
-
Su sistemi UEFI.
-
Imposta la root di GRUB2 sulla tua partizione EFI System. Se la tua partizione EFI è
(hd0,gpt1)
, usa questo comando.set root=(hd0,gpt1)
-
Successivamente, seleziona il kernel desiderato. Trova il percorso di
vmlinuz
e impostaroot
sul volume logico corrispondente alla directory/root
.linux (hd0,gpt2)/vmlinuz-3.0.0-1.fc16.i686 root=/dev/mapper/fedora-root
-
Seleziona il filesystem RAM che verrà caricato.
initrd (hd0,gpt2)/initramfs-3.0.0-1.fc16.i686.img
-
Avviare il sistema usando un file di configurazione su un’altra partizione
Se ti trovi nella schermata di avvio di GRUB2, è possibile avviare il sistema usando un configfile situato su un’altra partizione, come spesso accade nei sistemi multi-boot con Ubuntu e Fedora. Segui la procedura qui sotto se devi avviare il sistema da un file di configurazione su un’altra partizione.
-
Carica i moduli necessari per leggere le partizioni del sistema (dovrai anche caricare
part_msdos
opart_gpt
, in base alla tua tabella delle partizioni).-
Per filesystem BTRFS.
grub> insmod btrfs
-
Per filesystem LVM.
grub> insmod xfs grub> insmod lvm
-
-
Imposta la root di GRUB2 sulla tua partizione
/boot
. Su sistemi UEFI dovresti impostare la root di GRUB2 sulla partizione EFI System.grub> set root=(hd0,msdos1)
-
Imposta il percorso del file di configurazione.
grub> configfile /grub2/grub.cfg
-
La riga hd0,msdos1 mostra la partizione
/boot
pertinente, che contiene il filegrub.cfg
. L’impostazione potrebbe essere diversa sul tuo sistema. Vedi anche Usare la schermata di avvio di GRUB2 per ulteriori informazioni.
Impostare una password per la modalità di modifica interattiva
Se desideri proteggere la modalità di modifica interattiva di GRUB2 con una password, ma consentire agli utenti normali di avviare il computer, usa il comando grub2-set-password
. Ti verrà chiesta la password e dovrai confermarla. La password cifrata verrà salvata in /boot/grub2/user.cfg.
Per rimuovere la protezione tramite password, elimina semplicemente il file user.cfg.
In alternativa, puoi configurarlo manualmente:
-
Crea il file
/etc/grub.d/01_users
e inserisci le seguenti righe.cat << EOF set superusers="root" export superusers password root <password> EOF
-
Rigenera il file di configurazione di GRUB2, come descritto in Aggiungere altri sistemi operativi al menu GRUB2.
Puoi cifrare la password usando pbkdf2. Usa grub2-mkpasswd-pbkdf2
per cifrarla, quindi sostituisci la riga della password con:
password_pbkdf2 root grub.pbkdf2.sha512.10000.1B4BD9B60DE889A4C50AA9458C4044CBE129C9607B6231783F7E4E7191D8254C0732F4255178E2677BBE27D03186E44815EEFBAD82737D81C87F5D24313DDDE7.E9AEB53A46A16F30735E2558100D8340049A719474AEEE7E3F44C9C5201E2CA82221DCF2A12C39112A701292BF4AA071EB13E5EC8C8C84CC4B1A83304EA10F74
Per rimuovere la protezione tramite password, elimina semplicemente le modifiche apportate al file /etc/grub.d/01_users
e rigenera il file di configurazione di GRUB2, come fatto in precedenza.
Ulteriori dettagli sono disponibili su Ubuntu Help: GRUB2 Passwords.
A partire da Fedora 15, l’opzione kickstart |
Gestire l’errore "Absent Floppy Disk" (Disco floppy assente)
Alcuni utenti hanno segnalato che GRUB2 potrebbe non riuscire a installarsi nel settore di avvio di una partizione se il controller floppy del computer è attivato nel BIOS senza che sia presente un’unità disco floppy. Tali situazioni causano l’errore Absent Floppy Disk.
Per aggirare il problema, entra in modalità di ripristino e segui la procedura in Installare GRUB2 su un sistema BIOS, ma usa l’opzione --no-floppy
con il comando grub2-install
.
# grub2-install <dispositivo-target> --no-floppy
Usare modalità grafiche legacy nel bootloader
Il dispositivo terminale viene scelto con GRUB_TERMINAL. Per maggiori informazioni, consulta il manuale Grub.
I nomi di output terminale validi dipendono dalla piattaforma, ma possono includere console
(console PC BIOS e EFI), serial
(terminale seriale), gfxterm
(output in modalità grafica), ofconsole
(console Open Firmware) o vga_text
(output testuale VGA, utile principalmente con Coreboot).
L’impostazione predefinita è usare l’output terminale nativo della piattaforma.
In Fedora, gfxterm
è l’opzione predefinita. Per ottenere le modalità grafiche legacy:
-
Modifica il file
/etc/default/grub
. -
Imposta la variabile
GRUB_TERMINAL
a una delle opzioni sopra citate. -
Rigenera il file di configurazione di GRUB2 e reinstalla il bootloader nel MBR, come descritto in Aggiungere altri sistemi operativi al menu GRUB2.
Abilitare la Console Seriale in GRUB2
Per abilitare la console seriale in grub:
-
Modifica il file
/etc/default/grub
. -
Regola
baudrate
,parity
,bits
eflow
in base al tuo ambiente e ai cavi, vedi l’esempio.GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8' GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
-
Rigenera il file di configurazione di GRUB2 e reinstalla il bootloader nel MBR, come descritto in Aggiungere altri sistemi operativi al menu GRUB2.
Risorse aggiuntive
Want to help? Learn how to contribute to Fedora Docs ›