How to Clone Win7 from 512b sectors to 4096b sectors

I'm using a new Thinkpad and I'm trying to upgrade the drive from a 250GB to a 640GB. I grabbed a WD Scorpio Blue and a ByteCC USB/SATA adapter.

First I tried booting Linux and doing a dd if=/dev/sda of=/dev/sdd bs=4M . This failed. The partition table was invalid after it was written. Normally this would work, so I figure it has to do with the number of sectors on the disk.

I then tried manually creating the partitions and doing a dd if=/dev/sda1 of=/dev/sdd1 bs=4M, etc, etc. This resulted in something which was not bootable, and reading on "sector alignment" and stuff, I figure it's not the optimal way to do things.

So I went to try to do it the Windows way. I tried the WD edition of Acronis. It failed spectacularly, telling me that the target disk was smaller than the source (which in terms of sector count is probably correct)

After some searching, I then tried Casper. Casper seems to do a good job duplicating the disk, but it won't boot. So I created a Windows System Repair CD and booted...

The Windows System repair CD doesn't see the filesystems... it thinks the disks are "RAW" and need to be formatted.

Booting back on the 250 with the 640 mounted externally, chkdsk comes up clean. Everything is good. The filesystems look okay. The only thing I can think is weird is that Windows is insistent on assigning a drive letter to the partitions, which is a bit frustrating.

I'm at a loss as to how to troubleshoot this from here. It might be a simple Windows 7 boot thing at this point, so maybe somebody here has a much better idea of what I can try next. Any ideas?


You are correct in that you need to do the cloning at the filesystem level, because you can't do it at a lower level (i.e. using dd) if the disk geometry is completely different; but you must make sure to use a cloning utility which is compatible with Windows 7, as it uses NTFS in a compeltely different way than previous Windows system (lots of junction points).

Also, it's quite common for Windows 7 systems to have a small boot partition before the main system one, which actually is the bootable one and contains the Windows boot mnager; if this is the case, then you also need to carry that partition on to the new disk, as it's needed to properly boot the system. You normally don't see it in Windows Explorer because it doesn't have any drive letter assiged, so you can only see it in the Disk Management snap-in.

Last but not least, you need to have a valid bootable MBR on your new disk and correctly flag as active the bootable partition, otherwise the partition layout might be perfectly fine, but the system won't boot.

What I suggest is:

  1. Have a good look at your disk and check whether you have that small boot partition at the beginning of your current disk.
  2. Connect the new disk to a running system and have Windows initialize it; then partition and format it from Windows, creating one or two partitions depending on the layout of the original disk.
  3. Make sure the proper partition is flagged as active in the new disk; that would be the small boot partition if you have it, or the main system partition otherwise. Just be sure to have the new disk configured eactly as the old one.
  4. Use a cloning tool compatible with Windows 7 to clone the disk; if you have the small boot partition, make sure to clone that, too. Clone them on the corresponding partitions on the new disk.
  5. Now you should be able to boot your new disk. If it still doesn't work, come back here and tell us what error you are getting.