grub2-install: "questa etichetta di partizione GPT non contiene alcuna partizione di avvio BIOS"


41

Sembra esserci un bel po 'di discussione su questo, ma non riesco a trovare una risposta semplice.

Quando provo a installare grub2 ottengo questo errore:

# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.

Ecco il layout di / dev / sda:

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7ECE06D0-9F0C-44FF-BCFB-142283172CCA

Device        Start       End   Sectors  Size Type
/dev/sda1      2048    411647    409600  200M Linux filesystem (/boot)
/dev/sda2    411648   4605951   4194304    2G Linux swap
/dev/sda3   4605952  46548991  41943040   20G Linux filesystem (/)
/dev/sda4  46548992 234441614 187892623 89.6G Linux LVM (/var)

C'è un modo semplice per aggirare questo problema? Capisco che devo creare una piccola partizione all'inizio del disco come "BIOS Boot Partition". Suppongo che un'opzione sarebbe quella di spostare lo swap su / dev / sda4 come volume logico e usare / dev / sda2 come / boot.

In alternativa, potrei semplicemente tornare a grub-legacy e non preoccuparmene (c'è davvero un vantaggio nell'aggiornamento a grub2 se causa così tanti problemi?).

Pensieri?

Risposte:


23

È innanzitutto necessario determinare se si desidera utilizzare un avvio in modalità BIOS / CSM / legacy o un avvio in modalità EFI / UEFI. Il primo è il modo in cui i PC si sono avviati dagli anni '80, ma è un sistema brutto e hacker che farà la strada del dodo in poco tempo. Windows collega l'avvio in modalità BIOS alla tabella delle partizioni MBR, che non si sta utilizzando (ma potrebbe; il disco non è abbastanza grande da richiedere GPT). Linux, FreeBSD e la maggior parte degli altri sistemi operativi moderni sono più flessibili e supportano l'avvio in modalità BIOS da GPT; ma a volte ci sono complicazioni create dal firmware e, naturalmente, se in seguito decidi di installare Windows in una configurazione a doppio avvio, dovrai apportare modifiche o compromessi.

L'avvio in modalità EFI / UEFI è meno di un hack; ma le implementazioni EFI variano notevolmente in termini di qualità e il livello complessivo di esperienza e supporto sul Web per EFI è inferiore a quello per BIOS. Windows lega l'uso di GPT all'avvio in modalità EFI, quindi se prevedi di installare Windows sul tuo computer, EFI è sicuramente la strada da percorrere. I computer meno recenti sono solo BIOS. EFI ha iniziato a decollare sul mercato a metà 2011, quindi se il tuo computer è più vecchio di quello, potresti non essere in grado di utilizzare EFI.

Se si avvia l'avvio in modalità BIOS, è necessario creare una partizione di avvio BIOS sul disco. C'è abbastanza spazio all'inizio del disco per questa partizione, ma dovrai impostare il valore di allineamento del settore su 1 (dal solito 2048) affinché funzioni. Non so con disinvoltura se questo può essere fatto parted, ma puoi farlo con gdisk. (Si noti che lo spazio all'inizio del disco è leggermente al di sotto della dimensione consigliata di 1 MB per una partizione di avvio del BIOS, ma solo per alcuni settori. Probabilmente funzionerà bene, ma potrebbe presumibilmente fallire ad un certo punto in futuro.) In alternativa , è possibile ridurre qualsiasi partizione di 1-2 MiB per fare spazio alla partizione di avvio del BIOS. Questa partizione no necessariamente essere la prima partizione sul disco, sebbene quella sia la posizione convenzionale.

Se si avvia l'avvio in modalità EFI / UEFI, è necessario creare una partizione di sistema EFI (ESP). Questa partizione deve essere formattata in FAT e deve essere significativamente più grande di una partizione di avvio del BIOS, quindi dovrai ridimensionare qualcosa per crearla. Raccomando una dimensione di 550 MiB, anche se un decimo di questi potrebbe funzionare in un pizzico.

Per installare GRUB, dovresti prima assicurarti di aver installato il pacchetto GRUB corretto. Non sono sicuro di nominare in tutte le distribuzioni, ma in Ubuntu sarebbe grub-pcper la modalità BIOS / CSM / legacy e grub-efi-amd64per la modalità EFI / UEFI. Un'installazione in modalità EFI richiederà anche l'avvio di qualunque cosa tu stia utilizzando per installare GRUB (presumibilmente un CD / USB live) in modalità EFI. Per fare ciò potrebbe essere necessario utilizzare il boot manager integrato del computer, a cui si accede in genere tramite un tasto funzione, ma i dettagli variano da un computer all'altro.


Grazie per la tua risposta molto utile. Ho fatto funzionare le cose su una macchina virtuale con un po 'di casino. Quando provo a farlo sulla mia macchina "di produzione" (che ha due dischi rigidi) ho una serie di problemi: grub2-install grub-setup=/bin/true /dev/sdagrub2-install: error: More than one install device?.. Sulla mia VM di lavoro il settore di partenza è contrassegnato come 32, ma sulla macchina di produzione è il 2048. Non so se questo è rilevante.
Robert S

Come suggerisce Flow nella sua risposta, il tipo di partizione della partizione di avvio del BIOS deve essere impostato su 0x04, ovvero "avvio del BIOS", altrimenti grub non riesce a installarsi. Questo può essere impostato ad esempio con il comando "t" di fdisk.
user1225999

C'è un modo per fare installare grub 2 senza una partizione di avvio del BIOS? Voglio solo usare UEFI.
CMCDragonkai

1
In un'installazione in modalità EFI, GRUB 2 non utilizza una partizione di avvio del BIOS. Se GRUB ne chiede uno, è probabile che tu abbia avviato in modalità BIOS, non in modalità EFI. Controlla le opzioni di avvio per assicurarti che il tuo CSM sia disabilitato, come descritto sulla mia pagina Web sull'argomento: rodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Rod Smith

6

Se si desidera utilizzare partizioni GPT con modalità di avvio BIOS vecchio stile, è necessario creare una partizione BIOS di alcuni megabyte (16MiB dovrebbe essere a posto e a prova di futuro) sul dispositivo in cui si desidera installare grub con grub-install .

Utilizzare, ad esempio, fdiskper creare la partizione di tipo "Avvio BIOS" da qualche parte sul disco. Esempio di output:

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 57E16A16-36B4-4445-A216-031EF6501415

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    4196351    4194304     2G Linux RAID
/dev/sda2   4196352   35653631   31457280    15G Linux RAID
/dev/sda3  35653632   37750783    2097152     1G Linux swap
/dev/sda4  37750784   37816319      65536    32M BIOS boot
/dev/sda5  37816320 1953525134 1915708815 913.5G Linux LVM

3

La partizione di avvio deve essere formattata fat32, affinché funzioni

mkfs.vfat -F32 /dev/sdXY

Dovrebbe risolverlo per te

Anche il flag di avvio deve essere attivato in parted:

set 1 boot on
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.