Switching Storage Controllers w/o Reinstalling Windows

One of the trends in personal computing these days is the prevelance of more options for hard disks and RAID systems than have been available in the past. As a result, many people want to move towards one of these systems as an upgrade, but at the same time want to avoid the hassle of reinstalling Windows and all applications. This has been exceedingly difficult and in some cases even impossible do to. However, with this guide, you’ll be able to perform this task in most cases with most hardware configurations.

What You Can and Cannot Do With This Guide

This guide is applicable to the person who has Windows currently starting up from one hard disk/hard disk controller combination, and wants to start that same Windows installation up from a different hard disk/hard disk controller on the same computer. For instance, you may want to upgrade from a single-disk installation of Windows to a RAID installation, or from an IDE drive to a SCSI drive, or from an IDE drive to a native-mode SATA drive. In general, this guide will work for any situation where the mass storage controller that has to be used for Windows startup is going to change.

This guide is NOT for adding another drive or controller to an existing system when the Windows installation doesn’t move from it’s existing controller. That is a much easier task and can be done with standard driver installation and the Disk Management utility in Windows. This guide is NOT for moving a Windows installation to completely different hardware (like changing your motherboard). There are some procedures posted on the Internet for that already. The guide is NOT for moving a hard drive within a system where the disk controller that is being used either does not change or uses the same drivers as the old one, or where Windows already has built-in drivers for the new controller (like a standard IDE controller).

Windows and Mass Storage Controllers

Windows treats all mass storage controllers the same way. Whether it’s a standard IDE controller, SATA controller, SCSI controller, or RAID controller, Windows has to have a driver for it in order to use it. Once Windows has a driver installed for the controller, Windows can start up from a hard drive attached to that controller as long as the machine’s BIOS can use the controller as the boot device.

When installing Windows for the first time on a system, most of the time no concern need be given to the mass storage controller, because in the past, 90% of the time, the storage controller is a standard IDE controller which Windows already has drivers for on its installation CD. Windows will detect the standard IDE controller and use it’s own drivers for it, thus enabling Windows to start up from the IDE controller.

If Windows does not have a driver on its CD for your system, the Windows text-mode setup program tells you that Windows cannot find a mass storage controller in your system, and prompts you to insert a manufacturer-supplied driver disk. This is the method to install mass storage controller drivers for most SCSI, RAID, and now some SATA controllers. Windows reads the driver off the floppy disk, and uses that driver to start up after installation.

If any situation arises where Windows does not have a driver installed for the mass storage controller you’re starting up from, you will get a blue screen STOP error, usually with the error STOP 0x0000007B (INACCESSIBLE_BOOT_DEVICE). If you’ve ever tried to copy a Windows installation from one controller to another with one of the partition copy tools and then tried to start it up, this is probably what you got.

The key item in this procedure that makes it work is that the procedure loads drivers for a storage controller that Windows will start up on before moving Windows to that storage controller. Once Windows has seen the storage controller and has had drivers loaded for it, Windows can now use that storage controller as the startup controller.

Requirements to Proceed

To proceed with this procedure, you will need the following:

* The Windows installation that you want to move must be Windows 2000 Pro, 2000 Server, 2003 Server, or XP.
* The old hard drive controller is currently installed in the system, drivers for it are installed in Windows, and the hard drive holding the current Windows installation is attached to that controller, and Windows currently starts up in this configuration.
* You will need some type of tool to copy a partition from one drive to another if you will be moving the Windows installation to a different hard drive as well as a different controller. The recommended tools are: Norton Partition Magic, Norton Ghost, Acronis True Image, or BootIt Next Generation/Image for DOS. There are a few other products out there as well. Be aware that Partition Magic will only run on Windows 2000 Pro or Windows XP – it does not support copying partitions containing a server operating system. For copying server partitions, I recommend Norton Ghost.
* You need the ability to have both the old disk controller and the new disk controller installed in the machine at the same time. If you can’t do this for whatever reason, there is a work-around that will be addressed later in the guide.
* If you will be copying the startup Windows partition to a different drive, the disk controllers involved in the copy operation must support Extended INT13h extensions so that they can be seen by the partition copy software. (Most SCSI and RAID controllers, and all modern IDE/SATA controllers support this).
* You need drivers for the new disk controller already downloaded and decompressed (if required) on your C: drive.
* You need to prepare a DOS-mode startup media for the partition copy program you will be using. For Partition Magic, you can boot the Partition Magic CD. For Norton Ghost, you need to create a Ghost boot floppy. For Acronis True Image, you can boot the Acronis True Image CD. For BootIt Next Generation/Image for DOS, create a startup floppy.

Disclaimers

This procedure carries some risk. It is not possible to forsee all possible hardware combinations, and there may be some that this procedure doesn’t work on. There is a risk of losing your data, all the way from minor problems to loss of the entire hard drive. As with any procedure where data loss is a risk, having a current backup of your data is strongly advised. I can’t be responsible for data loss, and I don’t guarantee that this procedure will work in all situations, nor that it will work at all times.

Procedure

This procedure assumes you’re using a different hard disk as well as a different disk controller. If you’re changing the disk controller only, skip steps 13-18 and just move your hard drive to the new disk controller in place of those steps.

1. Backup all important data. Use a different hard drive other than the ones that will be used in this procedure, or backup to a network storage device or tape drive.
2. Shut down the system (power off).
3. Install the new disk controller in the system, but do not connect any drives to it.
4. Power on the system, go into the system BIOS.
5. Make sure in the boot order, that your original disk controller and hard drive are still set to be the boot device.
6. Save changes in the BIOS if necessary, and restart the system.
7. Allow your existing installation of Windows to start up.
8. Once Windows is started up and has reached the desktop, the Found New Hardware wizard should start, indicating that the system wants to install drivers for the new disk controller.
9. Install the drivers according to the manufacturer’s directions. Make sure you’re installing the correct driver. Many manufacturers provide a driver package that has drivers for several different, but similar products. Make sure you pick the driver for the exact disk controller that you have installed in the system.
10. When you’re done, Windows may ask you to restart. Do so now.
11. After the restart, check Windows device manager, make sure your new disk controller appears in the device list (under IDE ATA/ATAPI Controllers if it’s an IDE/SATA device, or under SCSI and RAID Controllers if it’s a SCSI card or RAID device). Make sure there is no yellow exclamation point or red X on the device. Double click it to make sure Windows says that the device is working properly.
12. Shut down the system (power off).
13. Attach your new hard drive(s) to the new disk controller.
14. If your new controller is a RAID controller and your intention is to create a new RAID array for your Windows installation, power on the system, go into the RAID BIOS Utility and create the RAID array on the new drives according to the manufacturer’s directions.
15. Power on the system and start up the DOS-mode partition copy utility that you have, either from CD or floppy.
16. You should now see the existing Windows partition on your old disk controller/hard disk, and a blank area on the new disk controller/hard disk/RAID array. Following the manufacturer’s directions for your partition copy utility, copy the partition from the old drive to the new drive/array.
17. Exit the partition copy utility and shut down the system (power off).
18. Remove the old hard drive from the old disk controller, but leave the controller installed.
19. Power on the system, go into the system BIOS. Make sure that in the boot order, the new disk controller is set as the startup device.
20. Save changes to the BIOS, and restart the system.
21. Windows will now start up on your new disk controller & hard drive.
22. Once started up and at the desktop, go into Device Manager.
(Note: steps 23-25 should not be done if the old disk controller will be hosting other drives, such as a second hard drive or CD/DVD).

23. Right-click and uninstall the old disk controller (under IDE ATA/ATAPI Controllers if it’s an IDE/SATA device, or under SCSI and RAID Controllers if it’s a SCSI card or RAID device).
24. Shut down the system (power off).
25. Remove the old disk controller from the system (or disable it in the system BIOS if it’s a motherboard-embedded device).

Congrats, your system is now starting up on a different disk controller.

Example

Earlier in the guide, I mentioned that you need to be able to install both the old and new disk controllers in the system for the procedure to work. There is a work-around if this isn’t possible. What you do in this case is use an intermediate disk controller, and perform the procedure twice. 😯

Let’s use an example for a typical scenario. Let’s suppose I have a motherboard with an Intel ICH7R south bridge (this south bridge chip is typically paired with the 975X north bridge chip). I currently have my Windows installation installed on a single 120GB SATA hard drive connected to the ICH7R, and the ICH7R is currently in native SATA (AHCI) mode. I want to move the existing Windows installation to a RAID-0 configuration, where the ICH7R is in RAID mode, using two new 150GB WD Raptors.

The problem with this move is that the ICH7R can be in SATA mode or RAID mode, but can’t be in both at the same time. Thus, we can’t have both the old controller and the new controller installed simultaneously. What we will do in this case is install an inexpensive SATA PCI card, like the Promise SATA300 TX2plus, move the Windows installation to that controller using the procedure above (1st pass), change the ICH7R to RAID mode, install the Raptors, create the RAID array, and then move the Windows installation from the Promise card to the RAID array using the procedure above again (2nd pass).

So, step-by-step:

1. Backup all important data. Use a different hard drive other than the ones that will be used in this procedure, or backup to a network storage device or tape drive.
2. Shut down the system (power off).
3. Install the Promise SATA300 TX2plus disk controller in any PCI slot, but do not connect any drives to it.
4. Power on the system, go into the system BIOS.
5. Make sure in the boot order, that the ICH7R disk controller and 120GB SATA drive are still set to be the boot device.
6. Save changes in the BIOS if necessary, and restart the system.
7. Allow the existing installation of Windows to start up.
8. Once Windows is started up and has reached the desktop, the Found New Hardware wizard should start, indicating that the system wants to install drivers for the Promise SATA300 TX2plus disk controller.
9. Install the drivers according to Promise’s directions. Make sure you’re installing the correct driver.
10. When you’re done, Windows asks you to restart. Do so now.
11. After the restart, check Windows device manager, make sure the Promise SATA300 TX2plus disk controller appears in the device list (under IDE ATA/ATAPI Controllers). Make sure there is no yellow exclamation point or red X on the device. Double click it to make sure Windows says that the device is working properly.
12. Shut down the system (power off).
13. Since the old connection to the ICH7R was SATA, and the Promise card also supports a single SATA drive, we don’t need another hard drive, nor do we need to copy the partition. Simply unplug the 120GB SATA drive from the ICH7R and reconnect it to the Promise SATA300 TX2plus.
14. Power on the system, go into the system BIOS. Make sure that in the boot order, the Promise SATA300 TX2plus disk controller is set as the startup device.
15. Save changes to the BIOS, and restart the system.
16. Windows will now start up on the Promise SATA300 TX2plus disk controller & 120GB SATA hard drive.
17. Once started up and at the desktop, go into Device Manager.
18. Right-click and uninstall the ICH7R driver (under IDE ATA/ATAPI Controllers – it will be listed as Intel 82801FR SATA Controller).
19. Restart the system.
20. Go into the system BIOS, change the ICH7R from SATA mode to RAID mode.
21. Allow the existing installation of Windows to start up.
22. Once Windows is started up and reached the desktop, the Found New Hardware wizard should start, indicating that the system wants to install drivers for the ICH7R in RAID mode.
23. Install the drivers according to Intel’s directions. Make sure you’re installing the correct driver.
24. When you’re done, Windows asks you to restart. Do so now.
25. After the restart, check Windows device manager, make sure the ICH7R RAID mode disk controller appears in the device list (under SCSI and RAID Controllers). Make sure there is no yellow exclamation point or red X on the device. Double click it to make sure Windows says that the device is working properly.
26. Shut down the system (power off).
27. Attach the two 150GB Raptors to the ICH7R disk controller using SATA cables.
28. Power on the system, go into the Intel Matrix Storage Manager RAID BIOS Utility (Ctrl-I).
29. Create a RAID-0 array using the two 150GB Raptors, making a 300GB virtual disk.
30. Restart the system and start up the DOS-mode partition copy utility that you have, either from CD or floppy.
31. You should now see the existing Windows partition on the Promise SATA300 TX2plus disk controller and 120GB SATA drive, and 300GB of space on the RAID array attached to the ICH7R. Following the manufacturer’s directions for your partition copy utility, copy the partition from the 120GB SATA drive to the 300GB RAID-0 array. You will either need to resize the partition afterwards to 300GB (Partition Magic) or define the size of the destination partition as 300GB before the copy (Ghost).
32. Exit the partition copy utility and shut down the system (power off).
33. Remove the 120GB hard drive from the Promise SATA300 TX2plus disk controller, but leave the controller installed.
34. Power on the system, go into the system BIOS. Make sure that in the boot order, the ICH7R/RAID array is set as the startup device.
35. Save changes to the BIOS, and restart the system.
36. Windows will now start up on the RAID-0 Raptors on the ICH7R.
37. Once started up and at the desktop, go into Device Manager.
38. Right-click and uninstall the Promise SATA300 TX2plus disk controller (under IDE ATA/ATAPI Controllers).
39. Shut down the system (power off).
40. Remove the Promise SATA300 TX2plus disk controller disk controller from the system.

Testing
I have tested this procedure using the following:

* An Intel D925XCV motherboard (925X north bridge, ICH6R south bridge)
* Windows 2000 Server
* A 120GB SATA Maxtor drive installed on the ICH6R in SATA/AHCI mode, holding the Windows 2000 Server installation.

1. I moved the Windows 2000 Server installation to an Adaptec 29160LP SCSI card with a 9 GB Seagate Cheetah SCSI drive.
2. I removed the Maxtor 120GB, changed the ICH6R to RAID mode, installed two 74GB WD Raptors, and created a 148GB RAID-0.
3. I then moved the Windows 2000 Server installation to the 148GB RAID-0.
All steps were successful. Norton Ghost was used as the partition copy utility.

References

My primary impetus for trying and deveoping this procedure is a Microsoft support KB article entitled Stop 0x0000007B error after moving the Windows XP system disk to another computer. This article says within it that installing a mass storage controller driver before moving the Windows installation will work. This is what I decided to test.

Some other Microsoft KB articles that deal with this, and other related issues are:

Moving a Windows Installation to Different Hardware
How to troubleshoot “Stop 0x0000007B” errors in Windows XP
How to perform an in-place upgrade (reinstallation) of Windows XP

Conclusion

I hope this procedure works for you and gives you additional options for your mass storage scenarios.