Moving Windows XP From One Drive to Another

I was recently helping a friend move their XP install over to a new hard drive without having to re-install XP or any of their programs.

The situation is this, she previously had an 80gb drive with XP installed on it, and a secondary 250gb drive. She bought a 750gb drive and wanted to move the contents of the 250gb to the 750gb and then move Windows from the 80gb to the 250gb.

Normally I would just re-install everything if it was me moving the install, so I haven’t had to do this before.

First off we installed Partition Magic and formatted the 750gb drive and backed up the contents of both the 250gb drive and the 80gb drive to it.

Now that we had everything safely on the 750gb drive, I got to have full control of the computer to do my thing without her perched on my shoulder watching everything I do.

So, I wiped the 250gb drive and tried to copy the 80gb drive onto it as an 80gb partition. I tried this a couple of times with no luck. It kept informing me that the file system on the 80gb drive was corrupt. I ran chkdsk on it from the command line within Windows with the chkdsk /F switch to attempt to fix any errors. This confirmed that there were problems but it couldn’t fix them since many of the files were in use.

Booting into the recovery console with the Windows XP CD allowed me to run chkdsk /F again with none of the files being used and so it was able to run through and fix everything. I also ran chkdsk /R just to be sure that there was nothing else that /F didn’t fix and then booted back into Windows.

Running Partition Magic again I tried to copy the drive across to the new partition on the 250gb drive again. This time, it went over perfectly but alas there were still problems.

Partition Magic added the second Windows install to the boot manager, so it could be selected upon booting up. Regardless of which install you select, it would boot fine, however, if you unplugged the 80gb drive, it would fail to boot giving the error that <windows root>system32]hal.dll was either corrupt or missing and to re-install.

Booting back into the 80gb install, it was obvious that hal.dll was there, so I copied it from the 80gb onto the 250gb and tried again. Same error.

It then occurred to me that perhaps the problem stemmed from the 250gb install being marked as L: instead of C:. So, booting back into the 80gb, I switched the drive letters around so the 250 was C: and the 80 was L:. Unfortunately, this didn’t seem to make any difference at all and the above error was still occurring when trying to boot to the 250gb install without the presence of the 80gb install.

That’s when I found some great information on what hal.dll is and what you can do about it if it is missing or corrupt. Most of what was on there was irrelevant to the problem I was having, but there was one piece of information that was just what was needed.

When running the recovery console after booting from the XP CD, enter the following to remove the Boot.ini file, fix the configuration and rebuild it:

  1. Attrib -H -R -S C:Boot.ini
  2. DEL C:Boot.ini
  3. BootCfg /Rebuild
  4. Fixboot

I had to do it slightly differently to this though. Unfortunately, I couldn’t apply all of the switches to the Boot.ini attributes at once. Thus I had to run through each of them individually like so:

  1. Attrib -H C:Boot.ini
  2. Attrib -R C:Boot.ini
  3. Attrib -S C:Boot.ini

After that though, everything worked a charm. I could boot straight into the Windows install on the 250gb drive without the presence of the install on the 80gb drive.

So that’s it, it’s really a lot simpler then I expected, though it did take a bit of fiddling around to get it right.

I understand that to do something similar in Vista could be a fair bit more complicated as Partition Magic does not yet work with Vista and the boot manager is setup differently.

I hope this helps someone else who’s having similar issues. Let me know how you go.

Leave a comment