5

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?

1
  • I suspect you're having a similar issue to mine, where the USB enclosure reports a logical sector size of 4096 while the SATA connection reports 512 bytes. See superuser.com/questions/410606/…
    – user12404
    Apr 16, 2012 at 16:18

3 Answers 3

2

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.
2
  • All that stuff applies and is good advice. The error was "Missing Operating System". I think I found the problem... knock on wood... something is wrong with the USB - SATA device. I put the 640G drive in the system and booted Linux... it was unreadable. I then rebooted with the 640 on the USB and it was perfectly readable. So now I'm using Acronis with the 250G drive on the USB and the 640 internal. Acronis isn't complaining anymore. I'll know in 4 hours or so if it worked.
    – mgjk
    Jul 21, 2011 at 13:41
  • The system booted to a blinking cursor, then I ran the MS utilities on the recovery CD. At least it recognized that I had a Windows distro. It failed a couple times and tried to assign D: to my C:, but mysteriously, after a couple attempts, it worked. The root cause here had something to do with the USB enclosure and maybe how it handled the 4096b sectors. It's very strange to me that a 4096b sector drive written in the enclosure, couldn't be read when SATA connected. But it's just a guess, it could be the ByteCC USB thing not working with the Scorpio... no idea. It works now. Yay!
    – mgjk
    Jul 21, 2011 at 15:14
0

You can't. A "clone" is an exact copy. Moving to a differing file system automatically means that it can't be a clone. In the same way, you can't "clone" an OS from an IDE drive to a SATA.

RAW means that there is no partition on the drive. They cannot be formatted in that state. They need a defined partition. But there should be no partitions at all before you use Acronis.

Don't do anything at all to the drive before using Acronis (or other tool) except to make sure it is empty. Do not create partitions and do not worry about any boot flags because they will be transferred along with everything else.

Sector count has nothing to do with any measure of the drive's size. If Acronis said the drive was smaller, it was simply incorrect. But the reason it was incorrect would provide useful information. Possibly, there was already a partition on the disk that was not the full size of the disk.

In any case, trouble will come if you use non-default cluster sizes. Keep them the same and your problems will be minimized.

What you have done so far should have succeeded. So something is certainly wrong. Did you remove everything from the drive before trying Acronis? You may have better luck if the drive is completely unallocated. Acronis will put the partition and file system there, so you do not need to create it ahead of time. If one was there already, then that is why Acronis "thought" the drive was too small.

The only other factor that I can see possibly causing this is if either drive was somehow initialized with a GPT partition rather than an MBR. If that rings a bell, let us know what the partition types are.

Also try cloning from a boot CD so that the OS's have nothing to do with the process. Parted Magic can clone from its OS after booting from CD or USB. Or use the Acronis CD.

Remember that in order for the drive to boot, it needs to be connected exactly the same way the original was since all the pointers in the MBR and partition tables are copies of the originals.

3
  • 1
    You are wrong in saying that you can't "clone" a disk. A disk can be cloned by doing a raw byte-copy to another disk, as long as the new disk is large enough. After the copy, the partition table and filesystems on the new disk will be fine - you can easily mount them. Jul 21, 2011 at 9:37
  • I let Acronis wipe the partition table of the target drive, it was completely stuck until I created a dummy partition on the disk. The dummy partition was the full 640GB. When I did successfully get Acronis to execute a full disk clone (the manual settings and automatic scaling settings all failed), it reboots Windows and begins the clone, then stops, reporting "INTERNAL ERROR: Attempt to write outside partition". Have you successfully used Acronis to clone a 512b sector disk to a 4096b sector disk?
    – mgjk
    Jul 21, 2011 at 12:14
  • It looks like it might be the USB enclosure getting confused with the 640GB drive. I'll know in a few hours. I tried the Acronis boot media with the 250 External and the 640 Internal. It's not complaining anymore. See the other comment thread for how I determined the USB device might be messed. Wish me luck...
    – mgjk
    Jul 21, 2011 at 13:43
0

I have copied Windows to a different disk successfully many times using Linux and ntfsclone. Suppose /dev/sda is the old disk and /dev/sdb is the new one.

First copy the partition table and the MBR and some extra megabytes.

WARNING: do this first and don't do it again. It copies more than just the MBR, in case Windows is storing some metadata there.

dd if=/dev/sda of=/dev/sdb bs=1M count=5

Run partprobe to make the kernel refresh partition info:

partprobe /dev/sdb

Now start some partition editor (fdisk, cfdisk, NOT parted/gparted) on /dev/sdb, and possibly extend the final partition to fill the remaining size of the disk. Don't try to move partitions (or move them by deleting and recreating them, but make sure they have the same parameters like bootable and fstype).

For each NTFS partition X, copy the initial few megabytes. This is needed to copy any metadata which ntfsclone does not deal with.

WARNING: don't do this again after you've initialized a filesystem (i.e. did ntfsclone) on this partition; it will corrupt the new filesystem.

dd if=/dev/sdaX of=/dev/sdbX bs=1M count=5

Now copy the NTFS partitions to the new disk:

ntfsclone --overwrite /dev/sdbX /dev/sdaX

Shut down, and before powering up, remove the old disk from the computer and never plug it back in, unless you've entirely erased it.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .