"GPT detected. Please create a BIOS-Boot partition" while using boot-repair

Solution 1:

First, the bios_grub flag in parted or GParted is a way to identify a BIOS Boot Partition. GRUB 2 uses this partition to hold part of its boot code when the computer boots in BIOS mode. It's normally about 1MiB in size, although it can be smaller in some cases. Most importantly, if Boot Repair re-ran the GRUB installer after you set the bios_grub flag on your Linux root (/) partition, you may have trashed that partition. Thus, before you do anything else, I recommend you:

  1. Remove the bios_grub flag from your Linux root (/) partition.
  2. Test your Linux root (/) partition with fsck (or equivalent functionality in GParted or other GUI tools). If the partition has errors, fix them or restore your system from a backup. Only once you're sure that you can mount the partition and use it normally should you proceed.

Second, you had this problem because you booted your emergency disc in BIOS/CSM/legacy mode rather than in EFI mode. You need to learn how to control your computer's boot mode. You can usually do this via a boot manager that's accessed by hitting Esc or a function key early in the boot process (before GRUB appears); but there's no standardization on how to access this boot manager or what options it provides. Thus, you may need to experiment to figure this out.

Third, if you can figure out how to boot your live CD in EFI mode, Boot Repair should fix the problem. Alternatively, you should be able to use a CD-R or USB flash drive version of my rEFInd boot manager to get Linux booted. Once Linux is up and running, you should be able to use efibootmgr to restore GRUB as the default boot loader, but the details depend on how it's configured now. Briefly, you must use the -o option to efibootmgr to set GRUB's entry as the first one. This question and answers cover the issue from a different angle. Instead of restoring GRUB, you could consider installing rEFInd to your hard disk, too.


EDIT: Try using my rEFInd boot manager: Use the USB flash drive or CD-R image to create a suitable medium and boot from that. This should give you an option for Windows and at least one option for Linux. If you can boot both Windows and Linux, install the Debian package of rEFInd in Linux. This should switch the computer to use rEFInd by default, and you should be able to boot everything normally.

Solution 2:

You can handle this issue as follows:

  1. Start Gparted.

  2. Identify the boot partition. Mine is the first 16.00MiB on my system disk.

  3. Delete the partition (you will not want to delete the wrong partition and lost all the data on it! Stop if you don't know what you are doing!).

  4. Create a new partition (do not format it to any filesystem), apply the settings.

  5. Flags the new partition as bios_grub using Manage Flags option.

Now, try boot-repair again.