GRUB2

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page GRUB and the translation is 79% complete.
Outdated translations are marked like this.

GRUB 2 (GRand Unified Bootloader version 2), a volte stilizzato come GRUB2 e comunemente indicato come GRUB, è un bootloader secondario multiboot in grado di caricare kernel da una varietà di filesystem sulla maggior parte delle architetture di sistema. GRUB supporta PC BIOS, PC EFI, IEEE 1275 (Open Firmware), SPARC e MIPS Lemote Yeeloong.

GRUB2 sostituisce il boot loader originale GRUB Legacy con una base di codice completamente separata con una nuova sintassi simile a una shell per funzionalità di scripting avanzate.

Per un approccio di configurazione rapida, vedere GRUB2 Quick Start.

Se si esegue la migrazione di un sistema da GRUB Legacy a GRUB2, vedere GRUB2 Migration.

Installazione

A causa del modo in cui GRUB Legacy (grub-0.97) e GRUB2 sono stati inseriti in Gentoo, entrambe le versioni di GRUB possono essere installate sullo stesso sistema contemporaneamente; tuttavia, è possibile installare solo una versione alla volta nel Master Boot Record (MBR) di un disco rigido.

Si consiglia a tutti i sistemi di eseguire l'aggiornamento a GRUB2, poiché supporta tutti gli stessi set di funzionalità di Legacy. Legacy è stato rimosso dal repository ebuild di Gentoo.

Prerequisiti

Per controllare per quali piattaforme verrà installato GRUB, imposta la variabile GRUB_PLATFORMS in make.conf. L'architettura amd64 include un profilo predefinito che funziona per la maggior parte dei sistemi.

FILE /etc/portage/make.confEsempio di come impostare la variabile GRUB_PLATFORMS per piattaforme EMU, EFI e PC
GRUB_PLATFORMS="emu efi-32 efi-64 pc"

Le seguenti piattaforme sono supportate a seconda della CPU:

Target
Platform i386 ia64 mips mipsel powerpc sparc64 x86_64
ARC No No No Yes No No No
Coreboot Yes No No No No No 32-bit
EFI Yes Yes No No No No Yes
EMU Yes Yes Yes Yes Yes Yes Yes
IEEE 1275 (Open Firmware) Yes No No No Yes Yes 32-bit
Loongson No No No Yes No No No
Multiboot Yes No No No No No 32-bit
QEMU Yes No No No No No 32-bit
QEMU-MIPS No No Yes No No No No
PC Yes No No No No No 32-bit
Note
Ogni volta che i valori nella variabile GRUB_PLATFORMS vengono modificati, GRUB dovrà essere reinstalato per creare il binario modificato. Assicurati di utilizzare le opzioni --newuse --deep come mostrato nella sezione Emerge di seguito.

I profili amd64 abilitano il supporto per la funzionalità (U)EFI per impostazione predefinita. Quando si utilizza un sistema basato su BIOS, impostare la variabile GRUB_PLATFORMS su pc per evitare dipendenze non necessarie.

USE flags

USE flags for sys-boot/grub GNU GRUB boot loader

device-mapper Enable support for device-mapper from sys-fs/lvm2
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
efiemu Build and install the efiemu runtimes
fonts Build and install fonts for the gfxterm module
libzfs Enable support for sys-fs/zfs
mount Build and install the grub-mount utility
nls Add Native Language Support (using gettextGNU locale utilities)
sdl Add support for Simple Direct Layer (media library)
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
themes Build and install GRUB themes (starfield)
truetype Build and install grub-mkfont conversion utility

Emerge

Per installare GRUB usare la normale sintassi di emerge:

root #emerge --ask --newuse --deep sys-boot/grub:2

Software aggiuntivi

Facoltativamente, installa l'utilità os-prober (fornita tramite il pacchetto sys-boot/os-prober) per avere il probe GRUB e generare voci di avvio per altri sistemi operativi durante l'esecuzione del comando grub-mkconfig. Nella maggior parte dei casi, ciò consentirà a GRUB di rilevare automaticamente altri sistemi operativi inclusi Windows 7, 8.1, 10, altre distribuzioni di Linux, ecc.

root #emerge --ask --newuse sys-boot/os-prober

Le installazioni di GRUB (e facoltativamente sys-boot/os-prober) non abilitano automaticamente l'operazione del boot loader. Queste installa solamente il software del boot loader nel sistema operativo. Per installare il boot loader sul sistema stesso (in modo che venga utilizzato all'avvio del sistema), è necessario eseguire ulteriori passaggi, descritti nella sezione Configurazione.

Configurazione

Ci sono due importanti aspetti della configurazione di GRUB:

  1. Installazione del software GRUB come boot loader secondario del sistema.
  2. Configurazione del boot loader di GRUB.

L'installazione del software GRUB è specifica per il tipo di sistema ed è trattata in Installazione del boot loader. Per prima cosa copriamo la configurazione del boot loader stesso.

File di configurazione principale

Lo script grub-mkconfig viene utilizzato per generare una configurazione di grub. Utilizza gli script in /etc/grub.d/* insieme al file di configurazione /etc/default/grub per generare il /boot/grub/grub.cfg finale - l'unico file di configurazione utilizzato da GRUB2 stesso.

File Formato Modifiche consigliate? Descrizione
/usr/sbin/grub-mkconfig POSIX shell script No Installato come parte del pacchetto sys-boot/grub:2. Esegui questo script per generare /boot/grub/grub.cfg dopo aver configurato i file descritti di seguito.
/boot/grub/grub.cfg GRUB2 shell script No Il file generato da grub-mkconfig. Questo file viene valutato dall'interprete di script integrato di GRUB2 e non supporta necessariamente tutti i comandi o la sintassi POSIX. Vedere la scripting reference nel manuale di GRUB per le funzionalità supportate. Tieni presente che le modifiche a questo file non verranno mantenute fino alla prossima esecuzione di grub-mkconfig.
/etc/grub.d/* POSIX shell scripts Forse Ogni script in /etc/grub.d/* che ha il suo bit di esecuzione impostato viene valutato in sequenza e lo stdout viene concatenato per formare il /boot/grub/grub.cfg finale (o qualunque file sia dato all'opzione grub-mkconfig -o). Questi script utilizzano la shell di sistema corrente e quindi possono utilizzare qualsiasi sintassi supportata. Idealmente dovrebbero essere script compatibili con POSIX e lo script di output deve essere compatibile con l'interprete GRUB2. Potrebbe essere necessario disabilitare o aggiungere script. Ad esempio, per aggiungere voci di menu che non possono essere generate automaticamente.
/boot/grub/custom.cfg GRUB2 shell script Forse Lo script /etc/grub.d/41_custom farà riferimento a questo file per essere letto all'avvio, se esiste. Questo file fornisce uno spazio per aggiungere voci o comandi aggiuntivi e non richiede la rigenerazione del file grub.cfg principale.
/etc/default/grub POSIX shell script Yes Nella maggior parte dei casi questo è l'unico file che deve essere modificato direttamente. Viene principalmente utilizzato per assegnare le variabili utilizzate dagli script in /etc/grub.d per generare un file di configurazione funzionante. Vedere variabile di configurazione GRUB o il riferimento ufficiale per le variabili supportate.

GRUB non richiede che l'amministratore mantenga manualmente una configurazione dell'opzione di avvio (come nel caso dei boot loader come GRUB Legacy e LILO). Invece può generare il suo file di configurazione (/boot/grub/grub.cfg) usando il comando grub-mkconfig. Questa utility utilizzerà gli script in /etc/grub.d/ e le impostazioni in /etc/default/grub.

Warning
L'utilità grub-mkconfig non funziona correttamente quando si usano software RAID. La configurazione manuale degli script /etc/grub.d/ è necessaria, altrimenti dopo l'installazione il sistema verrà lasciato in uno stato non avviabile.

Dopo la modifica di una o più impostazioni, esegui l'utilità grub-mkconfig con l'opzione -o che punta al file output /boot/grub/grub.cfg (questa è la destinazione predefinita di output in GRUB2):

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.3.0-gentoo
done

Ogni volta che viene chiamata l'utility grub-mkconfig, verrà generata una nuova configurazione.

Warning
Se grub-mkconfig non riporta alcuna voce trovata allora i non è stata trovata alcuna voce. In questo caso GRUB non offrirà selezioni di avvio al riavvio del sistema, il che potrebbe essere una situazione difficile e che richiede tempo da risolvere. Assicurarsi che l'output sia soddisfacente prima di riavviare il sistema.

Impostazione dei parametri di configurazione

Le seguenti variabili in /etc/default/grub sono le più comuni da impostare per controllare come funzionerà GRUB:

Variabile Spiegazione Valore predefinito
GRUB_DEFAULT Definisce la voce di menu predefinita selezionata all'avvio. Può essere un indice numerico, un titolo di menu o "saved" (salvato). L'impostazione predefinita è la prima voce rilevata.
GRUB_TIMEOUT Ritardo (in secondi) prima dell'avvio della voce di menu predefinita. Imposta su 0 per avviare immediatamente o su -1 per attendere indefinitamente. L'impostazione predefinita è 5 secondi.
GRUB_CMDLINE_LINUX Parametri da passare sulla riga di comando del kernel per tutte le voci del menu Linux. Ad esempio, per supportare l'ibernazione, gli utenti dovranno aggiungere GRUB_CMDLINE_LINUX="resume=/dev/sdXY" con /dev/sdXY come partizione di swap.
GRUB_CMDLINE_LINUX_DEFAULT Parametri da passare sulla riga di comando del kernel per le voci del menu Linux senza ripristino.
GRUB_DEVICE Il dispositivo root iniziale (cioè il parametro root= del kernel). Impostalo per sovrascrivere il rilevamento automatico del dispositivo root del comando grub-mkconfig. Ad esempio, GRUB_DEVICE=/dev/ram0 forzerà l'utilizzo di root=/dev/ram0 nella riga di comando del kernel.

Per una più completa lista, riferirsi alla sotto pagina variabili di configurazione e alla pagina info di grub-mkconfig.

Dopo la modifica dei parametri, rigenerare il file di configurazione di GRUB2 con grub-mkconfig.

Abilitare o disabilitare gli script di configurazione

La directory /etc/grub.d/ contiene gli script che grub-mkconfig utilizza per generare un file grub.cfg. Per impostazione predefinita, il contenuto di questa directory dovrebbe essere simile al seguente:

user $ls /etc/grub.d/
00_header  10_linux  20_linux_xen  30_os-prober  40_custom  41_custom README

GRUB utilizzerà tutti gli script installati contrassegnati come eseguibili (che per impostazione predefinita lo sono tutti). Per disabilitare uno degli script è sufficiente rimuovere il bit eseguibile dai permessi del file dello script utilizzando il comando chmod. Nell'esempio seguente tutti gli script tranne 00_header e 10_linux sono disabilitati:

root #chmod -x /etc/grub.d/{20_linux_xen,30_os-prober,40_custom,41_custom}

Dopo aver modificato gli script (o rimosso il bit eseguibile), rigenerare il file di configurazione utilizzando grub-mkconfig.

Manipolare gli script di configurazione

Alcune caratteristiche o funzionalità possono essere sfruttate solo modificando gli script di configurazione. Ad esempio, per supportare il dual-boot con FreeBSD, è necessario eseguire la seguente manipolazione.

Cambiare lo script /etc/grub.d/40_custom in:

FILE /etc/grub.d/40_customAggiungere una voce per il dual booting
menuentry "FreeBSD" --class freebsd --class bsd --class os {
 insmod ufs2
 insmod bsd
 set root=(hd0,1)
 kfreebsd /boot/kernel/kernel
 kfreebsd_loadenv /boot/device.hints
 set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s1a
 set kFreeBSD.vfs.root.mountfrom.options=rw
 set kFreeBSD.hw.psm.synaptics_support=1
}

/dev/sda1 o (hd0,1) è la partizione dove FreeBSD risiede. Se la normale installazione UFS è stata utilizzata per la partizione FreeBSD allora /dev/sda1 è un contenitore (qualcosa come una partizione logica). Esso consiste in una partizione swap e una partizione di root. Verificare che lo script 40_custom sia eseguibile eseguendo ls -la /etc/grub.d/40_custom. Se il bit eseguibile non è impostato, impostalo utilizzando il comando chmod u+x 40_custom.

Note
Gli utenti che hanno familiarità con il modo in cui le partizioni numerate di GRUB Legacy dovrebbero annotare le partizioni che iniziano da 1, non da 0, con GRUB2.

Quindi installa GRUB e aggiorna il file di configurazione:

root #grub-install /dev/sda
root #grub-mkconfig -o /boot/grub/grub.cfg

Installare il boot loader

Warning
Il --efi-directory usato in questo articolo si discosta da quello usato nel Manuale AMD64.

L'installazione di GRUB come boot loader del sistema dipende da come il sistema deve avviarsi (attraverso quale tipo di firmware, ad esempio sui PC sia il legacy BIOS o il suo successore UEFI) e come il disco su cui dovrebbe essere il boot loader installato è partizionato (ad es. su un PC, indipendentemente dal fatto che utilizzi il layout di partizione MBR o GPT).

Questo articolo copre le seguenti situazioni:

Selezionare le istruzioni di installazione appropriate per il sistema.

BIOS con MBR

Note
Quando il sistema deve eseguire il dual-boot con un altro sistema operativo (preinstallato), come Microsoft Windows, assicurarsi che il bootloader Linux possa coesistere o eseguire il dual-boot di entrambi i sistemi operativi. Sui PC si consiglia di utilizzare lo stesso metodo di avvio del sistema preinstallato, ad es. quando Windows utilizza il partizionamento MBR legacy, viene avviato anche in modalità "BIOS legacy" (UEFI lo chiama CSM, abbreviazione di Compatibility Support Module, in sostanza un'emulazione del BIOS). Se la modalità viene modificata, ad es. da EFI-CSM (modalità BIOS) a modalità nativa (U)EFI, il sistema preinstallato non sarà sicuramente più avviabile.

Assicurati che la posizione /boot sia disponibile - se questa utilizza una partizione separata, assicurati che sia montata:

root #mount /boot

Esegui il comando grub-install per copiare tutti i file rilevanti in /boot/grub. Nelle piattaforme PC, questo installa inoltre una immagine di avvio nel Master Boot Record (MBR) o nella settore di avvio della partizione. Se tutto va bene, dopo aver eseguito grub-install ci si aspetta un output come quello di seguito:

root #grub-install /dev/sda
Installation finished. No error reported.

grub-install accetta l'opzione --target per impostare l'architettura della CPU e la piattaforma del sistema. Se non specificata, grub-install cercherà di indovinare i valori corretti; su un sistema amd64/x86 userà il codice predefinito i386-pc. grub-install accetta inoltre l'opzione --boot-directory per dire all'installatore GRUB in quale directory dovrebbe cercare i file di avvio. L'impostazione predefinita è l'attuale /boot ma è utile quando si tenta di spostare una partizione di root.

Partizionamento per BIOS con MBR

Assicurati di lasciare abbastanza spazio libero prima della prima partizione. L'avvio della prima partizione nel settore 2048 lascia almeno 1 MiB di spazio su disco per il record di avvio principale. È consigliato (ma non obbligatorio) creare una partizione aggiuntiva per GRUB chiamata partizione di avvio del BIOS. Questa partizione deve solo essere definita, ma non formattata. È necessaria solo se il sistema viene successivamente migrato al layout della partizione GPT. Quando si utilizza MBR, questa non è necessaria.

Se sono state seguite le Istruzioni per l'installazione di Gentoo, questa partizione di boot del BIOS sarà già disponibile.

BIOS con GPT

Warning
GPT was not designed for the legacy BIOS, yet with the protective MBR it includes a provision for it. Also, dual-boot with legacy operating systems designed to be booted from MBR, which is the de facto standard on computers with a BIOS, will need to access their partitions through the MBR, which can be accomplished by creating GPT/MBR hybrid partitions. This technique, however, has specific constraints.

On a BIOS system with GPT partitioning, GRUB relies on a partition call "BIOS boot partition". This partition is not formatted with a file system, instead grub-install will copy parts of the boot loader to it. The "BIOS boot partition" is not the same partition as a /boot partition.

Note
See also What is the BIOS boot partition? in the x86 handbook.

Se una partizione /boot è necessaria, comincia montando la partizione /boot:

root #mount /boot

Se tutto va bene, dopo aver eseguito il comando grub-install ci si aspetta un output come quello sotto:

root #grub-install /dev/sda
Installation finished. No error reported.

grub-install accetta l'opzione --target per impostare l'architettura della CPU e la piattaforma del sistema. Se non specificata, grub-install cercherà di indovinare i valori corretti; su un sistema amd64/x86 userà il codice predefinito i386-pc. grub-install accetta inoltre l'opzione --boot-directory per dire all'installatore GRUB in quale directory dovrebbe cercare i file di avvio. L'impostazione predefinita è l'attuale /boot ma è utile quando si tenta di spostare una partizione di root.

grub-install also accepts a --boot-directory option to tell the GRUB installer which directory to look in for the boot files. This defaults to the current /boot but is useful when trying to move a root partition.

Dual-boot con Windows

Quando il sistema deve eseguire il dual-boot con Microsoft Windows installato in modalità BIOS, il partizionamento GPT completo e nativo non è possibile. Windows consente l'avvio da una partizione MBR solo in modalità BIOS, che include la modalità di emulazione BIOS di (U)EFI chiamata "CSM". Per Linux invece è ancora possibile utilizzare uno schema di partizionamento GPT anche da modalità BIOS (o EFI-CSM), ma per il dual-boot con Windows questo richiede il partizionamento ibrido: si possono definire fino a quattro partizioni sia nel GPT che nel Tabelle delle partizioni MBR contemporaneamente.

Note
Tradizionalmente i PC x86 utilizzavano un BIOS come firmware. Dopo il passaggio a (U)EFI sui PC (intorno al 2005) esisteva un'emulazione del BIOS chiamata "Compatibility Support Module" (CSM), i PC erano quindi ancora compatibili con i sistemi operativi esistenti. Sui PC tradizionali, l'EFI-CSM è stato gradualmente eliminato dal 2020. Anche prima del 2020 alcune implementazioni (U)EFI, come i server, mancavano completamente del CSM. La 'modalità legacy BIOS' non è quindi più disponibile sui moderni sistemi UEFI. UEFI nella sua modalità di avvio nativa richiede la GUID Partition Table (GPT), quindi un sistema operativo preinstallato utilizzerà già uno schema di partizionamento GPT.

Un Windows già installato si rifiuterà di avviarsi quando viene modificata la modalità di avvio o lo schema di partizionamento. Inoltre, i vecchi sistemi Windows non supportano affatto GPT (o EFI), richiedendo che sia necessario utilizzare un BIOS o EFI-CSM insieme a un MBR. Se Windows supporta EFI, può essere reinstallato nella modalità UEFI nativa e nello schema di partizionamento GPT, oltre che in Linux; vedere la sezione UEFI con GPT.

Partizionamento ibrido tra GPT e MBR crea sia una tabella delle partizioni GPT valida che una tabella delle partizioni MBR valida contemporaneamente, ma limita il numero totale di partizioni ibride a quattro a causa del limite di quattro partizioni primarie di l'MBR. Poiché l'ESP (la EFI System Partition che contiene i bootloader EFI) occupa una partizione, rimangono solo tre partizioni condivise tra MBR e GPT. Quando viene utilizzata una partizione per Windows e una per Linux, è possibile solo una partizione ibrida aggiuntiva, ad esempio una partizione Linux /boot separata o una partizione dati condivisa tra i due sistemi operativi.

Warning
{{{1}}}

Se ci sono due dischi fisici disponibili per il sistema, un'ottima soluzione è fare in modo che un disco utilizzi il GPT e l'altro lo schema di partizionamento MBR. Normalmente, l'installazione di Windows utilizza solo una partizione come 'partizione di sistema' e 'partizione di avvio', denominata 'drive C:'. In modalità BIOS, la partizione iniziale per l'avvio, la 'partizione di sistema', deve essere una partizione MBR. Questo vale per tutte le versioni di Windows da Windows XP e include Windows 10. Da Windows Vista (in realtà Windows XP x64 Edition) il sistema operativo Microsoft supporta l'accesso alle partizioni GPT. La soluzione consiste nel riposizionare la parte 'partizione di sistema' di un'installazione sul disco partizionato MBR e convertire la 'partizione di avvio' (quella che contiene \WINDOWS) in un disco partizionato GPT. Windows può quindi accedere a tutte le partizioni GPT su un disco e continuerà a utilizzare le partizioni MBR (o partizioni ibride) sul disco contenente la 'partizione di sistema'. L'installazione di Windows (contenente \WINDOWS) sarebbe una partizione GPT, anche se avviata in modalità BIOS.

Partizionamento per BIOS con GPT

Quando una tabella delle partizioni GPT è presente nel sistema, una piccola partizione di avvio del BIOS di tipo EF02 (che è diversa dalla EFI System Partition (ESP) che ha tipo EF00) dovrà essere disponibile. 1 MiB sarà sufficiente per funzionare, ma 2-4 MiB è un'opzione più sicura. Questa partizione di avvio del BIOS conterrà la fase 2 del bootloader. Le partizioni di avvio del BIOS non devono essere formattate con un filesystem; il comando grub-install sovrascriverà qualsiasi filesystem esistente con uno dei suoi.

Important
La partizione di avvio del BIOS non è la stessa partizione che è comunemente montata su /boot. Il /boot e l'avvio del BIOS sono partizioni diverse e dovrebbero essere gestite separatamente. La partizione di avvio del BIOS dovrebbe non essere montata regolarmente sul sistema (cioè, dovrebbe non essere definita in /etc/fstab). La partizione /boot può essere montata regolarmente senza problemi e quindi può essere presente nel file /etc/fstab.

Per impostare una partizione come partizione del BIOS, utilizzare lo strumento da riga di comando parted (sys-block/parted) digitando (cambiare 1 con il numero di la partizione da contrassegnare come partizione di avvio del BIOS!):

(parted)set 1 bios_grub on

Con l'utilità cgdisk di sys-apps/gptfdisk, ciò si ottiene impostando il tipo di partizione su 0xEF02 e assegnandogli un'etichetta di gptbios .

Non è necessaria una partizione di sistema EFI, ma sarebbe opportuno assicurarsi che la partizione di avvio del BIOS sia sufficientemente grande da essere convertita in una, qualora la scheda madre del sistema venga successivamente aggiornata a una scheda UEFI.

Di seguito è riportato l'output della pressione del tasto p utilizzando l'utilità gdisk su un disco partizionato GPT con una partizione di avvio del BIOS [0xEF02] e una partizione EFI [0xEF00]:

root #gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.1
 
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
 
Found valid GPT with protective MBR; using GPT.
 
Command (? for help): p
Disk /dev/sdc: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): AA369F4D-37A4-4C0D-A357-DC24B99A6337
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       828377087   395.0 GiB   8E00  Linux LVM
   2       828377088       891291647   30.0 GiB    0700  Microsoft basic data
   3       891291648       975177727   40.0 GiB    0700  Microsoft basic data
   4       975177728       976754687   770.0 MiB   8300  Linux filesystem
   5       976754688       976756735   1024.0 KiB  EF02  BIOS boot partition
   6       976756736       976773134   8.0 MiB     EF00  EFI System
 
Command (? for help): 
Note
Non è necessario immettere il prefisso esadecimale 0x per GPT quando si utilizza fdisk.

Utilizzando la stessa configurazione, l'utilità parted fornisce un output con una sintassi leggermente diversa:

root #parted /dev/sdc
GNU Parted 3.0
Using /dev/sdc
(parted) print
...
Sector size (logical/physical): 512B/512B
Partition Table: gpt
  
Number  Start   End    Size    File system  Name                  Flags
 1      1049kB  424GB  424GB                Linux LVM             lvm
 2      424GB   456GB  32.2GB               Microsoft basic data
 3      456GB   499GB  42.9GB               Microsoft basic data
 4      499GB   500GB  807MB   ext2         Linux filesystem
 5      500GB   500GB  1049kB               BIOS boot partition   bios_grub
 6      500GB   500GB  8396kB               EFI System            boot
  
(parted)

La creazione di partizioni in gdisk è semplice per gli utenti che hanno familiarità con l'utilità di partizionamento fdisk. Dopo aver avviato gdisk, digita n (sta per new) nel menu principale, fornisci i settori di inizio e fine (se necessario) e imposta il tipo di partizione su EF00 per una partizione di sistema EFI.

Gli utenti che hanno seguito le Istruzioni per l'installazione di Gentoo avranno già impostato il layout di partizionamento corretto.

UEFI con GPT

Note
Se si utilizza UEFI-CSM, fare riferimento a BIOS con MBR o BIOS con GPT. CSM sta per 'Compatibility Support Module' ed è un'emulazione del BIOS, che fa sì che UEFI si comporti come un BIOS. Nella configurazione del firmware viene spesso chiamato 'Modalità legacy' o 'Modalità compatibilità'. UEFI-CSM è sempre stato facoltativo ed è stato gradualmente eliminato sui sistemi tradizionali (come i PC) nel 2020.

Assicurati che la posizione /boot sia disponibile - se questa utilizza una partizione separata, assicurati che sia montata:

root #mount /boot

Esegui il comando grub-install per copiare tutti i file rilevanti in /boot/grub. Questo dovrebbe installare GRUB in /boot/grub, copia l'immagine principale in /boot/efi/EFI/gentoo/grubx64.efi e chiama efibootmgr per aggiungere una voce di avvio.

root #grub-install --efi-directory=/boot/efi
Installation finished. No error reported.
Important
Il comando precedente presuppone che una FAT formattata EFI System Partition (ESP) sia montata su /boot/efi. Se l'ESP è montato direttamente su /boot, usa invece --efi-directory=/boot.

grub-install accetta l'opzione --target per impostare l'architettura della CPU e la piattaforma del sistema. Se non specificata, grub-install cercherà di indovinare i valori corretti; su un sistema con avvio UEFI AMD64 utilizzerà x86_64-efi per impostazione predefinita. grub-install accetta inoltre l'opzione --boot-directory per dire all'installatore GRUB in quale directory dovrebbe cercare i file di avvio. L'impostazione predefinita è l'attuale /boot ma è utile quando si tenta di spostare una partizione di root.

Partizionamento per UEFI con GPT

Per l'avvio UEFI GPT, il sistema deve avere una partizione di sistema EFI dedicata contenente un filesystem FAT.

La partizione EFI può sostituire con una partizione /boot su /dev/sda1 avendo una partizione /boot/efi su /dev/sda1. Vale a dire che uno scenario di avvio UEFI di successo che utilizza GRUB può operare con due partizioni in totale (tre in totale se è necessaria una partizione di swap): una partizione root e una partizione EFI. Usando questa configurazione, la cartella/boot si troverà nella partizione root / (a /boot) e la partizione EFI monterà nella cartella boot (in /boot/efi). Per ulteriori chiarimenti, vedere il file di esempio /etc/fstab di seguito.

FILE /etc/fstabEsempio di un file /etc/fstab compatibile con UEFI con una partizione di swap:
/dev/sda1       /boot/efi       vfat    noauto,noatime  1 2
/dev/sda2       none            swap    sw              0 0
/dev/sda3       /               ext4    noatime         0 1

La generazione di una partizione da 100 MB per /boot/efi dovrebbe fornire molto spazio per contenere più file

  • .efi (molto probabilmente non saranno necessarie più voci; la maggior parte dei sistemi ne utilizzerà solo una).

Crea la partizione usando lo strumento di partizionamento preferito. Gli strumenti gdisk (sys-apps/gptfdisk) e parted (sys-block/parted) si adattano perfettamente a questo scopo. Quando si utilizza l'utilità gdisk, assicurarsi di utilizzare il tipo EF00.

Procedi a creare un filesystem FAT sulla partizione di sistema EFI usando mkfs.fat e aggiungilo a /etc/fstab seguendo l'esempio seguente:

root #mkfs.fat -F 32 -n efi-boot /dev/sda1
root #mkdir /boot/efi
FILE /etc/fstabAggiungere l'entrata per il mount di /boot/efi
/dev/sda1       /boot/efi       vfat    noauto,noatime  1 2
root #mount /boot/efi
Note
È utile impostare la variabile GRUB_PLATFORMS in /etc/portage/make.conf. Ciò aiuterà GRUB a determinare quali opzioni utilizzare quando si rileva il target EFI corretto. Per i sistemi UEFI a 32 bit utilizzare efi-32. Per 64 bit usa efi-64.
Warning
Even though 64-bit x86 processors "x86-64" or "x64" do support running legacy 32-bit software, it is not possible for an EFI implementation to do the same. A 64-bit EFI will not be able to run 32-bit .efi loaders!
Important
Affinché GRUB si installi correttamente, la directory EFI deve essere montata e il modulo kernel efivars deve essere caricato prima che venga eseguito con successo il comando grub-install.

Alternativa: utilizzando la posizione del firmware UEFI predefinita

Se il firmware UEFI del sistema non riesce a trovare il file del bootloader EFI di GRUB, l'utilizzo della posizione predefinita del boot loader dovrebbe fornire una soluzione funzionante. Questo elude il menu di avvio gestito da efibootmgr e offre quindi funzionalità ridotte, ma è meno soggetto a errori. Per fare ciò, verifica che la partizione EFI sia montata su /boot/efi quindi copia il file grubx64.efi che si trova in /boot/efi/EFI/gentoo/grubx64.efi in /boot/efi/EFI/BOOT/BOOTX64.EFI. Questo esempio presuppone un sistema UEFI a 64 bit, regolare di conseguenza per i sistemi UEFI a 32 bit.

Open Firmware (IEEE 1275) su PowerPC

Vedere qua.

Funzionalità estese

GRUB 2 ha molte caratteristiche che lo rendono un boot loader molto potente. Supporta:

  • Avvio da piattaforme UEFI.
  • Avvio da unità partizionate GPT senza bisogno di un MBR ibrido (l'MBR ibrido può essere abilitato secondo necessità per compatibilità o portabilità).
  • Avvio da una partizione /boot formattata btrfs.
  • Avvio da un pool ZFS.
  • Avvio diretto da un set raid btrfs senza bisogno di un initramfs per il montaggio anticipata.
  • Avvio diretto dalla gestione del volume logico (come LVM2).
  • Avvio con supporto per DM-RAID (RAID 0, 1, 4, 5, 6, 9 e 10).
  • Avvio da dispositivi crittografati (LUKS).

Alcune caratteristiche specifiche sono spiegate più dettagliatamente di seguito.

Caricamento a catena

GRUB 2 è stato realizzato con una modalità chainload davvero migliorata rispetto a GRUB Legacy. Per caricare in catena un altro boot loader, usa l'opzione chainloader.

FILE /etc/grub.d/40_customCaricamento a catena di un altro bootloader
menuentry "Custom Super-bootloader example" {
     insmod part_msdos
     insmod chain
     chainloader (hd1,1)+1
}

Per ulteriori informazioni sul caricamento a catena, consultare la sotto-pagina Chainloading

Protezione con password del menu di GRUB

Se vuoi proteggere GRUB in modo che nessuno possa modificare i parametri di avvio o utilizzare la riga di comando, puoi aggiungere una combinazione utente/password ai file di configurazione di GRUB. Il programma grub-mkpasswd-pbkdf2 genera hash password per GRUBː

user $grub-mkpasswd-pbkdf2
Password:
Reenter password:
</div>

PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...

Quindi, aggiungi quanto segue aː

FILE /etc/grub.d/35_auth:
# Grub user
echo 'set superusers="username"'
# Grub password
echo 'password_pbkdf2 <username> <password>'

Utilizzo della visualizzazione framebuffer

Per fare in modo che GRUB utilizzi un display grafico framebuffer, reinstallare GRUB con il flag USE truetype abilitato. Verrà installato un carattere True Type predefinito e un'utilità di conversione dei caratteri.

root #emerge --ask --newuse sys-boot/grub:2

Procedi con la configurazione del file di configurazione predefinito che si trova in /etc/default/grub. Per esempio:

FILE /etc/default/grubImpostazioni relative al framebuffer
# Imposta risoluzione e profondità del colore
GRUB_GFXMODE=1366x768x32
 
# Mantieni la risoluzione durante il caricamento del kernel
GRUB_GFXPAYLOAD_LINUX=keep
  
# Imposta un'immagine di sfondo
GRUB_BACKGROUND="/boot/grub/bg.png"
 
# Usa un font personalizzato, convertito usando l'utility grub-mkfont
GRUB_FONT="/boot/grub/fonts/roboto.pf2"
 
# Imposta i colori del menu 
GRUB_COLOR_NORMAL="light-blue/black"
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

HiDPI displays

On modern displays with high DPI ("HiDPI"), e.g. UHD (3840x2160), the standard font will look very small. If you like to have the same font as the kernel, Terminus can be used, which resembles a BIOS built-in textmode font...

KERNEL Terminus 16x32 font
CONFIG_FONT_TER16x32:

Terminus Font is a clean, fixed width bitmap font, designed
for long (8 and more hours per day) work with computers.
This is the high resolution, large version for use with HiDPI screens.
If the standard font is unreadable for you, say Y, otherwise say N.

To select this font in-kernel, CONFIG_FONT_TER16x32 has to be enabled.

KERNEL Kernel compiled-in fonts
Library routines  --->
      [*] Select compiled-in fonts
      [*] Terminus 16x32 font (not supported by all drivers)

The same font is available as media-fonts/terminus-font, which can then be used for GRUB as well.

root #emerge --ask media-fonts/terminus-font
root #grub-mkfont -s 32 -o /boot/grub/fonts/terminus32b.pf2 /usr/share/fonts/terminus/ter-u32b.otb

In the above example the filename chosen for grub-mkfont output is terminus32b.pf2. The font's path has to be accessible to GRUB during boot, so it should reside in the same mount point as GRUB does; this example uses /boot/grub/fonts. The font then has to be set as GRUB_FONT in /etc/default/grub in order to be used.

FILE /etc/default/grubFramebuffer related settings
# Use a custom font, converted using grub-mkfont utility
GRUB_FONT="/boot/grub/fonts/terminus32b.pf2"

Updating the GRUB configuration file grub.cfg will then activate the configuration with the new font.

root #grub-mkconfig -o /boot/grub/grub.cfg

Risoluzione dei problemi

Note
Per ulteriori informazioni sulla risoluzione dei problemi, fare riferimento al sottoarticolo Risoluzione dei problemi.

La maggior parte dei problemi può essere risolta assicurandosi che il layout della partizione sia corretto. Assicurati che sia disponibile spazio sufficiente prima della prima partizione del disco o, facoltativamente, assicurati che sia disponibile una partizione di avvio del BIOS. Verifica anche che /boot/grub/grub.cfg sia stato generato correttamente con grub-mkconfig o generane uno con una voce di menu personalizzata.

os-prober non funziona

Quando si esegue il comando grub-mkconfig, os-prober non funziona come previsto, anche se è installato:

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.11.14-gentoo-x86_64
Found initrd image: /boot/amd-uc.img /boot/initramfs-5.11.14-gentoo-x86_64.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

Questo può essere corretto impostando la variabile GRUB_DISABLE_OS_PROBER su false nel file /etc/default/grub.

FILE /etc/default/grub
GRUB_DISABLE_OS_PROBER=false

Alla prossima esecuzione, grub-mkconfig dovrebbe trovare partizioni avviabili aggiuntive:

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.11.14-gentoo-x86_64
Found initrd image: /boot/amd-uc.img /boot/initramfs-5.11.14-gentoo-x86_64.img
Warning: os-prober will be executed to detect other bootable partitions.
It's output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme0n1p2@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

Il firmware della scheda madre non trova il file .EFI

Alcuni produttori di schede madri sembrano supportare solo una posizione per il file .EFI nella partizione di sistema EFI (ESP). Se questo sembra essere il caso, sposta semplicemente il file predefinito di GRUB nella posizione /efi/boot/. Innanzitutto, assicurati che l'ESP sia montato. Supponendo che l'ESP sia montato su /boot/efi (come suggerito nel Handbook), eseguire:

root #mkdir -p /boot/efi/efi/boot
root #cp /boot/efi/efi/gentoo/grubx64.efi /boot/efi/efi/boot/bootx64.efi

On a 32-bit EFI implementation use bootia32.efi instead:

root #cp /boot/efi/efi/gentoo/grubia32.efi /boot/efi/efi/boot/bootia32.efi

Puoi anche utilizzare il parametro rimovibile con il comando grub-install per generare automaticamente questo file:

root #grub-install --efi-directory=/boot/efi --removable
Installation finished. No error reported.

Questo dovrebbe aiutare il firmware della scheda madre a caricare l'eseguibile di GRUB. Riavvia il sistema per vedere se il firmware ora carica correttamente GRUB.

os-prober e UEFI in chroot

L'utilità sys-boot/os-prober viene utilizzata per rilevare installazioni alternative, come Microsoft Windows. Per funzionare correttamente, deve avere accesso alle informazioni dall'udev dell'ambiente live per testare la partizione di sistema EFI.

Esegui questi comandi nell'ambiente host per fornire i file richiesti (l'esempio mostra Gentoo montato su /mnt/gentoo come nel Manuale):

root #mkdir -p /mnt/gentoo/run/udev
root #mount -o bind /run/udev /mnt/gentoo/run/udev
root #mount --make-rslave /mnt/gentoo/run/udev

Installazione di un nuovo kernel

Ogni volta che viene installato un nuovo kernel, GRUB deve essere riconfigurato per riconoscerlo. Questo può essere fatto usando grub-mkconfig, come mostrato di seguito, o può essere fatto manualmente.

Note
Assicurati che la partizione /boot sia montata per questo passaggio.
root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.3.8-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

Nota che GRUB deve solo essere riconfigurato, non "reinstallato" nel Master Boot Record (MBR) dell'unità di avvio. D'altra parte, quando GRUB stesso è stato aggiornato, deve essere reinstallato sull'unità di avvio, ma di solito non ha bisogno di essere riconfigurato.

Vedere anche

  • In Chainloading è descritto l'uso di GRUB2 per avviare altri boot loader. Questo è importante da leggere quando si avviano i sistemi a doppio avvio o quando GRUB2 deve essere configurato per avviare i file ISO.
  • In Archiviazione avanzata sono documentati i passaggi necessari su come installare e utilizzare GRUB su situazioni di archiviazione più avanzate, come software RAID, volumi logici o file system crittografati.
  • In Configuration variable è documentato un elenco completo delle variabili di configurazione di GRUB, come usato da /etc/default/grub.
  • In Risoluzione dei problemi viene presentato un elenco di errori GRUB comuni (con le relative soluzioni).
  • In Hybrid partition table è documentato l'uso di una configurazione mista MBR/GPT, nonché come utilizzare tale layout di partizione ibrida con GRUB.

Risorse esterne

Per ulteriori informazioni, vedere: