Ben Hunter

Architect - Microsoft Enterprise Services - Redmond

BDD 2007 - Integrating Mass Storage Drivers into your XP image

BDD 2007 - Integrating Mass Storage Drivers into your XP image

  • Comments 107
  • Likes

After my previous blog about integrating mass storage drivers into Windows PE I have a number of requests about how to the same integrate drivers into XP their XP images. So here we go...

The key point to note about integrating mass storage drivers into your current XP image that that these must be integrated when the client is syspreped. You cannot add drivers to an image after it has been created. (This is a limitation of XP that is now solved with Vista).The rest of this post will detail how to integrate the Intel mass storage drivers into your image.

Download the drivers

The first part of the configuration process is the obtaining of the Mass Storage drivers. The drivers must be downloaded from the hardware vendor. The latest version of the Intel driver is located here.

Gather the Plug and Play ID’s

Once you have downloaded the driver you must identify the PnP ID's and the INF file that matches each PnP ID.

When you download a driver you will find that will include one or more INF files. These INF files will include the PnP ID's that it supports.

The Intel driver comprises of two INF files, IAAHCI.INF and IASTOR.INF, the lines in these files that identify the PnP ID's are listed below.

IAAHCI.INF

 

[ControlFlags]

ExcludeFromSelect=PCI\VEN_8086&DEV_2652&CC_0106

ExcludeFromSelect=PCI\VEN_8086&DEV_2653&CC_0106

ExcludeFromSelect=PCI\VEN_8086&DEV_27C1&CC_0106

ExcludeFromSelect=PCI\VEN_8086&DEV_27C5&CC_0106

ExcludeFromSelect=PCI\VEN_8086&DEV_2681&CC_0106

ExcludeFromSelect=PCI\VEN_8086&DEV_2821&CC_0106

ExcludeFromSelect=PCI\VEN_8086&DEV_2829&CC_0106

IASTOR.INF

[ControlFlags]

ExcludeFromSelect=PCI\VEN_8086&DEV_282A&CC_0104

ExcludeFromSelect=PCI\VEN_8086&DEV_2822&CC_0104

ExcludeFromSelect=PCI\VEN_8086&DEV_27C6&CC_0104

ExcludeFromSelect=PCI\VEN_8086&DEV_2682&CC_0104

ExcludeFromSelect=PCI\VEN_8086&DEV_27C3&CC_0104

ExcludeFromSelect=PCI\VEN_8086&DEV_2652&CC_0104

Copy the driver files

To automatically integrate the driver files into Windows XP a folder structure must be created to support the added files. These folders will then be referenced by the sysprep.inf file.

To create the folder structure

     1. Create the folder structure, .\Distribution\Control\<BUILDID>\$OEM$\$1\Drivers\IASTOR

Note <BUILDID> should be the Build ID of the build that is used to create your image.

     2. Copy the driver files previously downloaded into the newly created IASTOR folder.

Note  if you already use the $OEM$ functionality then simply add the files into the current folder structure.

Update the sysprep.inf file

Now that we have downloaded the drivers, created the supporting folder structure and identified the PnP ID’s for the mass storage driver we must update the sysprep.inf file used to create the master image.

To update the sysprep.inf file

     1. Open the ..\Distribution\Control\<BUILDID>\sysprep.inf file using Notepad.

Note <BUILDID> should be updated to be the Build ID of the build that is used to create your image.

     2. Update the BuildMassStorageSection entry in the  [Sysprep] section to equal YES.

     3. Update the [SysprepMassStorage] section to specify each PnP ID and it's corresponding INF file.

Note   This will require translating the information gathered from the INF files into the sysprep.inf format.

For example, the ExcludeFromSelect=PCI\VEN_8086&DEV_282A&CC_0104 gathered from the IASTOR.INF file would translate to PCI\VEN_8086&DEV_282A&CC_0104="C:\DRIVERS\IASTOR\IASTOR.INF".

The following excerpt provides an example of the updated sysprep.inf file.

[Sysprep]

BuildMassStorageSection = YES

[SysprepMassStorage]

PCI\VEN_8086&DEV_2652&CC_0106="C:\DRIVERS\IASTOR\IAAHCI.INF"

PCI\VEN_8086&DEV_2653&CC_0106="C:\DRIVERS\IASTOR\IAAHCI.INF"

PCI\VEN_8086&DEV_27C1&CC_0106="C:\DRIVERS\IASTOR\IAAHCI.INF"

PCI\VEN_8086&DEV_27C5&CC_0106="C:\DRIVERS\IASTOR\IAAHCI.INF"

PCI\VEN_8086&DEV_2681&CC_0106="C:\DRIVERS\IASTOR\IAAHCI.INF"

PCI\VEN_8086&DEV_2821&CC_0106="C:\DRIVERS\IASTOR\IAAHCI.INF"

PCI\VEN_8086&DEV_2829&CC_0106="C:\DRIVERS\IASTOR\IAAHCI.INF"

PCI\VEN_8086&DEV_282A&CC_0104="C:\DRIVERS\IASTOR\IASTOR.INF"

PCI\VEN_8086&DEV_2822&CC_0104="C:\DRIVERS\IASTOR\IASTOR.INF"

PCI\VEN_8086&DEV_27C6&CC_0104="C:\DRIVERS\IASTOR\IASTOR.INF"

PCI\VEN_8086&DEV_2682&CC_0104="C:\DRIVERS\IASTOR\IASTOR.INF"

PCI\VEN_8086&DEV_27C3&CC_0104="C:\DRIVERS\IASTOR\IASTOR.INF"

PCI\VEN_8086&DEV_2652&CC_0104="C:\DRIVERS\IASTOR\IASTOR.INF"

Recreate the Image

Once you have performed all of these tasks you must rebuild your image then sysprep and capture it. This is a bit of a hassle I know, but there is another solution, use Vista!

Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the Terms of Use.

Comments
  • Hello Ben,

    With what method do I rebuild my image after changing the sysprep.inf?  LTI?  ZTI?  By hand?

    Thanks

  • Everytime Intel releases a new mass storage chipset I receive the same call/email from from most of my

  • I've followed these steps for the LTI process and I can't get it to work.  After LTI runs and the machine reboots for the text setup I get BSOD when it gets to "starting windows".  I

    I've checked the drive during the LTI process and the driver set does get copied down from the driver library, but the folder name that gets created does match what we're specifying in the sysprep. (IASTOR is what I have in sysrep v.s. drivers\HDC\iaahc 6.1.0.1002 gets created).

    How do I rectify this situation?  It seems like the driver injection/detection is working as expected for the LTI portion, but the unattend.txt/sysprep.inf files are not correct.

    Any help would be much appreciated!

    -Aaron

  • Hi Ben,

    tried the steps above but Win XP image still goes into BSOD....

    I'm able to deploy the Win XP OS, drivers, applications and finally, capture an image of the build but when I try to deploy it, it comes up with BSOD. Any thoughts?

    thanks for your help!

  • What is the error you are receiving?

    Also are the HAL's compatible?

    Thanks,

    Ben

  • Ben,  

    you say to recreate the base or gold image which is fine.  an I correct in saying that when i bring this new image down to a machine that has the SATA drivers, it wont blue screen and give me the 7B error.  My questions is this, Id like to do a gold image on this machine with the sata drivers and it starts to work but upon the 1st reboot of the bdd, it gives me the stop 7B error.  any suggestions for me ?  

  • Ben Ive followed the instructions you give abot adding the sata drivers to sysprep and have created and wim that im trying to deploy to a machine with sata.  it loads pe, says its applying the image and upon re-boot, it gives me the bsod, 7b error.  any suggestions for me ?  Thanks In advance.

    Jared

  • Ben,

    followed your method to add the sata drivers to the base image, and i still receive the bsod 7b error when I apply this new image to the new machine witht he sata drive.  any suggestions for me?

  • Hi Ben,

    I'm using the latest intel matrix driver for a Precision 490.  The driver came out in June and I got it from the Dell 490 download site.  I'm using these pnp IDs in my sysprepmassstorage section... I am running sysprep from the 490.  XP will not load.  Keeps rebooting.  Any ideas?  Of course I turn off AHCI in BIOS and it boots just fine.  Thank you!

    BuildMassStorageSection=Yes

    [SysprepMassStorage]

    PCI\VEN_8086&DEV_2653&CC_0106=c:\drivers\pr490-sata\iaahci.inf

    PCI\VEN_8086&DEV_27C1&CC_0106=c:\drivers\pr490-sata\iaahci.inf

    PCI\VEN_8086&DEV_27C5&CC_0106=c:\drivers\pr490-sata\iaahci.inf

    PCI\VEN_8086&DEV_2681&CC_0106=c:\drivers\pr490-sata\iaahci.inf

    PCI\VEN_8086&DEV_2821&CC_0106=c:\drivers\pr490-sata\iaahci.inf

    PCI\VEN_8086&DEV_2829&CC_0106=c:\drivers\pr490-sata\iaahci.inf

    PCI\VEN_8086&DEV_2922&CC_0106=c:\drivers\pr490-sata\iaahci.inf

    PCI\VEN_8086&DEV_27C3&CC_0104=c:\drivers\pr490-sata\iastor.inf

    PCI\VEN_8086&DEV_2682&CC_0104=c:\drivers\pr490-sata\iastor.inf

    PCI\VEN_8086&DEV_27C6&CC_0104=c:\drivers\pr490-sata\iastor.inf

    PCI\VEN_8086&DEV_2822&CC_0104=c:\drivers\pr490-sata\iastor.inf

    PCI\VEN_8086&DEV_282A&CC_0104=c:\drivers\pr490-sata\iastor.inf

  • Well, It is working now.  I put in the id for PCI\VEN_8086&DEV_2652&CC_0106 and PCI\VEN_8086&DEV_2652&CC_0104.  My inf files do not list those ids.  Re-ran sysprep and this time sysprep did take 20 minutes.   Thank you for the blog.

  • Hi Jared,

    So you managed to sucessfully update Windows PE but you it is not working within Windows XP itself. This would suggest that there is something wrong with your sysprep file.  Have you copied the files to the correct location and are you sure that they are in the folder before sysprep starts?

    Thanks,

    Ben

  • Well, It is working now.  I put in the id for PCI\VEN_8086&DEV_2652&CC_0106 and PCI\VEN_8086&DEV_2652&CC_0104.  My inf files do not list those ids.  Re-ran sysprep and this time sysprep did take 20 minutes.   Thank you for the blog.

  • I think what you guys are missing is the Textmode folder.

    I came across the same problem myself, and I remember reading about the problem on the OEM website.  The situation is this: if you have an AHCI or RAID setup on the boot drive, you NEED to have the driver included into the text-mode portion of setup otherwise you'll get a STOP 7B error a few seconds after "Starting Windows" appears on the status bar.

    I personally tried manually pressing F6 and having a driver floppy made up with the EXACT SAME drivers as was included with the above advice, but the result ends up with an error message stating "The specified driver disk does not contain any relevent drivers" (or words to that effect).  After this, I realized that integrating the drivers was the only option.  After some experimentation with the OEM help, I found a way to fix it.

    The way to fix this is to do the following:

    Under the <Build ID>\$OEM$ folder, you should create a folder called Textmode.  This folder is used for the equivalent of an "F6 Floppy" for extra SATA, RAID, or SCSI drivers.  The default path/share will look similar to this:

    \\<server>\Distribution$\Control\<Build ID>\$OEM$\Textmode

    (substitute the name of your server/dist-system for <server> and build name for <Build ID>)

    Next, you have to edit the UNATTEND.TXT file in the <Build ID> folder and add the following:

    Under [MassStorageDrivers], add all of the required drive controller friendly names, as described in [SCSI] section in the TXTSETUP.OEM file for your driver pack.  For instance, in the Intel Matrix Storage v7.5 file, it'll look like this:

    [scsi]

    iaAHCI_ICH9R = "Intel(R) ICH9 SATA AHCIController (Desktop ICH9R)"

    iaStor_ICH8M = "Intel(R) 82801HEM SATA RAID Controller (Mobile ICH8M-E)"

    iaAHCI_ICH8M = "Intel(R) 82801HEM/HBM SATA AHCI Controller (Mobile ICH8M-E/M)"

    iaStor_ICH8R = "Intel(R) ICH8R/ICH9R SATA RAID Controller"

    iaAHCI_ICH8R = "Intel(R) 82801HR/HH/HO SATA AHCI Controller (Desktop ICH8R)"

    iaStor_ESB2 = "Intel(R) 631xESB/632xESB SATA RAID Controller (Server/Workstation ESB2)"

    iaAHCI_ESB2 = "Intel(R) 631xESB/632xESB SATA AHCI Controller (Server/Workstation ESB2)"

    iaStor_ICH7MDH = "Intel(R) 82801GHM SATA RAID Controller (Mobile ICH7MDH)"

    iaStor_ICH7DH = "Intel(R) 82801GR/GH SATA RAID Controller (Desktop ICH7R/DH)"

    iaAHCI_ICH7R = "Intel(R) 82801GR/GH SATA AHCI Controller (Desktop ICH7R/DH)"

    iaAHCI_ICH7M = "Intel(R) 82801GBM SATA AHCI Controller (Mobile  ICH7M/DH)"

    iaAHCI_ICH6M = "Intel(R) 82801FBM SATA AHCI Controller (Mobile  ICH6M)"

    After you copy out the friendly names, you have to modify the lines and strip out the short names, and add = "OEM" to the end of each as follows:

    [MassStorageDrivers]

    "Intel(R) ICH9 SATA AHCIController (Desktop ICH9R)" = "OEM"

    etc....

    Finally, you have to add a list of all of the files in your Textmode folder under the [OEMBootFiles] section so that it looks like so:

    [OEMBootFiles]

    ; This section is used to specify custom HALs, and also maps to the Mass Storage Device section

    iaahci.cat

    iaahci.inf

    iastor.cat

    iastor.inf

    iastor.sys

    txtsetup.oem

    As far as Ben's advice goes, it is needed for Sysprepping an image, but it doesn't seem to work for the text-mode portion of setup.  Additional (secondary) drive controllers that are NOT required by a system drive can have drivers added using BDD's built in support and don't need these extra instructions.  Also, as I experienced with some experimentation, if you plan on making fairly barebones installation images and want to do some customization before Sysprep, DON'T FORGET to add LAN drivers into BDD's interface for deployment to systems because Windows needs them immediately after installation to complete the automated setup parts.

    Hope that helps!

  • Hi Joe,

    Thanks for making this suggestion.  This post suggests ways to PREPARE an "image" with multiple mass storage drivers. It does not detail how to CREATE an "image" that needs extra mass storage drivers (during text-mode). Also please not that everyone who has made comments above managed to get the solution working.

    Thanks,

    Ben

  • Hi,

    I'm a little confused about this:

    .\Distribution\Control\<BUILDID>\$OEM$\$1\Drivers\IASTOR

    The path on the physical hard disk is:

    c:\sysprep\i386\$OEM$\$1\MSD\HPXW4400\

    Does this look right?

    The sysprep.inf file is in c:\sysprep

    I ask this because I'm getting registry permission errors when I try to reseal. My entry in the sysprep.inf file reflects this location too

    [Sysprep]

    BuildMassStorageSection = Yes

    [SysprepMassStorage]

    PCI\VEN_8086&DEV_2652&CC_0106="C:\MSD\HPXW4400\IAAHCI.INF"

    PCI\VEN_8086&DEV_2653&CC_0106="C:\MSD\HPXW4400\IAAHCI.INF"

    PCI\VEN_8086&DEV_27C1&CC_0106="C:\MSD\HPXW4400\IAAHCI.INF"

    PCI\VEN_8086&DEV_27C5&CC_0106="C:\MSD\HPXW4400\IAAHCI.INF"

    PCI\VEN_8086&DEV_2681&CC_0106="C:\MSD\HPXW4400\IAAHCI.INF"

    PCI\VEN_8086&DEV_2682&CC_0104="C:\MSD\HPXW4400\IASTOR.INF"

    PCI\VEN_8086&DEV_27C3&CC_0104="C:\MSD\HPXW4400\IASTOR.INF"

    PCI\VEN_8086&DEV_2652&CC_0104="C:\MSD\HPXW4400\IASTOR.INF"

    Cheers,

    Neil.