BDD 2007 – Integrating Mass Storage Drivers into your XP image

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.



















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.


BuildMassStorageSection = YES















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 (107)

  1. Anonymous says:

    Qualche giorno fa avevo scritto di BDD e MDT, segnalando come ancora non fosse possibile distrubiore

  2. Anonymous says:

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

  3. Anonymous says:

    MDT provides a quick and easy way of sysprepping and capturing a WIM for deployment. What happens if

  4. Anonymous says:

    Q. What additional files are needed to deploy Windows XP SP2 with BDD 2007? A. In addition to the Windows

  5. Ben Hunter says:

    Hi Nick,

    If you use BuildMassStorageSection = Yes then it will build all drivers as well as the ones you specify manually.

    If you have any errors in the SysprepMassStorage section then it is likely that you will not be able to deploy your image to any client.



  6. Ben Hunter says:

    Hi Corne,

    You are right, however swapping HALs is not supported. So you either take the unsupported option or you create an image for each HAL type.



  7. Ben Hunter says:

    I think that should be possible. Just take you image add the drivers to the appropriate folders and run sysprep again.



  8. Ben Hunter says:

    Hi Mike,

    I don’t mention that aproach anywhere in this post.

    This shouldn’t be an issue as we don’t use the [OEMBootFiles] section



  9. Anonymous says:

    I know that this doesn’t probably belong in this thread. Please if not just address it to the right one.

    Here is the problem. We are still on BDD2.5 and moving to Microsoft Deployment in the next few months. That being said we are now having a problem we never encountered before and not able to get any help anywhere. We are trying to creat an image for the new Dell T3400 and the GX755 and the BDD process starts installs the OS and on the first reboot always comes back with the following error: FILE MININTSYSTEM32BIOSINFO.INF COULD NOT BE LOADED THE ERROR CODE IS 14 PRESS ANY KEY TO EXIT. No matter what we try we arent able to get past this error and we are running out of ideas.

    Some of the changes we have done are as follows:

    in the unattendsourcexpprosp2i386 we edited the txtsetup.sif and added the following lines


    PCIVEN_8086&DEV_2653 = "iaStor"

    PCIVEN_8086&DEV_27C5 = "iaStor"

    PCIVEN_8086&DEV_27C1 = "iaStor"

    PCIVEN_8086&DEV_27C6 = "iaStor"

    PCIVEN_8086&DEV_27C3 = "iaStor"

    PCIVEN_8086&DEV_2681 = "iaStor"

    PCIVEN_8086&DEV_2682 = "iaStor"

    PCIVEN_8086&DEV_2821 = "iaStor"

    PCIVEN_8086&DEV_2822 = "iaStor"

    PCIVEN_8086&DEV_2829 = "iaStor"

    PCIVEN_8086&DEV_282A = "iaStor"

    PCIVEN_8086&DEV_2922 = "iaStor"


    iastor = iastor.sys,4


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

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

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

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

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

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

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

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

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

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

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

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


    iastor.sys = 1,,,,,,4_,4,1,,,1,4

    we added the drivers in the textmode folder

    also we edited the unattend.txt file to:


    ; Used when custom disk drivers must be specified

    ; Enter the description name =Retail or OEM

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

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

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

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

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

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

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

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

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

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

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

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


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





    our sysprep.inf is set to


      BuildMassStorageSection = yes


    ;PCIVEN_8086&DEV_2652&CC_0104 = "c:mstor1iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_27C3&CC_0104 = "c:mstor1iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2682&CC_0104 = "c:mstor1iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_27C6&CC_0104 = "c:mstor1iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2822&CC_0104 = "c:mstor1iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2652&CC_0106 = "c:mstor1iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2653&CC_0106 = "c:mstor1iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_27C1&CC_0106 = "c:mstor1iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_27C5&CC_0106 = "c:mstor1iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2681&CC_0106 = "c:mstor1iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2821&CC_0106 = "c:mstor1iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F041028 = "c:mstor2symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F061028 = "c:mstor2symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F071028 = "c:mstor2symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F081028 = "c:mstor2symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F091028 = "c:mstor2symmpi.inf

    ;PCIVEN_8086&DEV_27C3&CC_0104 = "c:mstor4iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2682&CC_0104 = "c:mstor4iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_27C6&CC_0104 = "c:mstor4iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2822&CC_0104 = "c:mstor4iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_282A&CC_0104 = "c:mstor4iastor.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2653&CC_0106 = "c:mstor4iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_27C1&CC_0106 = "c:mstor4iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_27C5&CC_0106 = "c:mstor4iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2681&CC_0106 = "c:mstor4iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2821&CC_0106 = "c:mstor4iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2829&CC_0106 = "c:mstor4iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_8086&DEV_2922&CC_0106 = "c:mstor4iaahci.inf" , "Intel RAID Controller"

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F041028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F061028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F071028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F081028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0054&SUBSYS_1F091028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0058&SUBSYS_1F0E1028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0058&SUBSYS_1F0F1028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0058&SUBSYS_1F101028 = "c:mstor5symmpi.inf

    ;PCIVEN_1000&DEV_0058&SUBSYS_021D1028 = "c:mstor5symmpi.inf

    ;PCIVEN_8086&DEV_24DF = "c:mstor6aarich.inf"

    ;PCIVEN_8086&DEV_25B0 = "c:mstor6aarich.inf"

    ;PCIVEN_8086&DEV_2652&SUBSYS_01801028 = "c:mstor6aarich.inf"

    ;PCIVEN_8086&DEV_2652&SUBSYS_01851028 = "c:mstor6aarich.inf"

    ;PCIVEN_8086&DEV_24DF = "c:mstor7aarich.inf"

    ;PCIVEN_8086&DEV_25B0 = "c:mstor7aarich.inf"

    ;PCIVEN_8086&DEV_2652&SUBSYS_01801028 = "c:mstor7aarich.inf"

    ;PCIVEN_8086&DEV_2652&SUBSYS_01851028 = "c:mstor7aarich.inf"

    we have rem’ed out the lines in the sysprep.inf file but it still was working when the weren’t removed.

    Does this look right or are we doing something wrong with the way we are injecting the drivers into the source?

    Any help would be greatly appreciated.



  10. Ben Hunter says:

    Hi Mike,

    I would follow Michael Niehaus’ advice and create your image using a basic machine that requires no mass storage drivers (Maybe a virtual machine). I would then concentrate on adding the drivers to the sysprep file used to create your master image. Then deploy the image to the Dell server.



  11. Ben Hunter says:

    Hi Clinton,

    I have found the best aproach to injecting mass storage drivers is to get the latest driver from intel (not the vendors) and use that driver only. (this doesn’t apply to server deployment.)

    The mass storage drivers across all vendors is pretty similar and I have not had a case where this hasn’t worked.

    You generally will not need to keep adding more and more drivers to the sysprep.inf file.

    It is however CRITICAL that you recreate  your master image every time you update your mass storage drivers.

    The ohter option you have is to use Configuration Manager. It will inject mass storage drivers for you at deployment time… NICE :).



  12. Ben Hunter says:

    Hi Niel,

    It looks like you are adding the drivers to the wrong build. These drivers should be in the build that is creating the master image not the build that is deploying the image.



  13. Ben Hunter says:

    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.



  14. Ben Hunter says:

    I don’t fancy your chances of getting this going. The only thing I could suggest is getting hold of a beta copy of SCCM and using its driver integration. SCCM is the only product that I know of that can inject mass storage drivers into an image without having to recapture it so maybe that is worth a shot.

    The only other problem that I can see is the Nvidia driver. It requires a bus driver to be loaded before you can load the SATA driver, which is a real hassle.



  15. Ben Hunter says:

    Yes it is possible to run this stage many times.



  16. Ben Hunter says:

    Hi Mark,

    You need to get the LSI Logic driver from the VMware website (I know it is there somewhere:)). You then need to integrate it into your image as detailed in this blog post.



  17. Ben Hunter says:

    Hi Phil,

    Did you updsate the master image with the drivers?

    This has too be done when you capture the image not when you deploy it.



  18. Ben Hunter says:

    Yes you can inject mass storage drivers into an XP image using SCCM. The clone tag error you are getting suggests that you have not setup your sysprep file correctly.



  19. Ben Hunter says:


    What error code you are getting on the blue screen?

    One other trick you could try is to remove the line extendoempartition=1 from your sysprep.inf file.



  20. Ben Hunter says:

    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?



  21. Ben Hunter says:

    Hi Phil,

    That is the correct approach.



  22. Ben Hunter says:

    Hi Paulo,

    The first thing I would do is return the txtsetup.inf file to it’s default settings. You do not need to edit this file, in fact editing it can cause all sorts of errors.

    Once you have done this then I would suggest your try adding the drivers to your image based on the methods described in this post. It would also be a good idea to read the other comments.



  23. Ben Hunter says:

    Hi Lucy,

    Do you have the following line in your sysprep.inf file?

    The GuiRunOnce key value which will restart the task sequencer once the Windows installation is completed. Here is what you need:


    “Cscript.exe %SystemDrive%MININTScriptsLiteTouch.wsf /start”

    Have a look at the sysprep.inf template file that comes with BDD.



  24. Ben Hunter says:

    Hi David,

    The drivers must be added using the method detailed here. You cannot simply inject mass storage drivers into an image (unfortunately).



  25. Ben Hunter says:

    Unfortunaley this will not work. This is because the mass storage part of the process is perormed when the image is created. This is when sysprep is read and the mass drivers prepared.

    Unfortunately this means you must re-create the image.



  26. Ben Hunter says:

    You just add another folder under $1.



  27. Ben Hunter says:

    Hi Martin,

    I don’t know of a way to force WinPE to use a specific NIC.

    It should work if you have injected the correct drivers. The best way to check if you have injected the correct drivers is to review the %TEMP%deployUpdates_x86.log file. This is created when you update the deployment point.



  28. Anonymous says:


    I’m having an issue with this working correctly also, I’ve added all my entries to the MassStorage section and tried to sysprep my workstation and the workstation either gets a registry error or sysprep finishes but doesn’t shut down the workstation. I had an issue with sysprep being on the workstation I created the image on and the microsoft tech had me remove the .inf from the workstation before I ran sysprep. I did that because sysprep on the workstation was interferring with sysprep in the build and was preventing the script in the [GuiRunOnce] to run, Do you have any suggestions?



  29. Ben Hunter says:

    Hi Gordon,

    This is a common bug known known as the uberbug :).

    You will find more information in my previous post:



  30. Ben Hunter says:

    That is correct for ConfigMgr, however this is the method you would use for SMS.



  31. Ben Hunter says:

    Hi Fredrik,

    The 7b error means that you still have a problem with you mass storage drivers. If you could send me a copy of the sysprep.inf file you used when creating the image then I would be able to suggest something else. My email is ben dot hunter at microsoft dot com.



  32. Rupali says:

    Hi Ben,

    Thanks a ton for your blog. The updated sysprep.inf and recapture of image did the trick. I am now able to use the image captured from a VMWare LSI SCSI disk and apply it to a VMWare BusLogic SCSI disk.


  33. Ben Hunter says:

    Hi Doug,

    I cover all of the log files in the following post:

    Here is the excerpt that you are looking for:

    setupapi.log – Windows setup log, located in C:Windows – record inf installation actions – useful for investigating failed driver installations



  34. Ben Hunter says:

    Hi Martijn,

    This sysprep file looks good. The only question I would have is about the driver files them self. Are they in the correct folder before sysprep is run and the image captured?



  35. Ben Hunter says:

    This is possible with SCCM only.



  36. Ben Hunter says:

    Hi Corné,

    There are many methods out there for swaping HALS, however non of these are supported.



  37. Ben Hunter says:

    Hi Jason,

    This may change in future versions.



  38. Ben Hunter says:

    Hi Andrea,

    The real trick to using this process is that you must update the sysprep you use to capture the image. You then add the files to the machine you are about to sysprep. Then you must re-sysprep the machine.

    You cannot apply this process to an image that has already been captured.

    I would suggest that you perform this process manually. Maybe the best approach would be to deploy your image to a machine, make the changes to sysprep and copy the necessary files, sysprep the machine, then capture the image.



  39. Ben Hunter says:

    Hi Andres,

    There is a task in the default task sequence that will fix the Uberbug. You just need to enable it.

    If you created a WIM yourself then you need to make sure that you specify the flags value corrrectly. Have a look at issue number 6 on my top ten issues list for the solution:



  40. Ben Hunter says:

    Hi Marty,

    The line looks ok but s very hard to tell without having the hardware to test myself.

    I would suggest that you find the latest driver from the the intel site and integrate the driver as detailed in this post.

    You may also have the following issue:



  41. Ben Hunter says:

    Hi ML,

    I remember mentioning slipstreaming the CD. That sounds like hard work 🙂

    I import drivers as mentioned in this post.



  42. Anonymous says:


    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?

  43. Ben Hunter says:

    Hi David,

    If you try to manually run the format command from the command what error do you get?



  44. Ben Hunter says:

    Hi Erik,

    Here are the answers to your questions:

    1. Yes

    2. It should work.

    3. I am not sure, but I do know that SCCM MSD injection is fantastic!



  45. Ben Hunter says:

    Hi Rox,

    That doesn’t sund like a typical mass streage driver error. Usually the error code is 0x0000007B.

    I am not sure what is causing this one.



  46. Ben Hunter says:

    What is the error you are receiving?

    Also are the HAL’s compatible?



  47. Ben Hunter says:

    Hi JF,

    The 7b error suggests that you have the an issue with the mass storage drivers.

    Can you send me a copy of the sysprep.inf you use when you create your image?

    My email is ben dot hunter at microsoft dot com



  48. Ben Hunter says:

    Hi Mike,

    The answer is yes and yes. The underlying concepts are exactly the same.



  49. Ben Hunter says:

    Hi John,

    Did you select the BuildMassStorageSection=yes in the sysprep file?

    If so then you must add the relevant buslogic drivers to the sysprep file when creating the image as detailed in this post.



  50. Anonymous says:


    If manually adding mass storage entried into sysprep.inf do you then have to manually supply all mass storage entries for all of your PC’s or does BuildMassStorageSection = Yes still take effect for the ones not manually listed?

    I ask as we usually build our master images on a GX100 (the most basic machine we have) and since adding the entries for the new 755’s we cant build any images on this machine as it gives a 7B error itself now.



  51. Anonymous says:


    I got a problem.

    I got an old notebook drive with XP installed on it and a program that I need to get to pronto. For added fun, the program is bios-oriented, which means cloning the drive to Virtual PC is out of the question. Tech support tells me that as long as I use a (newer) notebook from same manufacturer I’ll be fine (with their help). So, I imaged an old hard disk onto new machine.

    Here is the kicker. Newer notebook has nVidia 430 SATA controller. Thus, when I boot I get 0x0000007b.

    Checked HAL and it matches, therefore it’s SATA.

    Question: How do I install nVidia SATA driver on a cold OS (copy files, edit registry and so on)?


  52. Mosquat says:

    Just to make things clearer for others who may struggle with this concept (as I did for a number of days)…and also to prevent more emails directly to Ben 😉

    A new master image must be created which incorporates the steps Ben lists at the start of this page.  You then capture your new master image and deploy this to the "problem" workstation…and everything will work!

    I hope this helps to clarify the solution for those (like me) who hoped that they could just add the drivers to their deployable image, sysprep and then re-capture…unfortunately this wont work…

    Best wishes


  53. Brad M says:

    Hello Ben,

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


  54. 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. driversHDCiaahc 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!


  55. sachin says:

    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!

  56. JaredCEG says:


    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 ?  

  57. 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.


  58. Rose says:

    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!















  59. Rose says:

    Well, It is working now.  I put in the id for PCIVEN_8086&DEV_2652&CC_0106 and PCIVEN_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.

  60. Rose says:

    Well, It is working now.  I put in the id for PCIVEN_8086&DEV_2652&CC_0106 and PCIVEN_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.

  61. Joe Raby says:

    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:


    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:


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


    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:


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





    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!

  62. Neil says:


    I’m a little confused about this:


    The path on the physical hard disk is:


    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


    BuildMassStorageSection = Yes












  63. Ben says:


       We’ve followed this to the letter and also implemented

    Any further tips on how to identify the issue? the reference build on the same machine is AOK, but the sysprepped one just dies every time…. any suggestions on how to troubleshoot this?


  64. Ben says:

    Hey Ben,

            I set ExtendOEMPartition=0 and bingo-bango away it went.

    Thanks man.

  65. Fredrik Campelo says:

    Hi Ben!

    Thanks for a good blog.

    I also have the stop (7b) error in OSD/sysprep. I think I have done everything correct but is still getting the loop with blue screen and reboot. I have the latest drivers (iaahc I have tried with other versions as well.

    The Light Touch Reference computer is working just fine on the SATA computer models I have. It is no problem to capture a SATA computer to create an image. It is only problem to deploy.

    I have also tried everything you suggested but no luck. Any suggestions are appreciated.



  66. thomas - berlin says:

    try to slipstream sp2!

    no more "stop 7b", no more "iaStore.sys is corrupt"

    i think, the problem ist the 128gb limit…


    (asus a7s notebook, ICH8R, hdd: 200gb

    dos7.1 @32gb drive c)

    w2k (sp4) – intel driver v6.21

    w2k (sp4) – intel driver v7.0 (last support for w2k)

    wxp (sp0) – intel driver v6.21

    wxp (sp0) – intel driver v7.0

    wxp (sp0) – intel driver v7.5

    wxp (sp2) – intel drivers v7.5 (works)

  67. John Vincent says:

    Hi Ben,

    Thank you for the great blogs!  Does SCCM 2007 allow you to inject mass storage drivers into XP images, or just Vista images?

    Also, I am getting an error stating that the "clonetag registry value does not exist" message when trying to capture an image with my extra MS drivers included in sysprep.inf.

  68. craigj says:

    A primary problem with the Intel storage drivers is that there are different versions which support different PnP ID’s.  With my situation, I have to include the v7.5 PNP ID’s into my sysprep file along with the 7.5 driver, and ALSO include one ID from the 7.0 driver and the 7.0 driver itself.  XP puts one driver into system32drivers, and the other into LastKnownGood.  Windows then loads the correct driver for my two different hardware types (I use one WIM image to support (currently) about 15 different hardware types).

    So for all of you that are seeing a BSOD after putting the drivers in, make sure that the driver you are using supports the PNP ID that your SATA controller is using.



  69. ml says:

    Friday, August 24, 2007 7:58 PM by thomas – berlin

    you mentioned slipstreaming your cd… I like this idea,  How can I create a slipstreamed Windows XP CD to include the mass storage drivers.  which I can then import into bdd 2007.  I used nlite to do this the cd worked fine.  but when I imported this cd into bdd created an ISO with all my apps the image would not deploy.  have you got any instructions of how to update the orinal xp sp2 cd.  

  70. JF says:


    Im having problems with x60 and x61s.  If I create the BDD image on the x60 it deploys fine to the x60 machines but I get "Stop 7b" on the x61s. If I create the build on the x61 the opposite happens.  I believe sysprep, unattend and textmode are all correct and the files are correct since it deploys fine to the same model it was built on.  Any ideas?



  71. doug g. says:

    is there a log or anything created during sysprep that i can view to see if all the drivers were correctly integrated into the image?

  72. Mike D says:

    Hey Ben,

    Does this still work with Microsoft Deployment RC1 now that task sequences take over for builds? Also, would this still work for 2003 Servers?

  73. eriwes says:

    Hi Ben

    If you integrate the MSD drivers into the build media (i386 – unattended installation)

    1. ? Do I need to specify the driver path in sysprep.inf (before creating the image)

    2. ? If "all" possible msd drivers are present in the xp image, will Sccm2007 driver injection work ?

    3. ? If Yes, where will Sccm place the drivers. (inf or ?)

    Br erik

  74. Gordon Peterson says:

    All of this is very confusing.  I am trying to create an image that will deploy to a dell D630 laptop with an ICH8M Sata drive.  I tried the above solution but get a 0x000000ed error when it reboots after loading the image "Unmountable Boot Volume".  I have tried rebooting the machine with Winpe afterward to see any logs that might be available and the "C" drive is unreadable.  Any suggestions?

  75. Mike Dzikowski says:

    Hi Ben-

    I’m following this guide. I have a question about this part:


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





    What happens if I want to add more than one type of TEXTMODE driver? Most of the files are named the same "txtsetup.oem" — what do you do in that scenario?

  76. Bhasker says:

    Great help this blog to deal with problems with the mass storage issues.

    Thanks a lot BEN

  77. techbeck says:

    I kept on getting BSODs on the D630s even after I edited the MassStorage section described in this post.  I finally figure out that this laptop was configure to use Flash Cache Module since it originally came with Vista and we were installing XP.  Disabling this feature in the BIOS resolved this BSOD without having to reimage the machine.

  78. Phil says:

    G’day Ben,

    I’m having some issues getting the lovely iastor driver to work (fantastic product isn’t it?)

    I successfully managed to get and older version working before with another machine, but the new machine that we are trying to create an image for requires a newer file.

    Basically i’ve followed the steps that you have given both in this blog and the other one, as well as trying a few other solutions but i seem to be getting stuck on the same BSOD (7b).

    Last time i had to create the folder in .DistributionExtra Filesi386System32Drivers and after changing the sif file it all worked happily.

    I tried that again this time, but it wouldn’t work. So i then went through the steps above, that didn’t work, and the same with the other post.

    Any ideas?



  79. Phil says:

    G’day Ben,

    Yeah the drivers were added into out-of-box-drivers, enabled and added to the build model, then the entire image master image was recaptured to incorporate the newly added drivers.

    The latest attempt that i’m trying to do has my sysprep.inf file looking somewhat like this:


      BuildMassStorageSection = Yes




    Is that a correct approach?



  80. mike says:

    I forgot to mention that in addition to disabling the flash cache module in the BIOS, the SATA Operation section was set to use AHCI instead of SATA.  I tried everything in this post and still got BSODs.  When I disabled these features in the BIOS, the BSODs went away without reimaging.

  81. Mike Dzikowski says:

    Hey Ben-

    Sorry, I was trying everything on this post to get this to work with my Perc drivers. That was suggested by some of the other posters.

    I pinged you offline…if you could offer any advice with this that would be awesome!


  82. Martijn Groothuis says:

    Hi Ben,

    Thanks for this great article.

    I’m trying to use your solution to add several mass storage drivers.

    But I run into creating the sysprep image.

    When I run my sysprep I use the following command: c:sysprepsysprep -quiet -mini -reseal -shutdown

    In my Sysprep file I have added the location to the drivers:


       BuildMassStorageSection = Yes





























    Only when I run the sysprep with these extra lines the machine doesn’t seem to sysprep properly. It won’t shutdown at the end. But just restarts the explorer.exe.

    What could cause this?

  83. Martijn Groothuis says:

    Hi Ben,

    I feel ashamed 🙂

    I forgot to copy the drivers. That was the reason the Explorer restarted.

    It all seems to work now

    Thank you very much.

  84. Rox Cornette says:

    I have tried everything above with an ASUS P5K motherboard and i still get the error after booting from the cd image for windows xp; windows failed to start……windows failed to load because a critical system driver is missing or corrupt.

    file: windowssystem32driversjraid.sys

    status: 0xc000035a

  85. Fred West says:

    Hi Bob,

    This is an excellent blog and I found it to be very useful.  The information posted by Joe Raby helped me to resolve an issue with an unattended build, so thanks to him also.

    Many Thanks – Fred

  86. ton says:


    You mention that SCCM is able to intergrate the SATA drivers into the Image. Do you meen MS Deployment in combination with SCCM or is it also possible with only MS Deployment.

    Thx in advance, Regards

  87. Nicholas Flintham says:


    We currently have a working BDD2007/SMS2003/OSD setup for all of our machines from Dell Optiplex GX100-745.

    The problem i’m having is adding in the mass storage drivers for the 755 to my master image.

    PE2005 is updated and working with 755 network/Mass storage I have added the $OEM$/Textmode below the build and if I do a Lite touch source installation of XP on the 755 then minisetup etc is working correctly and I end up with a fully working XP machine.

    Previously I have had a blank SysprepMassStorage section and sysprep has built this section itself

    Now I have


      BuildMassStorageSection = Yes




    Since I manually added the 755 entries and tried to rebuild my master image on the GX100 it’s now giving 7B error.

    Is this due to me having manually added some entries? Do I now need to manually add all my mass storage drivers manually or am I missing something else?



  88. Clinton Tull says:


    Im about numb in the brain. I have Dell, d830, d620, d620, d420 d430, opti 745/755, panasonic cf30, cf52, and a couple older models. I want to inject mass storage drivers for all models that gave me the 7b errors (most newer models) How do i go about editing sysprep or unattend with the new id’s and where do i seperate the files on the distribution share or the deployed hard driver or the HDD for the base image being created. Also, how do i stop a base build and capture to configure prior to BDD syspreping it. Seems its all captures in one big run if the 7b error doesnt come up in vm session.  Say I want a 755 and 745 but both need drivers for sata or a panasonic cf30 how do i go about this? I have many models and will need a "distribuion structure" for drivers for each particular model.  I GREATLY appreciate your help Ben and as well as others with their posts.  Once i have the 7b fix down any newer models that come in say a optiplex 765 (guessing) and it has different drivers do i have to "recreate" this base image? Or can I inject somewhere after the build?  Can i use multiple Iastor files in different folder structures and have bdd call on wmi from the hardware and pull only those mass storage drivers? Or will this "have" to be injected in the master or base image thats created from the source files all through the unattened and then sysprep and image creation. Do i deploy my base image to a vm then configure it to our standards then sysprep again and wim the image for deployment and add our scripts lastly.???

    Yes Lots of questions but spent about a month on this project and stumbling everywhere.

  89. Jason says:


    Is it possible to do this on a machine that has already been sysprepped once?



  90. David says:

    Hi ben,

    I’m using bdd2007. I’ve made a .wim XP image from a desktop computer. Now im trying to deploy this to a virtual machine on vmware and i’m getting the 7B error. Is it possible in the deployment workbench to add the Mass storage driver to the out-of-the box drivers? Should this be working? And what does the sysprep.inf file do in the DistributionControl<Name> directory ? Can i add the driver names on the mass storage section? Can i inject drivers without editing the image? Thanks in advance

  91. Jason says:

    Thanks Ben,

    Can this stage be run as many times as necessary?


  92. Jason says:

    Great. Thanks Ben!

    And just to clarify, unless you use SCCM or SMS, this is the only want to add these drivers into the XP image…correct?

  93. Jason says:


    Does Microsoft plan on changing this in a future release of MDT or is this going to be the set in stone method.



  94. David says:

    Thanks ben, another problem here now 🙁

    command: FORMAT.COM C:/FS:NTFS /V:OSDisk /Y /Q  FAILED with error = 1

    ZTI ERROR – Non-zero return code by ZTIDiskpart, rc=1

    Non-zero return code executing command "X:DeployToolsX86

    TsmBootstrap.exe" /enc:SAStart, rc = -2147467259

    Any ideas?

    Thanks in advance


  95. Jason says:


    If i need to add other drivers, do i add a $2 folder, or just another folder under the $1.

  96. Mark says:


    Have you tried using BDD 2007 to install XP on to a VMWare virtual machine running on an ESX server ? The problem I face is the virtual machine is using an LSI Logic scsi controller and VMWare also has its own SCSI drivers. Another virtual machine that I have converted from a physical machine is showing the IDE controller as an Intel 82371AB/EB IDE Controller. PE applies the image and copies teh XP setup files to the VM. The VM then restarts, goes through the text setup of XP and comes up with the 0x0000007B BSOD. Which driver do I need to add to sysprep/unattended text files?



  97. David says:

    Mark, I had the same problem before. Set the VM scsi controller to Buslogic and the OS to windows XP. Download the vmscsi- and mount it to vmware. Press F6 during install and load the driver. Greetings

  98. John Eijgensteijn says:

    I’m having an issue where an Image captured on a VMware Server 1.04 machine gives the BSOD 0x00000007B when restored to the same VM or a Compaq Evo D300 box. The VM uses IDE and the the Compaq uses a standard Intel 845G chip which doesn’t need any seperate XP drivers.

    Still I keep getting the dreaded 7B BSOD.

  99. paturner says:


    We have found a way to update sysprep.inf without actually sysprepping again and capturing a new image. We use the line below in a vbs to write to the inf right before the post install reboot. Of course this could be done with anything that needs to be updated in the sysprep.inf.

    WriteIni "c:sysprepsysprep.inf", "SysprepMassStorage", "PCIVEN_10DE&DEV_0267&CC_0104", "c:driversnvraidnvraid.inf"

  100. Marty says:

    Thanks for this great blog.

    I’m trying to create a master image that will include the Mass Storage Driver for an Optiplex 755, with BIOS setting "AHCI Auto Detect Mode" using Sysprep.  My Sysprep looks something like this…  Is this correct or am I missing something?  After deploying the image the Optiplex 755 continuously reboots during mini setup "saving settings."



    BuildMassStorageSection = Yes



  101. Marty says:

    Not sure what I did but it is working great now!



    BuildMassStorageSection = Yes



  102. Lucy says:

    We have built a window xp image from cd installed no apps.  Added the sata drivers and  sysprepped as your article says. Once sysprep has finished it shuts the laptop down.  Then captured the image as a wim using imagex.

    If i deploy the captured wim image from Microsoft Deployment then install apps The image will deploy but the apps will not install.

    What am I doing wrong.

    If I use a microsoft CD as a source OS instead of the captured wim image and deploy to a laptop which does not require sata drivers the the os installs and the apps successfully install also.  

    This tells me that something is wrong with my captured image.

    Any ideas

  103. Andrea says:

    Ben- I can’t tell you how pleased I was to see your posts here on this SATA drive issue, I knew I had seen something somewhere. I have the DELL 755 with SATA and am having the same issues everyone else has had with XP. Before I go any further I just want to get your opinion. I normally do a sysprep -bmsd on any new machines and then compare and create one mass storage section based on that,so that there are no duplicate entries (Xp imaging). I then add the OEmPnPDriversPath to the sysprep.inf and copy the drivers folder to the c drive (c:drivers)This has worked great up until the sata problem. I downloaded the newest driver from Intel. If I do this, create a wim and import it, without changing the Bios from AHCI to ATA or legacy, this should work? Or do I still need to do the textmode, or does that apply if I don’t do a build and create a wim and import it first?

    From your instructions it look like this can be done manualy- above, or by using the text mode folder and sysprep?

    You were right about mass storage drivers and Vista- non issue.

  104. Andrea says:


    I’m still having issues, but I think I may have most of the answers but I need clarification. After I sysprep and capture the image then I must import this wim as a custom wim? The tag for the os doesn’t show up in the OS section, is that because with imagex I specified it incorrectly? If I do a custom wim – can I just do a task sequence that formats the drive and then install operating system? Or do I need to just create a task that uses imagex to just apply the wim? Either way the sysprep and unattend files are still in the sequence- so in that case I need to mirror the imaged sysprep? I believe the uberbug is part of my problem also, I don’t want to kill my vista builds so is the best way to create the script to add to the winpe for the format- is there another way to do this? If I edit the registry where MDT is installed will that resolve the problem when I create the winpe iso?

  105. Martin says:

    Hello Ben,

    I have a problem with a win2003 server.

    There is an iscsi card in the machine. and it has 2 NC373i network cards. There is another network card with PCIVEN_1077&DEV_3022&SUBSYS_01231077&REV_03 in the system. There is qlogic null driver installed. When booted to win PE it says:

    a connection to the deployment share (sharename) could not be made. The deployment will not proceed.

    The following networking device did not have a driver installed:


    Do you have any suggestions? Is it possible to force win PE to use a specific network card? or not use a specific network card. As i have a working network card in the machine.

    I tried to inject the drivers to the winpe image using peimg /inf and i tried to add them to the out-of-box drivers section.

    I have also tried to update/change the driver of the device in the device manager.

    Thanks in advance!

  106. corne says:


    We have always did a new installation of windows xp on new hardware from Dell. SO for the gx280/620/755 /laptop/d430/620/630. every machine a build of a new image with ghost 8/ghostacastserve. On the same machines i restore a image and then log in as administrator (not in the domain). The go to c:sysprep and run syprep.exe. Sysprep reseal and reboots the pc. After a few minutes the pcname is asked (this is nessecary) and the pc is making a new sid and then i can log in to the domain.

    Mostly i see that people are syprepping and then shutdown the pc. Making a new image and then restore the image and the last step what i do is then the case.

    Now i see that it is good possible to restore to different hardware. The only thing that must be taking in consideration is: the HAL and the mass storage device. I also want to make use of sysprep.inf but because i do the resealing after i restored the image and after log in, the things you have told must be in another order i think, am i right?

  107. corné says:


    however swapping HALs is not supported. So you either take the unsupported option or you create an image for each HAL type

    I have found on the Internet that it is possible to choose (automatically or manual) in the boot.ini, the HAL. It was on Vernalex site. If it works i didn’t try yet but maybe it is possible through the boot.ini to choose the HAL?

Skip to main content