It seems like people have had trouble getting some of the newer models of machines working in native SATA AHCI mode. I'm referring to the infamous STOP 0x0000007B INACCESSABLE_BOOT_DEVICE BSOD. My goal with this article is to consolidate all the fixes, information, and tips I have come across on this topic, and to provide a process that can be followed to support AHCI mode in your XP image. The workaround most people tend to use is to turn off SATA support in the BIOS and run in IDE mode. The IDE drivers are natively supported in XP and don't require you to make a new image for support. This works for some people while others would rather be using the AHCI SATA support to receive the full performance benefits. This article is for the latter.
NOTE: This information is not to fix your PXE problems. You must have your MSD and NIC drivers working in the pre-boot environment before you worry about getting your XP image to work. There are many articles on Juice and in the AKB about driver support for PXE with DOS, WinPE, and Linux. This article assumes you already have PXE working with your hardware.
Before you start, it is also worth noting the new feature of DS 6.9 SP1 called DeployAnywhere. This should allow you to get around having to create a new image to support your MSD. If you aren't using DS 6.9 SP1 yet, or if you just want to fix your image like me, then you can follow the process in this article.
Typically the IDE mode performance degradation isn't visible to the end user. Recently we received a new HP laptop model where this wasn't the case. Since I needed to re-build our image for XP Service Pack 3 anyways, there was no better time to integrate the Intel Matrix Storage drivers into the image. Due to the fact the vast majority (if not all) PC manufacturers are using the Intel Matrix Storage drivers, this article includes how to add support for all versions Intel offers to date. This same process will work to support new controllers beyond ICH10 as they are developed.
Extracting the Drivers
The first step to supporting the Intel Matrix drivers is to download, and extract the necessary files. The XP Professional drivers can be downloaded from Intel at the following link:
http://downloadcenter.intel.com/filter_results.aspx?strTypes=all&ProductID=2101&OSFullName=Windows*+XP+Professional&lang=eng&strOSs=44&submit=Go%21
Intel Matrix Storage Manager Version 8 (7/17/2009)
Download iata89enu.exe and run the following command to extract the files:
iata89enu.exe -A -P C:\extract\IMver8
The files you will need are in C:\extract\imver8\winall\Driver\*.*
Copy these files to C:\drivers\MSD\IMver8
NOTE: The Intel Matrix version 8 drivers alone will be enough for most cases and you may choose to skip the next two driver packages if you want. I would recommend adding the Intel Matrix drivers version 5 and 7 as well for legacy controller support. If you choose not to use the version 5 or 7 drivers, be sure to remove them from the list in your sysprep.inf.
Intel Matrix Storage Manager Version 7 (2/5/2008)
Download iata78_enu.exe and run the following command to extract the files:
iata78_enu.exe -A -Pc:\extract\IMver7
The files you will need are in C:\extract\imver7\Driver\*.*
Copy these files to C:\drivers\MSD\IMver7
Intel Matrix Storage Manager Version 5 (2/29/2008)
Download iata55_enu.exe and run the following command to extract the files:
iata55_enu.exe -a -a -p c:\extract\IMver5
The files you will need are in C:\extract\imver5\Driver\*.*
Copy these files to C:\drivers\MSD\IMver5
Adding the Drivers to the Image
You can choose to copy the drivers to your image wherever you would like. For my example I use C:\drivers\MSD. Once all the necessary drivers have been extracted, copy them to the reference machine for the gold image. In the end you should have the following directory structure on your gold image:
C:
-drivers
--MSD
---IMver8
------iaAHCI.cat
------iaAHCI.inf
------iaStor.cat
------iaStor.inf
------IaStor.sys
------TXTSETUP.OEM
---IMver7
------iaahci.cat
------iaahci.inf
------iastor.cat
------iastor.inf
------IaStor.sys
------TXTSETUP.OEM
---IMver5
------iaahci.cat
------iaahci.inf
------iastor.cat
------iastor.inf
------iaStor.sys
------TXTSETUP.OEM
Modifying your Sysprep.inf File
Now that the drivers have been added to the image you can update your sysprep.inf file to support them. I created the entries below starting with the latest version of the Intel Matrix drivers so that a device would use the newest drivers available. This is why versions 7 and 5 only have a few entries in the list below. Append the following information to the [SysprepMassStorage] section in sysprep.inf
; APPEND ADDITIONAL SATA CONTROLLER DRIVERS HERE
PCI\VEN_8086&DEV_24DF&CC_0104=%systemdrive%\drivers\MSD\IMver5\iastor.inf ; Intel(R) 82801ER SATA RAID Controller
PCI\VEN_8086&DEV_25B0&CC_0104=%systemdrive%\drivers\MSD\IMver5\iastor.inf ; Intel(R) 6300ESB SATA RAID Controller
PCI\VEN_8086&DEV_2652&CC_0104=%systemdrive%\drivers\MSD\IMver7\iastor.inf ; Intel(R) 82801FR SATA RAID Controller
PCI\VEN_8086&DEV_2652&CC_0106=%systemdrive%\drivers\MSD\IMver7\iaahci.inf ; Intel(R) 82801FR SATA AHCI Controller
PCI\VEN_8086&DEV_2653&CC_0106=%systemdrive%\drivers\MSD\IMver7\iaahci.inf ; Intel(R) 82801FBM SATA AHCI Controller
PCI\VEN_8086&DEV_2682&CC_0104=%systemdrive%\drivers\MSD\IMver8\iastor.inf ; Intel(R) 631xESB/632xESB SATA RAID Controller
PCI\VEN_8086&DEV_27C3&CC_0104=%systemdrive%\drivers\MSD\IMver8\iastor.inf ; Intel(R) 82801GR/GH SATA RAID Controller
PCI\VEN_8086&DEV_27C6&CC_0104=%systemdrive%\drivers\MSD\IMver8\iastor.inf ; Intel(R) 82801GHM SATA RAID Controller
PCI\VEN_8086&DEV_2822&CC_0104=%systemdrive%\drivers\MSD\IMver8\iastor.inf ; Intel(R) ICH8R/ICH9R SATA RAID Controller
PCI\VEN_8086&DEV_282A&CC_0104=%systemdrive%\drivers\MSD\IMver8\iastor.inf ; Intel(R) 82801HEM SATA RAID Controller
PCI\VEN_8086&DEV_2681&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) 631xESB/632xESB SATA AHCI Controller
PCI\VEN_8086&DEV_27C1&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) 82801GR/GH SATA AHCI Controller
PCI\VEN_8086&DEV_27C5&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) 82801GBM SATA AHCI Controller
PCI\VEN_8086&DEV_2821&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) 82801HR/HH/HO SATA AHCI Controller
PCI\VEN_8086&DEV_2829&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) 82801HEM/HBM SATA AHCI Controller
PCI\VEN_8086&DEV_2922&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) ICH9 SATA AHCI Controller
PCI\VEN_8086&DEV_2929&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) ICH9M-E/M SATA AHCI Controller
PCI\VEN_8086&DEV_3A02&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) ICH10D/DO SATA AHCI Controller
PCI\VEN_8086&DEV_3A22&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) ICH10R SATA AHCI Controller
PCI\VEN_8086&DEV_3B29&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) PCHM SATA AHCI Controller 4 Port
PCI\VEN_8086&DEV_3B2F&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) PCHM SATA AHCI Controller 6 Port
PCI\VEN_8086&DEV_3B22&CC_0106=%systemdrive%\drivers\MSD\IMver8\iaahci.inf ; Intel(R) PCH SATA AHCI Controller
As necessary, run sysprep.exe -bmsd. Once complete you can run sysprep.exe -mini -reseal -quiet to seal the image. If you receive any errors at the end of sysprep.exe running, it is due to the path in sysprep.inf not matching the location where you put the drivers.
When sysprep is sealing your image it adds entries for your MSD's to the CriticalDeviceDatabase section of the registry (HKLM\SYSTEM\CurrentControlSet\Control). This is necessary for the device to be recognized before the OS is laid down. This is also the reason you cannot easily inject newer SATA controller drivers as they come out in the future. It is recommended to create and sysprep a new gold image when you need to support new MSD drivers.
Hopefully with this information you can stop those annoying Blue Screens and have better overall support in your environment for your native SATA drivers if you choose to use them.