You're operating under the misapprehension that PKs are tied to ESPs; they aren't. The Secure Boot cryptographic features require that individual boot loader files be signed, but those files are stored on ordinary FAT filesystems that are themselves not signed, encrypted, or otherwise cryptographically interesting. A signed boot loader file can be moved from one partition to another and continue to work just fine, at least from a Secure Boot perspective. (Moving such a file may cause it to fail because it's been separated from critical configuration files or the like, of course, but that's another matter.)
To more directly answer the question, the EFI specification imposes no limit on the number of ESPs that may be present on a computer or on a hard disk; you could have dozens of them if you wanted to, and that would be fine from the EFI's perspective. Unfortunately, Microsoft is not so flexible; Windows officially supports just one ESP per disk (maybe per computer; I'm a bit foggy on that detail). I don't know about Windows 8, but the Windows 7 installer will flake out if it sees more than one ESP on a disk; the installation will proceed part of the way and then fail. (At least, that's what it's done in my tests.) That said, if you create a second ESP after installing Windows, Windows will continue to boot and operate correctly, at least as far as I've seen. (I can't promise that it won't misbehave if you use some particular feature, though.)
Overall, then, in a multi-boot environment, I recommend restricting yourself to one ESP. I also recommend making it rather large -- 550MiB is my usual recommendation, for assorted technical reasons having to do with rare bugs and FAT sizes. That said, if you've got an existing installation with a smaller ESP, it's probably fine to just stick with it. In either case, Linux and Windows can share a single ESP just fine. I do, however, recommend backing it up early and often -- definitely back it up before installing a new OS. Because the ESP holds your boot loaders, an accidental erasure of it will render your computer unbootable.
Since you have copied all the required files to boot/efi/EFI/Microsoft/Boot
, you need to rebuild windows loader configuration. You will need a windows bootable usb or dvd (64 bit will be preferable).
1 : Boot from your bootable medium. Make sure that you are booting in UEFI mode.
2 : At the first screen (where it asks you to choose language and keyboard), press Shift + F10
. This will give you a command prompt.
3 : Type diskpart
and then list disk
(to list all available disks). Select appropriate hard drive by typing select disk #
.
4 : Now type list partition
and make sure that there is a partition of type system
(the efi partition). Select this partition by typing select partition #
and assign a temporary drive letter to it, say G
by typing assign letter=G
.
5 : Just to make sure that drive letter is correctly assigned, type list vol
. You should see a volume with drive letter (Ltr) as G
& file system (Fs) as FAT32
6 : Close diskpart
by typing exit. Make sure that you are in X:\Sources
.
7 : Type cd /d G:\EFI\Microsoft\Boot\
. Now run these commands one by one.
bootrec /scanos
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
bcdboot C:\Windows /l en-us /s G: /f ALL
8 : Close the command prompt and restart the system. You should now be booting into windows.
9 : Of course you may not or don't have the grub menu now. But installing grub is far more easy. Follow any one of these links for more info.
link1, link2, link3
Sources : 1, 2, 3, 4.
EDIT - Make sure that you remove the drive letter G assigned to efi partition as soon as possible to keep it from showing up in My Computer.
Best Answer
Run
efibootmgr -v
from Linux (which will show your EFI boot menu) and compare each entry's GUID with the GPT partition GUIDs that are shown bypartx /dev/sda
orlsblk -o name,partuuid
.You can also actually look inside and check what files are in each partition, as each ESP is just a standard mountable FAT32 partition:
Windows always creates a
\EFI\Microsoft
directory and installs BOOTMGR (bootmgfw.efi) as its boot manager. You'll also find files like "BCD".Linux will generally install
grubx64.efi
orsystemd-bootx64.efi
as the boot manager. Generally, this will be the partition that Mint automatically mounts at /boot/efi.In case you're only able to boot Windows but not Linux:
From an Administrator console, use
mountvol /s
to temporarily assign a drive to your current EFI system partition.Then use
bcdedit /enum {bootmgr}
to verify that the EFI boot entry pointing to Windows BOOTMGR is indeed pointing to the same disk (it should show the letter that you just assigned):Now the important partition is shown as S: in DiskMgmt, and the unimportant partition is still shown without a drive letter.
(You can also use
bcdedit /enum firmware
to list all EFI boot menu entries. This is the rough Windows equivalent of 'efibootmgr -v' from Linux.)