I upgraded Laura's laptop's hard drive capacity from 30 Gb to 80 Gb in an overnight operation using FOSS. I used the System Rescue CD to boot into a LiveCD version of Linux, amazingly quickly. (Hint: use the framebuffer options when working on laptops.) Using an external Western Digital 250 Gb hard drive we picked up on sale at Staples, I made a mount point and mounted the external drive there:
mkdir /mnt/external
mount -w /dev/sda1 /mnt/external
I copied the hard drive contents (with compression) from the internal to external hard drive using partimage, following the onscreen prompts. Before removing the old hard drive, I copied the Master Boot Record from the internal drive to a file on the external drive using a tip I picked up from Knoppix Hacks, using the 'dd' command to copy the sector. Removing the old hard drive and installing the new was easy: one screw hold the hard drive carriage in place, and four screws the hard drive to the carriage. Booting into System Rescue CD again, I used QtParted to create a partition matching the old one in size. (Yes, real men can partition the drive using the command-line parted, but since I had the GUI available, I took advantage of it.) Then, I ran partimage again to copy the external image back to the new hard drive, the dd command to restore the MBR and qtparted to activate and resize the partition to the full capacity of the drive. When the machine rebooted, Windows 2000 forced a CHKDSK as the partition size wasn't what it last saw, and it completed without error. Whew! Up and running! About six hours clock time elapsed, but only ten minutes of keyboarding or so.
I wish all the hardware upgrades went this smoothly!