Is there any way to boot Windows 7/8 using BIOS on GPT?
Well, things have changed since I first asked this question. For one, my PC is now UEFI based, so I don't have this problem anymore. Well, sort of. I had interest on pulling a similar setup on my laptop (GPT partitions, etc.) I finally managed to get a working Tianocore UEFI DUET setup, and it was about as painfully simple as it gets!
This assumes you want all shiny, new setups. If you want to actually convert your old setup, good luck. Actually, good luck either way, as this is a spotty operation in any situation.
A word of warning: If you're a fan of quick boot times, you may want to rethink this decision. Not that UEFI DUET is slow, but it adds another stage to your boot process, so if your BIOS/POST isn't fast, you may not like this.
Without further ado:
You'll want a Linux setup. I used Fedora 16 off of a USB stick (with UNetBootin) and I'd highly recommend that because it practically works out of the box. You need a USB drive anyway, so don't plan on continuing without one.
Grab some UEFI DUET builds. Without question, the best place to get this is here. The actual build tarballs are under the master branch of the first repository, here. Give it the old
tar -xf
.Setup your partitions. You should reserve 200 MB somewhere on the disk (very much preferably the beginning, and first partition.) You can format it with FAT32, but we're reformatting it later. Just make sure it shows up as a partition. You should use GPT here.
Now install any additional software you may need. On the Fedora Live distribution, I found I needed
yum install gdisk
. I think that was it.Now go into the extracted builds directory.
chmod +x ./duet-install
and./duet-install -64 -F -m /dev/sda1
(where/dev/sda1
is your desired EFI system partition.)Cross your fingers and reboot. With any luck, you'll see the TianoCore logo in just a few moments. If so, you are probably good! You'll need to setup your OS installation files on a USB drive - Tianocore does not support CD-ROM/DVD-ROM drives out of the box (and I don't know of any drivers for it.)
You may also desire some UEFI shell binaries to play with. I found some here. Didn't test with Tianocore yet, though.
Anyway, thanks for everyone who tried to help.
I managed to boot Windows 8.1 on a GPT disk under a BIOS setup WITHOUT a second MBR disk.
The story was: My laptop was under a BIOS + GPT setup, with only Arch Linux installed. Recently I need to accomplish some tasks in Windows (which virtual machines cannot) so I am struggling to install Windows under my existing BIOS + GPT setup. According to Milind's answer, I managed to install Windows boot files (Boot, bootmgr, etc) to a (small) MBR USB drive. And each time I power on my laptop with that USB drive plugged in, I can boot into Windows 8.1, after which the drive can be plugged out safely.
The drawback is obvious: I need to carry a USB drive with me to boot Windows. So I was always trying to get rid of it.
After trying with different methods, I finally found the memdisk module of syslinux project worked.
- You need to give up Windows boot manager.
- You do not have to install syslinux. Only the memdisk module (a 26 kB file) is needed.
- You can use many bootloaders to load this module, in my case, my favourite bootloader GRUB (version 2).
Here is the outline of how-to:
- Partition your GPT disk to meet GRUB's needs, that is to say, a small partition to embed core.img. Detailed link
- Install GRUB to that small partition.
- Install Windows with
imagex
.And use.bootsect
andbcdboot
to install Windows boot files into a small MBR USB disk. Usedd
ordd_rescue
to clone your small USB disk into a disk image. (Your USB disk has finished its job.) The image may be too big for memdisk to load, you can mount it and shrink the filesystem / partition in it.- According to my test, you do not need a physical MBR disk to install Windows boot files into. You can create a vhd file and treat it as a physical disk.
After installing Windows boot files into the vhd, you can convert it to raw (dd style) disk image using tools provided by VirtualBox or QEUM.When created withtype=fixed
, the vhd file is just a normal raw disk image (dd-style) with 512 Bytes footer. The footer will be recognized as "unpartitioned space" and will be ignored, so atype=fixed
vhd file can be directly fed to MEMDISK without converting and thus boot the Windows. - Configure GRUB to use memdisk to load this disk image.
- Windows will boot.
A detailed how-to can be found in my reboot.pro reply to Milind's thread.
If you even have a small spare drive, you can boot Windows(either 32 or 64 bit) from GPT on BIOS. A floppy will do.
Boot into the Windows install/repair disc.
Create the system drive on the small disk/floppy, and use bcdboot
to put your boot files on the the newly created drive on the small disk. Add a bootsector with bootsect
. Change the {bootmgr}
device
to boot
. Boot from small disk.
Steps are detailed here.