GRUB2
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.
/etc/portage/make.conf
Esempio di come impostare la variabile GRUB_PLATFORMS per piattaforme EMU, EFI e PCGRUB_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 |
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:
- Installazione del software GRUB come boot loader secondario del sistema.
- 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.
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.
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:
/etc/grub.d/40_custom
Aggiungere una voce per il dual bootingmenuentry "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.
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
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
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
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.
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.
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.
{{{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.
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):
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
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.
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.
/etc/fstab
Esempio 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
/etc/fstab
Aggiungere l'entrata per il mount di /boot/efi/dev/sda1 /boot/efi vfat noauto,noatime 1 2
root #
mount /boot/efi
È 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
.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!
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
.
/etc/grub.d/40_custom
Caricamento a catena di un altro bootloadermenuentry "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
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-pbkdf2Password:
Reenter password:
</div>
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
Quindi, aggiungi quanto segue aː
/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:
/etc/default/grub
Impostazioni 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...
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.
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.
/etc/default/grub
Framebuffer 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
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.
/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.
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:
- Pagina del manuale di GNU GRUB 2
- Problemi con il BIOS legacy con l'articolo GPT
- Articolo su GPT e MBR ibrido
- Pagina dell'utilità fdisk GPT
- Articolo wiki di Arch Linux GRUB 2
- Articolo wiki di Fedora GRUB2: Incontrare il temuto prompt di avvio di GRUB2
- guida all'avvio di Ubuntu UEFI
- http://unix.stackexchange.com/questions/109272/dualboot-freebsd-gentoo-with-grub2-mbr
- Un post sul blog sul blocco di specifiche voci di avvio di GRUB2 con una password