Can't Install Windows on EFI systems

I want to format my Computer that currently have this partition

  • Disk 0 Partition 1 // Formatted
  • Disk 0 Partition 2 // Formatted
  • Disk 1 Partition 1 // Formatted
  • Disk 1 Partition 2
  • Disk 1 Partition 3

but after I format the partition and try to install the Windows, I got a warning like this

Windows cannot be installed to this disk. The selected disk has an MBR partition table. On EFI systems, Windows can only be installed to GPT disks.

What should I do to install the Windows again? If it's possible, without having to format or delete the other 2 partition that's not formatted yet

I'm using 1 HDD and 1 SSD


Solution 1:

Please read this answer completely before doing anything!

Converting without data loss is possible. For the theory, read this. To do this, you need gdisk, AKA GPT fdisk. It’s contained on the GParted LiveCD, so I’ll go with that.

After booting you’ll end up with a screen somewhat like this: GPT after boot

In this image, I have already identified the hard disk I want to modify: /dev/sdb. The panel on the left (accessible via View → Device Information) shows I have a “msdos” partition table (AKA MBR). Remember the device name (/dev/sdb in my case), because we’ll need it. Close GParted.

Now, open a Terminal and type the following command, replacing /dev/sdb with the disk you want to modify:

sudo gdisk /dev/sdb

gdisk will explain in a complain-ish message that it didn’t find a valid GPT and converted the existing MBR table to GPT:

Gdisk

In my screenshot, I already executed the p (print) command, which shows the disk layout gdisk would write. Double-check that everything looks okay! This is very important. If anything looks wrong, immediately quit with q (quit)! Otherwise, you might destroy data.

If you find everything to be acceptable, type w (write) and confirm with y.

Congratulations, you have now converted MBR to GPT while keeping all partitions.

However, your work is not done. To be able to boot, you’ll need an EFI System Partition. This is a special FAT32 partition that holds boot information. Its recommended size is 200 MiB.

If you don’t have that much space, you’ll have to shrink one of the partitions.

Once again start GParted. On the correct disk, select some unallocated space of enough size and create a FAT32 partition. Apply these changes.

New FAT32 partition

Now, right-click on the FAT32 partition, select “Manage Flags”. Select “esp”, this will also automatically select “boot”. This change takes effect immediately.

After that, start your Windows Setup (in UEFI mode, naturally), and you’ll be able to go through with the installation.

“Upgrading” to UEFI

Follow the steps above, then continue with this answer. You’ll need an installation medium for this.

Since the steps are slightly different, here’s the gist of it:

Fire up Windows Setup, press ShiftF10 to get a command prompt.

Assign a drive letter in diskpart:

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     C   System       NTFS   Partition    119 GB  Healthy    Boot
  Volume 1                      FAT32  Partition    100 MB  Healthy    System   <-- EFI System Partition

DISKPART> select volume 1
...
DISKPART> assign letter=b:
...
DISKPART> exit

Restore boot info, bootrec may or may not be necessary:

b:
bootrec /fixboot
bcdboot c:\Windows /l en-US /s b: /f ALL

And you’re done. Simply abort setup (don’t press the PC’s Reset button, it’s bad for data integrity) and it’ll boot with UEFI.