GPT drive not showing up as UEFI in bios

biosuefi

My MSI Z390 board is set to boot from Legacy + UEFI, but when I converted my MBR drive to GPT it didn't recognise it as a UEFI drive, despite it showing up as GPT in DiskPart. The same thing happens when its set to boot from UEFI only.

Is this most likely just a procedural error in the conversion step or something else? I reinstalled w10 from scratch after not being able to boot from the drive, and weirdly it didn't let me install on that disk because it was GPT – and my bios was still set to Legacy + UEFI.

(I converted using the aomei partition assistant because for whatever reason the mbr2gpt tool didn't want to work)

Best Answer

It's not enough for a disk to be GPT. (In fact, it's not actually required for a disk to be GPT – practically all UEFI-bootable USB sticks are MBR-partitioned. And vice versa, GPT disks are often used on BIOS systems.)

What really defines a disk as "UEFI" or "BIOS" is the kind of bootloader it has installed. To be a BIOS disk, it needs BIOS-compatible bootcode in the zeroth sector (alongside the MBR). And to be an UEFI disk, it needs an EFI System Partition (i.e. a FAT-formatted partition) in which the bootloader is installed as an *.efi file.

(These are not mutually exclusive, and usually OS install media support both.)

So merely changing the partition table won't bring the correct bootloader into existence – you need to do that later, somehow. For example, Windows has bcdboot that can be used to install both BIOS and UEFI bootloaders into a new disk, although I'm not sure if it's suitable for USB sticks. (And again, practically all UEFI systems require a FAT-formatted partition to start from.)

So if you have just changed the partition table format for your system disk:

  1. You probably have a small (100–200 MB) NTFS-formatted "Microsoft system partition", as most new Windows installations do. Repurpose it as the new "EFI system partition".

    • If you are using diskpart, delete the old partition, then simply create the new one as:
      diskpart> create partition efi
    • The partition needs to be FAT-formatted.
    • If you're using AOMEI or fdisk/gdisk, you'll need to set th correct "partition type GUID". (Note: Don't mix up "partition type GUID" with the regular "partition GUID".)

      The type-GUID is C12A7328-F81F-11D2-BA4B-00A0C93EC93B, but most tools let you select the correct type from a list.

    • Optionally the partition can have 'required' and 'hidden' GPT flags set.

  2. From the Windows install media, run bcdboot /v c:\windows to install the UEFI bootloader files into the newly made EFI system partition. The tool will also install the correct UEFI NVRAM bootloader entry, but if that part fails, the disk should still be bootable.
Related Question