grub2-install: "esta etiqueta de partición GPT no contiene partición de arranque del BIOS"

41

Parece que hay bastante discusión sobre esto, pero no puedo encontrar una respuesta simple.

Cuando intento instalar grub2 me sale este error:

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

Aquí está el diseño 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)

¿Hay alguna manera simple de solucionar este problema? Entiendo que necesito crear una pequeña partición al comienzo del disco como una "Partición de arranque del BIOS". Supongo que una opción sería mover el intercambio a / dev / sda4 como un volumen lógico, y usar / dev / sda2 como / boot.

Alternativamente, podría volver a grub-legacy y no preocuparme por eso (¿hay realmente una ventaja en actualizar a grub2 si causa tantos problemas?).

Pensamientos?

Robert S
fuente

Respuestas:

23

Primero debe determinar si desea utilizar un arranque en modo BIOS / CSM / legacy o un arranque en modo EFI / UEFI. La primera es la forma en que las PC han estado arrancando desde la década de 1980, pero es un sistema feo y hackista que seguirá el camino del dodo en poco tiempo. Windows vincula el arranque en modo BIOS a la tabla de partición MBR, que no está utilizando (pero podría; su disco no es lo suficientemente grande como para requerir GPT). Linux, FreeBSD y la mayoría de los sistemas operativos modernos son más flexibles y admiten el arranque en modo BIOS desde GPT; pero a veces hay complicaciones creadas por el firmware y, por supuesto, si luego decide instalar Windows en una configuración de arranque dual, deberá realizar cambios o compromisos.

El arranque en modo EFI / UEFI es menos complicado; pero las implementaciones de EFI varían mucho en calidad y el nivel general de experiencia y soporte en la Web para EFI es inferior al de BIOS. Windows vincula el uso de GPT al arranque en modo EFI, por lo que si alguna vez espera instalar Windows en su computadora, EFI es definitivamente el camino a seguir. Las computadoras más antiguas son solo BIOS. EFI comenzó a despegar en el mercado a mediados de 2011, por lo que si su computadora es más antigua que eso, es posible que no pueda usar EFI.

Si opta por el arranque en modo BIOS, debe crear una partición de arranque BIOS en el disco. Hay suficiente espacio al comienzo de su disco para esta partición, pero necesitará establecer el valor de alineación de su sector en 1 (del 2048 habitual) para que esto funcione. No sé de antemano si esto se puede hacer parted, pero puedes hacerlo gdisk. (Tenga en cuenta que el espacio al inicio de su disco está ligeramente por debajo del tamaño recomendado de 1MiB para una partición de arranque del BIOS, pero solo por unos pocos sectores. Probablemente funcionará bien, pero posiblemente podría fallar en algún momento en el futuro). , puede reducir cualquiera de sus particiones en 1-2MiB para dejar espacio para la partición de arranque del BIOS. Esta partición no necesita ser la primera partición en el disco, aunque esa es la ubicación convencional.

Si opta por el arranque en modo EFI / UEFI, debe crear una partición del sistema EFI (ESP). Esta partición debe tener formato FAT y debe ser significativamente más grande que una partición de arranque de BIOS, por lo que tendrá que cambiar el tamaño de algo para crearla. Recomiendo un tamaño de 550MiB, aunque una décima parte de eso podría funcionar en un apuro.

Para instalar GRUB, primero debe asegurarse de haber instalado el paquete GRUB correcto. No estoy seguro de nombrar en todas las distribuciones, pero en Ubuntu, sería grub-pcpara el modo BIOS / CSM / legacy y grub-efi-amd64para el modo EFI / UEFI. Una instalación en modo EFI también requerirá arrancar lo que sea que esté utilizando para instalar GRUB (un CD / USB en vivo, presumiblemente) en modo EFI. Hacer esto puede requerir el uso del administrador de arranque incorporado de su computadora, al que generalmente se accede a través de una tecla de función, pero los detalles varían de una computadora a otra.

Rod Smith
fuente
Gracias por tu muy útil respuesta. Tengo cosas que funcionan en una máquina virtual con un poco de desorden. Cuando trato de hacer esto en mi máquina de "producción" (que tiene dos discos duros) tengo una serie de problemas: grub2-install grub-setup=/bin/true /dev/sdada grub2-install: error: More than one install device?.. En mi VM de trabajo, el sector de inicio está marcado como 32, pero en la máquina de producción es 2048. No sé si esto es relevante.
Robert S
Como Flow sugiere en su respuesta, el tipo de partición del BIOS Boot Partition debe establecerse en 0x04, que es "BIOS boot", de lo contrario, grub no se instala. Esto se puede configurar, por ejemplo, con el comando "t" de fdisk.
user1225999
¿Hay alguna manera de hacer que grub 2 se instale sin una partición de arranque de BIOS? Solo quiero usar UEFI.
CMCDragonkai
1
En una instalación en modo EFI, GRUB 2 no utiliza una partición de arranque de BIOS. Si GRUB está pidiendo uno, entonces es probable que haya arrancado en modo BIOS, no en modo EFI. Verifique sus opciones de arranque para asegurarse de que su CSM esté deshabilitado, como se describe en mi página web sobre el tema: rodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Rod Smith
6

Si desea usar particiones GPT con el modo de arranque BIOS antiguo, entonces necesita crear una partición BIOS de unos pocos megabytes (16MiB debería estar bien y a prueba de futuro) en el dispositivo donde desea instalar grub grub-install.

Use, por ejemplo, fdiskpara crear la partición de tipo "BIOS boot" en algún lugar de su disco. Salida de ejemplo:

# 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
Fluir
fuente
3

La partición de arranque debe estar formateada fat32, para que funcione

mkfs.vfat -F32 /dev/sdXY

Debería arreglarlo por ti

También la bandera de arranque debe estar activada:

set 1 boot on
Kevin Huntly
fuente