Windows 10 Installer creates NTFS EFI Partition

efiuefiwindows 10

Right now I have a brand new Arch Linux installation up and running. Now I found out that I need to dual boot with Windows – something I already did in the past, but now I think I'm stuck.

There is only one HDD installed, with a GPT scheme and the following partitions:

Partition table

Last time I had to install Windows I made the exactly partition scheme, just had to run the installer and Arch's boot manager would find the entry and allow me to choose a system. Now the Windows 10 installer is working differently – after choosing the free space instead of finding the existing EFI partition and using it, it creates a new one and errors out saying the current EFI partition was formatted as NTFS. I have no idea of what to do since I don't know much about the Windows installer and there doesn't seem to be any obvious way to tell it what partitions to use.

Best Answer

This sounds like Windows doesn't like the FAT32 that's currently written to your /dev/sda1. Perhaps the disk once used NTFS and Windows is finding some remnants of that...? Working off of that (admittedly iffy) hypothesis, you might try this:

  1. Back up the ESP. A file-level backup using cp, zip, tar, or something similar should suffice.
  2. Unmount the ESP.
  3. Wipe the ESP completely clean with dd, as in dd if=/dev/zero of=/dev/sda1. Be very careful with this command! If you specify the wrong partition, you'll be in deep trouble!
  4. Create a fresh FAT filesystem on /dev/sda1, as in mkdosfs /dev/sda1.
  5. If necessary, update /etc/fstab with the new filesystem's "UUID" or label.
  6. Type mount -a to re-mount the partitions, including the ESP.
  7. Use df /boot to double-check that the ESP is correctly mounted.
  8. Copy the backup back to the freshly-formatted ESP.
  9. Double-check that your critical files (your kernel and boot loader) are present.

You could do something similar using a Windows emergency disk if you wanted to ensure that the filesystem is something that Windows will find palatable; but I don't know the specific commands you'd use to do this in Windows.

Another possibility that occurs to me is that Windows might have a bug that's causing it to misidentify your ESP because of its size. For a while, Windows created an ESP of just 100MB, IIRC. I think that it's bigger than that now, but it's still well short of the 1GiB ESP you've got. Presumably you've made it that size because you're storing Linux kernels there, which is a common practice among Arch users. This size is therefore quite justified, but if it is causing Windows to flake out, you might need to delete the ESP and re-create it as two partitions -- either create two ESPs, one for Windows and one for Arch; or create one /boot partition for Arch and another ESP for both OSes, to be mounted at /boot/efi in Arch. Personally, I think this explanation is far less likely than that Windows is seeing stray (old) data or some slightly malformed FAT data structures and is flaking out. After all, Windows can handle much larger FAT data partitions. Still, if re-creating the ESP as outlined earlier doesn't work, splitting it into two partitions might be worth trying.

Related Question