So this has taken forever to figure out, so it's well worth documenting in detail. Below are detailed instructions on having OSD inject mass storage drivers into Windows XP so that the XP mini setup can copy installation files and such.
The first thing you need to do is find a computer that needs additional storage drivers. In my case I have a Lenovo T500 that needs additional drivers for setup to work correctly. First I had to download the Mass Storage drivers. You can generally do this from the manufactures website, or from the controllers manufactures site. This T500 has a Intel ICH9M/M-E 2 port Serial ATA storage controller. I downloaded the drivers from Lenovo's website, extracted the drivers from the setup form that it came in, and then created a driver package in ConfigMgr that contained only the storage drivers.
You now need to discover the Hardware ID information for your controller. There are two ways I'm aware of to do this.
- The first way is to boot to WinPE with command support enabled and then look in WMI for the information. I do this by mapping a drive in WinPE to a share where I have an application I launch that allows me to browse WMI. Once in WMI you can navigate to Win32_PnPEntity to find the information. You have to dig a bit though with this method.
- The second way is to boot into the OS, then go to Device Manager, expand IDE ATA/ATAPI controllers, find the storage controller, go into it's properties and grab the Device ID that way.
It's very important that you grab the full name of the full name of the storage controller. You may see multiple Device ID's, however you only need the beginning of the ID. Here's an example. My storage controller has the following Device ID's.
- PCI\VEN_8086&DEV_2929&SUBSYS_20F717AA&REV_03
- PCI\VEN_8086&DEV_2929&SUBSYS_20F717AA
- PCI\VEN_8086&DEV_2929&CC_01018A
- PCI\VEN_8086&DEV_2929&CC_0101
The only part of the Device ID that you need is the beginning which contains the manufacturer code, and the device code. For me, that part is PCI\VEN_8086&DEV_2929.
Now that we have both the full name of the controller, the Device ID, and the controller drivers imported into a driver package in ConfigMgr, we can setup our Task Sequence.
In your task sequence you need to add an Apply Driver Package step right after the Auto Apply Drivers step. In my case, I've actually created a sub folder that contains all the storage drivers, that way it's more organized. It's also probably best if you rename the step to whatever the controllers name is.
In the properties of the Apply Driver Package step, you'll have to go through the drop downs until you find the correct driver for your controller. If you pick the wrong one, the XP mini setup will blue screen and fail.
You now need to add a WMI condition to the Driver Package step. In my case, my WMI query is
SELECT * FROM Win32_PnPEntity WHERE DeviceID like 'PCI\\VEN_8086DEV_2929%'
This will make it so that ConfigMgr only applies the driver package when the specific controller is present.
Now that you've done all this, you should be able to image your computer without injecting the controller drivers directly into the XP Source files first. In my case, this is going to save me lots of time.