I have a virtual machine containing Windows XP SP3.
When I resized the VHD file (and the embedded partition), and tried booting, I got:
A disk read error occurred Press Ctrl + Alt + Del to restart
The partition is indeed active.
The partition starts at sector 63 (it also did so before the problem) of cylinder 1, head 1, and is marked as type 0x07 (NTFS)
My host OS reads the VHD and the partition completely fine
I'm interested in knowing the cause rather than the fix. So "re-format the disk", "reinstall Windows", etc. aren't valid solutions.
It's a virtual machine after all... I have nothing to lose, so I don't care about fixing it.
I just want to know what's causing this problem, in case I run into it again on a physical machine (which I have done before).
I made a sample VHD file illustrating (almost) the same problem which you can download here.
To reproduce the problem:
Download the file (it's highly compressed, be careful!), and try booting it in VirtualBox (or some other VM). Notice that you'll be told "Error loading operating system". (While the error is different, it's the same issue.)
Now try mounting the VHD in Windows's Disk Management, and running
BootSect.exe /NT60 X: /MBR, where
X:is the drive letter of the mounted volume. (The location of the tool is likely to be
C:\boot\bootsect.exe, but if it's not there on your system, then you'll need to find it somewhere else...) Now un-mount it, and try booting. The boot should now proceed correctly. (Although it won't find Hal.dll, at least you know it's working.)
Now do the same thing as the last step, but use
/NT60. You will now be greeted with the first error -- indicating that the Windows XP loader doesn't like the disk.
So my question is: Why?