Linux – grub2-bios-setup: warning: this GPT partition label contains no BIOS Boot Partition; embedding won’t be possible

bootgptgrublinux

Grub2 won't install on a hdd with GPT partition label (without –force), complaining about a missing BIOS boot partion – even though there is one.
The first partition (1 MB) is supposed to be used as BIOS boot partition.

Why can't the Grub installer find it?

grub2-install –boot-directory=BOOT/grub2 /dev/sda

/usr/sbin/grub2-bios-setup: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
/usr/sbin/grub2-bios-setup: 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..
/usr/sbin/grub2-bios-setup: error: will not proceed with blocklists.

parted /dev/sda unit B print

Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 53687091200B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number Start End Size File system Name Flags
1 1048576B 2097151B 1048576B
2 2097152B 526385151B 524288000B ext2
3 526385152B 27369930751B 26843545600B ext4
4 27369930752B 32738639871B 5368709120B linux-swap(v1)
5 32738639872B 53686042623B 20947402752B ext4

sgdisk -p /dev/sda

Disk /dev/sda: 104857600 sectors, 50.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F4679BF9-DC8C-4346-8889-83B84F43BE58
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 104857566
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number Start (sector) End (sector) Size Code Name
1 2048 4095 1024.0 KiB 0700
2 4096 1028095 500.0 MiB 0700
3 1028096 53456895 25.0 GiB 0700
4 53456896 63942655 5.0 GiB 0700
5 63942656 104855551 19.5 GiB 0700

sgdisk -i 1 /dev/sda

Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 075D0E05-FC7B-482C-9BF8-0FD0A83D02F5
First sector: 2048 (at 1024.0 KiB)
Last sector: 4095 (at 2.0 MiB)
Partition size: 2048 sectors (1024.0 KiB)
Attribute flags: 0000000000000000
Partition name: ''

sgdisk -i 2 /dev/sda

Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 51756103-CDA5-4D09-BFB4-B1DB8A89CE08
First sector: 4096 (at 2.0 MiB)
Last sector: 1028095 (at 502.0 MiB)
Partition size: 1024000 sectors (500.0 MiB)
Attribute flags: 0000000000000000
Partition name: ''

sgdisk -i 3 /dev/sda

Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 2A6E6859-DCE0-4040-8683-15B51A3F0911
First sector: 1028096 (at 502.0 MiB)
Last sector: 53456895 (at 25.5 GiB)
Partition size: 52428800 sectors (25.0 GiB)
Attribute flags: 0000000000000000
Partition name: ''

sgdisk -i 4 /dev/sda

Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 0CBCDEFE-9467-4534-9EE2-7C142CCD3B09
First sector: 53456896 (at 25.5 GiB)
Last sector: 63942655 (at 30.5 GiB)
Partition size: 10485760 sectors (5.0 GiB)
Attribute flags: 0000000000000000
Partition name: ''

sgdisk -i 5 /dev/sda

Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 22C44A3F-B738-4050-8AD5-0556750A074B
First sector: 63942656 (at 30.5 GiB)
Last sector: 104855551 (at 50.0 GiB)
Partition size: 40912896 sectors (19.5 GiB)
Attribute flags: 0000000000000000
Partition name: ''

Best Answer

The first partition (1 MB) is supposed to be used as BIOS boot partition.

But, as you can see, it isn't. All of your partitions are MS Basic Data partitions, type EBD0A0A2-B9E5-4433-87C0-68B6B72699C7. GRUB's so-called "BIOS Boot Partition" (a rather misleading name as this partition is not understood or used by the actual machine firmware) is type 21686148-6449-6E6F-744E-656564454649 (an invalid GUID).

That's the partition type that GRUB is looking for. You don't have one of that type. Hence the error message saying so. It's as simple as that.

Further reading

Related Question