I thought I'd finally relegated Windows to life inside a virtual machine, but alas, I came across some games I'd like to play that just won't do in that setup. In the days since Windows last occupied its own specified chunk of my disk I've done a lot of flipping around with different OSes and Linux distributions, and it turned out that while I had free space, I was at the maximum number of partitions supported by MBR partition tables. So, believing that it should Just Work® here in the 21st century and having performed a cursory examination of Google that indicated it should work, I converted over to a GUID partition table (GPT) and attempted to install Windows 7. Lo and behold, Windows 7 only works with GPTs on EFI systems, and mine uses BIOS. I should have noticed this in my earlier research, but that would have just been too easy.
So, I'm left with the choice of converting back to MBR and trying to jigger my partition layout around such that I can make one for Windows, or going with a hybrid MBR. The latter sounds more appealing. Unfortunately, there are lots of scary warnings about hybrid MBRs on the Internet, so I have a few questions.
Will Windows do something ugly to my bootloader since it's really on GPT but it will see MBR? Will that require more repair than booting from a LiveCD and running grub-install
? Is there anything I need to avoid other than making sure I never touch partitioning tools on Windows? Will my computer explode? Would lots of headaches be saved if I just switched back to MBR? (I understand that Macs use hybrid MBRs with Boot Camp, so hopefully this won't be as difficult as I'm making it out to be.)
Best Answer
There's no need to regress to the MBR partitioning scheme, nor even any need for a "hybrid MBR" partitioning scheme. (I have such on one of my machines, and attest that they are not for the fainthearted.)
Windows 7 can use EFI-partitioned discs just fine. It just cannot be bootstrapped from them on non-EFI machines, and (to protect you from yourself, in Microsoft fashion) refuses to install on them in the first place. In your case, your problem is a fundamental deficiency of your firmware, and isn't really a Windows issue at all. Your firmware doesn't understand the EFI partition table.
Such understanding is necessary if one wants to convert one's operating system bootstrap to be on EFI partitioned discs. One's firmware needs to know to put up the EFI Boot Manager menu, and then load the selected operating system loader program from the EFI System Partition. Your firmware isn't very smart, though, and doesn't know how to do much more than load the "master boot record" and run its bootstrap code. On an EFI partitioned disc there's no code in the "master boot record" to crank through the rest of the EFI boot process.
At best, right now, you have MBR bootstrap code that is equally as ignorant of the EFI partition table scheme as your firmware, and that's expecting to find and process an MBR partition table. What you need is two things:
The first is not impossible. There are two sources of such EFI-partitioning-aware MBR bootstraps:
Both will look for the "active" partition, and load and run its VBR, effectively bootstrapping in the old PC/AT and PC98 way but with an EFI partition table. Failing those two, the best alternatives that you'll get right now are:
The second (persuading Windows 7 to install on an EFI partitioned disc) is achievable, with the x86-64 flavour of Windows 7 at least. It's complex, not officially supported by Microsoft, and requires making what is effectively your own Windows installation disc with the EFI version of Microsoft's Boot Manager on it, and running that from within an EFI boot environment somehow. (If you have UEFI DUET installed, this is fairly easy, of course.) But it convinces Windows 7 that it its installer was bootstrapped on an EFI system, which criterion the installer uses to determine whether it will allow Windows to be installed on an EFI partitioned hard disc.
Of course, there's the additional, final, complexity of, once installed, bootstrapping Windows 7 from day to day; because the installer, knowing that you have EFI firmware, will have installed the EFI version of Microsoft's Boot Manager. You'll thus need either:
Pretty much all of this nonsense just goes away if one has EFI firmware in the first place. Windows 7 (x86-64) will install happily, and an EFI Boot Manager that understands the EFI partition table and that will load and run Microsoft's Boot Manager (as well as any other EFI-bootable operating system) directly from its ordinary program image file in the EFI System Partition, comes with the firmware.