grub2-install: “este rótulo de partição GPT não contém partição de inicialização do BIOS”

41

Parece haver muita discussão sobre isso, mas não consigo encontrar uma resposta simples.

Quando tento instalar o grub2, recebo este erro:

# 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.

Aqui está o layout do / 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)

Existe uma maneira simples de solucionar esse problema? Entendo que preciso criar uma pequena partição no início do disco como uma "Partição de inicialização do BIOS". Suponho que uma opção seria mover a troca para / dev / sda4 como um volume lógico e usar / dev / sda2 como / boot.

Como alternativa, eu poderia voltar ao grub-legacy e não me preocupar com isso (existe realmente uma vantagem em fazer o upgrade para o grub2 se isso causar tantos problemas?).

Pensamentos?

Robert S
fonte

Respostas:

23

Você deve primeiro determinar se deseja usar uma inicialização no modo BIOS / CSM / herdado ou uma inicialização no modo EFI / UEFI. O primeiro é o modo como os PCs estão inicializando desde a década de 1980, mas é um sistema feio e imprudente que seguirá o caminho do dodo em pouco tempo. O Windows vincula a inicialização no modo BIOS à tabela de partição MBR, que você não está usando (mas poderia; seu disco não é nem grande o suficiente para exigir GPT). Linux, FreeBSD e a maioria dos outros sistemas operacionais modernos são mais flexíveis e suportam a inicialização no modo BIOS a partir da GPT; mas às vezes existem complicações criadas por firmware e, é claro, se você decidir instalar o Windows mais tarde em uma configuração de inicialização dupla, precisará fazer alterações ou compromissos.

A inicialização no modo EFI / UEFI é menos invasiva; mas as implementações de EFI variam muito em qualidade e o nível geral de conhecimento e suporte na Web para EFI é menor do que para BIOS. O Windows vincula o uso da GPT à inicialização no modo EFI; portanto, se você espera instalar o Windows no seu computador, a EFI é definitivamente o caminho a percorrer. Os computadores mais antigos são apenas BIOS. A EFI começou a decolar no mercado em meados de 2011; portanto, se o seu computador for mais antigo, talvez você não consiga usá-la.

Se você for inicializar no modo BIOS, deverá criar uma partição de inicialização do BIOS no disco. Há espaço suficiente no início do seu disco para esta partição, mas você precisará definir o valor do alinhamento do setor como 1 (a partir do habitual 2048) para que isso funcione. Não sei de antemão se isso pode ser feito parted, mas você pode fazê-lo gdisk. (Observe que o espaço no início do seu disco está um pouco abaixo do tamanho recomendado de 1MiB para uma partição de inicialização do BIOS, mas apenas em alguns setores. Provavelmente funcionará bem, mas pode falhar em algum momento no futuro.) Como alternativa , você pode reduzir qualquer uma de suas partições com 1-2MiB para liberar espaço para a partição de inicialização do BIOS. Essa partição não precisa ser a primeira partição no disco, embora esse seja o local convencional.

Se você for inicializado no modo EFI / UEFI, deverá criar uma Partição de Sistema EFI (ESP). Essa partição deve ter o formato FAT e ser significativamente maior que uma partição de inicialização do BIOS; portanto, você precisará redimensionar algo para criá-la. Eu recomendo um tamanho de 550MiB, embora um décimo disso possa funcionar em uma pitada.

Para instalar o GRUB, primeiro você deve ter certeza de que instalou o pacote GRUB correto. Não tenho certeza de nomear em todas as distribuições, mas no Ubuntu seria grub-pcpara o modo BIOS / CSM / legado e grub-efi-amd64para o modo EFI / UEFI. Uma instalação no modo EFI também exigirá a inicialização do que você estiver usando para instalar o GRUB (um CD / USB ao vivo, presumivelmente) no modo EFI. Isso pode exigir o uso do gerenciador de inicialização interno do computador, que normalmente é acessado por meio de uma tecla de função, mas os detalhes variam de um computador para outro.

Rod Smith
fonte
Obrigado pela sua resposta muito útil. Eu fiz as coisas funcionarem em uma máquina virtual com um pouco de bagunça. Quando tento fazer isso na minha máquina de "produção" (que possui dois discos rígidos), tenho vários problemas: grub2-install grub-setup=/bin/true /dev/sdagrub2-install: error: More than one install device?.. Na minha VM de trabalho, o setor inicial é marcado como 32, mas na máquina de produção é 2048. Não sei se isso é relevante.
Robert S
Como Flow sugere em sua resposta, o tipo de partição da partição de inicialização do BIOS deve ser definido como 0x04, que é "inicialização do BIOS", caso contrário, o grub não será instalado. Isso pode ser definido, por exemplo, com o comando "t" do fdisk.
usar o seguinte comando
Existe uma maneira de instalar o grub 2 sem uma partição de inicialização do BIOS? Eu só quero usar UEFI.
precisa saber é o seguinte
11
Em uma instalação no modo EFI, o GRUB 2 não usa uma partição de inicialização do BIOS. Se o GRUB estiver solicitando uma, é provável que você tenha inicializado no modo BIOS, não no modo EFI. Verifique as suas opções de inicialização para ter certeza de sua CSM está desativada, conforme descrito na minha página Web sobre o assunto: rodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Rod Smith
6

Se você quiser usar partições GPT com o modo de inicialização do BIOS antigo, precisará criar uma partição de BIOS de alguns megabytes (16MiB deve ser bom e estar preparado para o futuro) no dispositivo em que deseja instalar o grub grub-install.

Use, por exemplo, fdiskpara criar a partição do tipo "BIOS boot" em algum lugar do seu disco. Exemplo de saída:

# 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
Fluxo
fonte
3

A partição de inicialização deve ser formatada como fat32, para que funcione

mkfs.vfat -F32 /dev/sdXY

Deve corrigi-lo para você

Além disso, o sinalizador de inicialização precisa estar em parted:

set 1 boot on
Kevin Huntly
fonte