I have a BIOS-based system running Windows 7 on a MBR partitioned 1TB HDD. This HDD is partitioned as following:
As this disk is going to be full, my purpose is to migrate the existing installation to a new 3TB HDD, with following partitions:
As this partition is > 2TB, MBR cannot handle them and I switch the 3TB HDD partition table to GPT but:
So I investigated here and seems that GRUB is able to boot Windows 7 from GPT disks with a trick: a virtual HDD file (VHD) MBR formatted that contains the Windows boot files that, once loaded, load Windows from the GPT partition.
So I did the following:
In the VHD there's an MBR NTFS partition with the Windows boot files generated with commands:
bootsect /nt60 b: /mbr
bcdboot c:\Windows /s b: (NOT with /mbr flag as it's a GPT disk)
where B is the VHD file and C is a Windows 7 x64 installation running on a VM. The VHD partition is set as primary and active.
To avoid also some other issues, I generated also in the new 3TB/P3 the boot files with:
bootsect /nt60 e:
bcdboot c:\Windows /s e:
Where E is the 3TB/P3 partition.
I tried booting with grub using this manually edited grub.cfg:
menuentry "Win7 root+chain" {
set root=(hd0,gpt3)
chainloader +1
}
menuentry "Win7 vhd+chain" {
loopback loop (hd0,gpt2)/boot/bootmgr.vhd
chainloader +1
}
The first give me a Windows Boot Manager message:
"Error 0xc000000e File:\Boot\BCD Message: An error occoured while attempting to read the boot configuration data"
The second seems a Grub message
"Invalid signature"
May you please help me? I'm doing something wrong with Grub?
This answer summarizes the comments on the post in a more orderly manner.
While no answer was received for making Grub work in this context, I did find out that the BIOS of the motherboard in question, MOPNV10J, does support UEFI, as answered (link) by an Intel person called Dan.
With UEFI support, the 3TB disk can be formatted as GPT and the entire disk then becomes addressable.
Since the poster's BIOS does not support UEFI, the question now becomes how to update it to the latest Version 0542.
It turns out that updating to that version needs to be done in two steps:
Before starting, ensure first that you have the installation media for your current BIOS version, called "Recovery BIOS Update" in the release notes. Otherwise a botched BIOS update can brick the computer.
Had you tried on grub with this?
menuentry "Win7 vhd+chain" {
loopback loop (hd0,gpt2)/boot/bootmgr.vhd
set root=(loop)
chainloader +1
}
Or
menuentry "Win7 vhd+chain" {
loopback loop (hd0,gpt2)/boot/bootmgr.vhd
chainloader (loop)+1
}
And by the way, is /boot a folder inside the ext2 partition? or is it the ext2 partition itself? Also try without /boot inside the loopback:
menuentry "Win7 vhd+chain" {
loopback loop (hd0,gpt2)/bootmgr.vhd
chainloader (loop)+1
}
Hope something helps.
Long time ago i did something similar: Boot XP, Vista, 7, 8.1 & 10 on a one disk only system in GPT structure by using the VHD trick, memdisk & Grub4DOS for XP part... but do not remember excatly how.
You don't actually need to migrate to GPT. MBR stores the partition's starting offset and size as unsigned 32-bit integers so the real limit is 233 - 2 sectors. That means it's possible to have a 4TB MBR disk with 512-byte sectors or a 16 TB MBR disk with 4 KB sectors, as long as the last partition begins before the 232 mark and covers the whole remaining space. So you can have for example a 4 TB HDD with one 1 TB partition, one 1 TB minus 1 MB partition and one 2 TB partition
In your case you can have P0: 60 GB, P1: 1 TB, P2: remaining space, or P0: 1.5 TB, P1: 1.5 TB. Or change to any other combinations as long as the last partition size is smaller than 2TB and starts before 2TB
For more details read Make 3TB hard drive appear as two (2TiB+750GiB) with MBR
That said, migrating to GPT is safer, because GPT has checksums and a backup table to recover in case of failure
User contributions licensed under CC BY-SA 3.0