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

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

Parece haver bastante 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 de /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 contornar 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 o swap para/dev/sda4 como um volume lógico e usar/dev/sda2 como/boot.

Alternativamente, eu poderia simplesmente voltar ao grub-legacy e não me preocupar com isso (existerealmenteuma vantagem em atualizar para o grub2 se isso causar tantos problemas?).

Pensamentos?

Responder1

Você deve primeiro determinar se deseja usar uma inicialização em modo BIOS/CSM/legado ou uma inicialização em modo EFI/UEFI. A primeira é a maneira como os PCs inicializam desde a década de 1980, mas é um sistema feio e hackeado que em breve seguirá o caminho do dodô. 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 é grande o suficiente para exigir GPT). Linux, FreeBSD e a maioria dos outros sistemas operacionais modernos são mais flexíveis e suportam inicialização no modo BIOS a partir de GPT; mas às vezes há complicações criadas pelo firmware e, claro, se você decidir instalar o Windows posteriormente em uma configuração de inicialização dupla, precisará fazer alterações ou concessões.

A inicialização no modo EFI/UEFI é menos complicada; mas as implementações de EFI variam muito em qualidade e o nível geral de conhecimento e suporte na Web para EFI é inferior ao do BIOS. O Windows vincula o uso do GPT à inicialização no modo EFI, portanto, se você espera instalar o Windows em seu computador, o 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 que isso, talvez você não consiga usar a EFI.

Se você optar pela inicialização no modo BIOS, deverá criar umPartição de inicialização do BIOSno disco. Há espaço suficiente no início do disco para esta partição, mas você precisará definir o valor de alinhamento do setor como 1 (do 2048 normal) para que isso funcione. Não sei de imediato se isso pode ser feito com parted, mas você pode fazer isso com gdisk. (Observe que o espaço no início do seu disco está um pouco abaixo do tamanho recomendado de 1 MiB para uma partição de inicialização do BIOS, mas apenas por alguns setores. Provavelmente funcionará bem, mas poderá falhar em algum momento no futuro.) Alternativamente. , você pode reduzir qualquer uma de suas partições em 1-2 MiB para liberar espaço para a partição de inicialização do BIOS. Esta partição faznãoprecisa ser a primeira partição do disco, embora esse seja o local convencional.

Se você optar pela inicialização no modo EFI/UEFI, deverá criar umPartição do sistema EFI (ESP).Esta partição deve ser formatada em FAT e ser significativamente maior que uma partição de inicialização do BIOS, então você terá que redimensionar algo para criá-la. Eu recomendo um tamanho de 550 MiB, embora um décimo disso possa funcionar muito bem.

Para instalar o GRUB, primeiro você deve ter certeza de ter instalado o pacote GRUB correto. Não tenho certeza de nomear todas as distribuições, mas no Ubuntu, seria grub-pcpara modo BIOS/CSM/legado e grub-efi-amd64para 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 live CD/USB, presumivelmente) no modo EFI. Isso pode exigir o uso do gerenciador de inicialização integrado do computador, que normalmente é acessado por meio de uma tecla de função, mas os detalhes variam de um computador para outro.

Responder2

Você já tem essa pequena partição, então kk a primeira partição não começa com 1, mas com 2048

/dev / sda1 2048 411647 409600 200M Linux file system (/boot)

Você precisa alterar o tipo de etiqueta, debotaparabios_grubpor exemplo através do parted:

parted /dev/sda
set 1 boot off
set 1 bios_grub on
q

Então de novo:

grub2-install /dev/sda

Responder3

Se você quiser usar partições GPT com modo de inicialização BIOS antigo, então você precisa criar uma partição BIOS de alguns megabytes (16MiB deve ser adequado e à prova de futuro) no dispositivo onde você deseja instalar o grub com 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

Responder4

Eu tive esse problema agora mesmo em uma máquina no modo EFI com um disco GPT (Ubuntu 18.04 Server), que um dia decidiu inicializar apenas até o shell GRUB por conta própria.

De alguma forma, o grub-pc (para máquinas no modo BIOS/i386) foi instalado e o grub-efi não. A correção foi simples assim que o problema foi identificado:

# apt install grub-efi
# update-grub
# grub-install

Observe que o primeiro comando desinstalou o grub-pc.

informação relacionada