Upgrading system disk without reinstalling windows

Original system configuration
30G Seagate IDE C: single partition Windows XP bootable 90% full
30G Seagate IDE F: (FAT) + H: (NTFS)[page files] + a linux partition
(That fills one IDE controller)
Second controller has DVD reader + CD-RW + DVD
 
 
I want to replace the first drive with a bigger (500G) faster (7200 c.f. 5400) newer drive. So A western digital WD500AAKB-00Y5A0 500G from Umart for $128
 
Get
- clonzsilla liveCD http://www.clonezilla.org/
-  GParted live CD  http://gparted.sourceforge.net/livecd.php
 
(using antistatic wrist strap)
Disconnect drive 2 and reboot to confirm you know which is the system drive (repeat procedure if needed :-) The system will say it has no master drive )
 
Set jumpers on new drive to be slave and install in place of drive 2.
(I left the new drive hanging, with original drives left in original mounts.)
 
Boot windows. (Not sure if this is needed or just a long waste of time, since the partitioning work is ignored later).
 
My computer -> right click -> Manage
Disk management. Should see something like
[Disk 1 (unknown)][unallocated]
Right click the Disk 1 and select Initialize disk
Then right click [unallocated] -> New partition
"basic", "max" (i.e. whole disk), assign letter "f".,
 
Reboot to clonezilla live CD.
/dev/hdc == /livemedia which is the CD
/dev/hda == disk 1, the windows system disk (C:)
/dev/hdb == disk 2, the new disk (F:)
There is a little setup of language ad keyboard/keymap (I used defaults)
Run the Clonezilla live
Select the disk/partition -> disk/partition option
select source = hda and target = hdb
 
Choose the defaults. The target should be bootable, there should be an existing boot record. It'll ask to install grub, but recognises the existing boot loader.
Clonezilla will produce for you a 30G partition on the new 500G drive
 
At this stage I let windows reboot. I think this was wrong, as it detected a system configuration change and rebooted a second time.
 
Instead reboot to gparted (the partition editor).
This goes through some keyboard, language, X setup. Let it pick the defaults (rather than try to get high res on the live CD).
 
When X eventually starts gparted starts which is a GUI partition editor.
Select HDB (not the default HDA which is the original system disk). It should show 300G of 500G
Select "resize/move"
Drag the right arrow of the disk space to far right. (Leave left alone as this has boot sector offsets etc).
Apply (you may want to watch the details).
 
shutdown to halt (I used the command line "shutdown -h now", as the exit button didn't work for me).
 
Crack open the case again, reconfigure the new disk from slave to master (actually I picked master with slave present, but I noticed the original disk was just set to master).
The original second drive hasn't changed from being slave.
Connect up new drive into the bay of the original system drive and reattach drive 2.
 
reboot windows
let it disk check the new c: drive. (The resize of the partition has to be checked by Windows).
 
It may detect a changed system configuration, and want to reboot.
 
You should have you new system disk!