I needed to move Windows XP from a 160GB PATA hard drive to a 164GB SATA hard drive because the PATA hard drive was reporting bad blocks. For this technique to work, it is essential to have the destination disk to have a capacity larger or equal to the source disk.
The customer no longer had the installation media (it was a legitimate Fujitsu-Seimens Windows XP Home copy complete with licence key on top of the case). I was worried that my OEM XP Home wouldn't work with the licence key on the top of the case.
I thought I'd try and use dd which is documented here
I used ploplinux for no particular reason other than I had the ISO. Any Live CD will do provided it has dd (all flavours do).
Once booted, I checked that the disks were the right way round - that the IDE disk was /dev/hda and the SATA disk /dev/sda by checking the capacities
# fdisk -l /dev/hda
# fdisk -l /dev/sda
Next for the copying across:
# dd if=/dev/hda of=/dev/sda bs=32256
This took about 2 hours. I then booted the Windows XP Home (SP2) recovery console
The new hard disk booted perfectly first time. Time for my aging copy of Norton Ghost to be recycled.