I have not been able to find a clear answer to this question, so...
I have an old BIOS/MBR machine that runs Windows 7 very well, BUT, being BIOS/MBR it does not return the correct disk size for a drive larger than 2Tb.
For those unfamiliar, BIOS reports a 4Tb disk as 1867Gb whether GPT or MBR, because the sector count wraps around in a 32bit counter, EFI fixes this by providing a 64bit sector count, but old BIOS machines cannot run EFI firmware.
SO, does Grub2Win poke the disk and send a corrected EFI compatible 64bit sector count to Windows or not ? If not, could it ? Having been started by the Windows boot loader is it already too late to fix this issue ?
If Grub2Win can bypass the BIOS reported disk sizes, and allow the full capacity of a 4Tb disk to be correctly partitioned as a GPT device, this could be used as a solution for the numerous reported issues with large disk support in old machines.
On a similar BIOS/MBR machine running Linux the same 4Tb disk is correctly supported, but is this down to Grub2 correcting the BIOS reported size or some magic elsewhere in Linux ? On this machine a 3Tb disk is reported by the BIOS as 801Gb, but 3Tb by Linux (Mint 17.3)
JulTan
Last edit: John Travell 2018-10-08
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I believe that Grub will report the disk size correctly at boot time before you start Windows.
I don't have a 4TB disk on a BIOS machine, so I can't run the test to be sure.
You can test this by selecting the Grub2Win "Boot Information and Utilities" option at boot time. Then run the "Scan Disk Drives and Partitions" utility. This will report on the partition sizes that Grub detects. I would be interested in your findings.
When you boot a BIOS machine, you select either Windows or Grub2Win. If you run Windows, GNU Grub is not involved, so Windows alone calculates the disk sizes it displays.
Hope this helps,
Dave
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK, Grub3Win installed. On first boot it reported the 4Tb disk as 1.8Tb, and since I do not trust diskpart to fix it I booted a Linux USB, gparted reported a gpt error and offered to fix it, after which the partition showed up as 4Tb. Reboot to windows via g2w, now windows sees the disk as 3.63Tb, which is correct for the way windows reports disk sizes.
Somewhat justifies my own machine running Linux, but that choice is not for everyone...
JulTan
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Sorry for the delay, I do not have regular access to the relevant machine.
I suspect it was a corrupted GPT, but if so, the corruption occurred when Windows initialised the disk. Remember, the BIOS reports the drive as modulo 2tb, almost certainly wrap around on a 32 bit field.
Windows takes the BIOS reported disk size and sets the partition table accordingly. Hence 1.8tb. The BIOS is still reporting 1.8tb, and so is G2W. extract from disk report follows...
Disk 2 Style GPT Size 1.8 TB Used 1.8 TB 100% ST4000DM004-2CV104
Partition 1 Size 128 MB ** Microsoft Reserved **
Partition 2 Letter E: FS NTFS Size 1.8 TB -70% Full Label = E(new4tbdisk)
Note the negative % full... Clearly G2W is reporting what the BIOS sees.
A motherboard this old will never get a modern BIOS.
Does G2W make any attempt to examine the disk itself to determine the device size ? it does not look like it on the evidence I have so far.
JohnT
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Grub2Win is a Windows application and as such, it uses standard Windows API calls to get disk and partition sizes. If the BIOS or Windows is lying, Grub2Win will be misled and report the incorrect sizes.
Grub2Win was never intended to be a partitioning utility. It simply reports what the BIOS/OS tells it.
Hope this helps,
Dave
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have not been able to find a clear answer to this question, so...
I have an old BIOS/MBR machine that runs Windows 7 very well, BUT, being BIOS/MBR it does not return the correct disk size for a drive larger than 2Tb.
For those unfamiliar, BIOS reports a 4Tb disk as 1867Gb whether GPT or MBR, because the sector count wraps around in a 32bit counter, EFI fixes this by providing a 64bit sector count, but old BIOS machines cannot run EFI firmware.
SO, does Grub2Win poke the disk and send a corrected EFI compatible 64bit sector count to Windows or not ? If not, could it ? Having been started by the Windows boot loader is it already too late to fix this issue ?
If Grub2Win can bypass the BIOS reported disk sizes, and allow the full capacity of a 4Tb disk to be correctly partitioned as a GPT device, this could be used as a solution for the numerous reported issues with large disk support in old machines.
On a similar BIOS/MBR machine running Linux the same 4Tb disk is correctly supported, but is this down to Grub2 correcting the BIOS reported size or some magic elsewhere in Linux ? On this machine a 3Tb disk is reported by the BIOS as 801Gb, but 3Tb by Linux (Mint 17.3)
JulTan
Last edit: John Travell 2018-10-08
Hi John,
I believe that Grub will report the disk size correctly at boot time before you start Windows.
I don't have a 4TB disk on a BIOS machine, so I can't run the test to be sure.
You can test this by selecting the Grub2Win "Boot Information and Utilities" option at boot time. Then run the "Scan Disk Drives and Partitions" utility. This will report on the partition sizes that Grub detects. I would be interested in your findings.
When you boot a BIOS machine, you select either Windows or Grub2Win. If you run Windows, GNU Grub is not involved, so Windows alone calculates the disk sizes it displays.
Hope this helps,
Dave
OK, Grub3Win installed. On first boot it reported the 4Tb disk as 1.8Tb, and since I do not trust diskpart to fix it I booted a Linux USB, gparted reported a gpt error and offered to fix it, after which the partition showed up as 4Tb. Reboot to windows via g2w, now windows sees the disk as 3.63Tb, which is correct for the way windows reports disk sizes.
Somewhat justifies my own machine running Linux, but that choice is not for everyone...
JulTan
Hi again John,
I'm trying to understand this.
Was the actual cause of the size reporting issue a corrupt GPT header all along?
How did the GPT get messed up to begin with?
Linux does have superior disk examination and repair tools compared to Windows.
Thanks,
Dave
Sorry for the delay, I do not have regular access to the relevant machine.
I suspect it was a corrupted GPT, but if so, the corruption occurred when Windows initialised the disk. Remember, the BIOS reports the drive as modulo 2tb, almost certainly wrap around on a 32 bit field.
Windows takes the BIOS reported disk size and sets the partition table accordingly. Hence 1.8tb. The BIOS is still reporting 1.8tb, and so is G2W. extract from disk report follows...
Disk 2 Style GPT Size 1.8 TB Used 1.8 TB 100% ST4000DM004-2CV104
Note the negative % full... Clearly G2W is reporting what the BIOS sees.
A motherboard this old will never get a modern BIOS.
Does G2W make any attempt to examine the disk itself to determine the device size ? it does not look like it on the evidence I have so far.
JohnT
Hi again John,
Grub2Win is a Windows application and as such, it uses standard Windows API calls to get disk and partition sizes. If the BIOS or Windows is lying, Grub2Win will be misled and report the incorrect sizes.
Grub2Win was never intended to be a partitioning utility. It simply reports what the BIOS/OS tells it.
Hope this helps,
Dave