I am trying to move a 32-bit Vista installation onto a larger hard disk. I tried to do this using my normal method:
- Boot the system into an Ubuntu Live CD
- Backup the MBR using:
dd if=/dev/sda of=/some/backup/place bs=512 count=1
- Backup the entire partition using
dd
to a temporary external USB drive. (This system only has room for one hard disk to be installed) - Shutdown and install the new drive.
- Boot into the Ubuntu Live CD again.
- Restore the MBR onto the new drive from the backup using
dd if=/some/backup/place of=/dev/sda bs=512 count=1
. - Use
fdisk
to delete the partitions restored as part of the MBR, and create a new partition of the same size as the one to be restored, remembering to mark it bootable. (The reason for this is that the old drive had other partitions that I'm not interested in moving over.) - Restore the entire partition using
dd
, and check that the new partition can be mounted. - Reboot into the new drive and check that Windows is still happy. Run a disk check for sanity.
I have used this method dozens of times with various versions of Windows and it has always worked fine. This is my first time trying it with Vista and I find that it does not work correctly. The system will not boot from the new drive. I get a flashing cursor when I try to boot off the new drive, and nothing else.
Things I have tried:
- Using the method above, I backed up from
/dev/sda3
and restored to/dev/sda1
. I was concerned that moving the partition number might confuse the Vista bootloader, so I instead tried naming the new partition assda3
again (this can be done by simply specifying the correct primary partition number in thefdisk
stage above). This did not fix the non-booting problem. - I have also tried creating the new MBR from scratch (without reference to the backup) using "
dd if=/dev/zero of=/dev/sda bs=512 count=1 && lilo -M /dev/sda mbr
", then proceeding from step 7 above. This did not fix the problem.
I am at the stage where I am confident that the partition itself has been restored correctly. My Ubuntu Live CD can mount the partition just fine. My only remaining problem is to get the system booting from the new drive.
Does anyone know how the Vista bootloader differs from Windows XP, so I might debug why my above method hasn't worked?