Now here we go.
I. Some information on my hardware setup:
I'm using an IC7-Max3 motherboard which contains 4 SATA ports controlled by a Silicon Image 3114 chip as well as 2 other SATA connections controlled by the ICH5R southbridge. I currently have two SATA hard drives in RAID0 on the Intel controller. Installing Windows to disks on either the Intel or SI controllers requires an "F6" driver before the disks are even visible to the OS. Just to cover all the bases, I added both the SI and Intel drivers to this CD.
II. Getting the files:
The first thing to do is obtain the driver files that we need. AFAIK Silicon Image doesn't provide generic drivers on their website; you have to go to the mfg of your particular board. I got mine from Abit here. There are a couple places to get the ICH5R drivers. You can get them out of the Intel Application Accel. package, the Intel "F6" diskette creation utility, or your OEM. Since we're trying to avoid using a floppy strike the diskette utility and let us use the IAA Package.
III. Extracting Drivers:
Now we need to get the necessary files out of the zip archives we just downloaded. The Silicon Image drivers DL'd from Abit are easy, just use Winzip or Winrar to extract the exe file to the directory of your choice. Let us say you extracted them to a directory called "SI". Go there and inside you'll see numerous files as well as a directory called "2kxp." Look inside and you should see 8 files totaling 355,730 bytes.
Instdll.dll SI3114r.inf Si3114r.sys SIWinAcc.sys readme.txt Si3114r.mpd SIISUPP.VXD TxtSetup.oemNote: You can safely delete readme.txt leaving only 7 files.
As for the Intel drivers we have to use a few command line switches. First extract the contents of iaar353_...exe using Winrar or Winzip to any location. Open the contents of the extracted archive and you'll see Data1.cab and Data2.cab, those files contain the drivers we need. To get the drivers OUT open a command prompt and navigate to the file "Setup.exe" (the one we just extracted).
At the command prompt type:
c:\setup.exe -a -p c:\<path>Where "<path>" is a destination folder on your hard drive. For the remainer of this document I will assume you used a directory called "temp" on the "C:" drive.
Navigate to c:\temp and there should be a folder called "Driver" open it and there should be 4 files inside coming to 286,347 bytes.
iastor.sys iaStor.cat iastor.inf txtsetup.oem
IV. Putting the puzzle together
Now that we have the essential drivers extracted we'll need to put them in their proper locations on the CD. I ended up putting a few copies in various locations and I am unsure if the redundency is actually needed, but I'm going to explain exactly what I did just to be safe.
The first place to add a copy is to the TXTMODE folder of your CD. That is: "c:\xpcd\$OEM$\TEXTMODE" Here you can dump the 7 Silicon Image files and 4 Intel files.
Location number two is the location specified (or will be specified) in Winnt.sif for OEMpnpDriversPath. On my CD this is:
$OEM$\$1\Drivers\01 $OEM$\$1\Drivers\02 . . . $OEM$\$1\Drivers\nn
I have added the Intel drivers (all 4 files) to folder 01 and the SI drivers (7 files) to 02. Here you need to have your SATA drivers in the lowest numbered folders. That is, don't have your printer drivers in 01 and SATA in 02.
The third and final location is in the i386 directory which will be located at the root of your CD. This time we only need to be concerned with the *.sys files of each driver set. That would be iastor.sys and si3114r.sys; you do not need SIWinAcc.sys for this step. I chose to compress these files and I recommend you do the same. Use the MAKECAB utility to do so. You'll end up with "iastor.sy_" and "si3114r.sy_" Now simply copy both of these files to the i386 directory. Now we're done copying files.
V. Modifying installation files
The first file to be modified is TXTSETUP.SIF which is in the i386 directory. This file tells Windows what files to load during the text-only portion of setup. We are going to modify the file to make Windows think that Microsoft put these new driver files in i386 and load them accordingly. Open up TXTSETUP.SIF and do a search for [SourceDisksFiles]. In my file it was on line 181. Now add this text EXACTLY AS SHOWN (except what's in the brackets).
[SourceDisksFiles] iaStor.sys = 100,,,,,,3_,4,1,,,1,4 si3114r.sys = 100,,,,,,3_,4,1,,,1,4Each driver listing needs to be on its own line...you'll get the format once you look in TXTSETUP.SIF. You can put this anywhere within the [SourceDisksFiles] section. I'm aware that there are multiple instances of [SDF]...I added my drivers to the first instance.
For a detailed explanation of what all those numbers and commas mean go here.
Still within TXTSETUP.SIF look for [HardwareIdsDatabase] around line 18270. These entries associate drivers with PCI device Ids detected on the machine. Within this section add these lines:
[HardwareIdsDatabase] PCI\VEN_8086&DEV_24DF&CC_0104 = "iaStor" PCI\VEN_1095&DEV_3114&SUBSYS_61141095 = "Si3114r" PCI\VEN_1095&DEV_3114&SUBSYS_288510F1 = "Si3114r" PCI\VEN_1095&DEV_3114&SUBSYS_047AA0A0 = "Si3114r" PCI\VEN_1095&DEV_3114&SUBSYS_0478A0A0 = "Si3114r" PCI\VEN_1095&DEV_3114&SUBSYS_0479A0A0 = "Si3114r" PCI\VEN_1095&DEV_3114&SUBSYS_90181695 = "Si3114r" PCI\VEN_1095&DEV_3114&SUBSYS_F642270F = "Si3114r" PCI\VEN_1095&DEV_3114&SUBSYS_100415BD = "Si3114r"
As you can see there is only one Id for Intel and multiples for SI which is OK. Now remember the file "txtsetup.oem" that we extracted from both driver sets? That's a text file which can be opened in Notepad and it contains the device Ids. If you're trying this out with other drivers and don't know the proper Id, look in txtsetup.oem or the INF file associated with that particular driver.
We now need to find [SCSI.load] in TXTSETUP.SIF. Look around line 18725. Add the lines below to this section.
[SCSI.load] iaStor = iaStor.sys,4 si3114r = si3114r.sys,4One more section to go...
Find [SCSI] - around line 21059. Add this:
[SCSI] iaStor = "Intel(R) 82801ER SATA RAID Controller" si3114r = "Silicon Image SiI 3114 SATARaid Controller"
Here you can replace the text in quotes with anything you want. So if you want iaStor to be "Super Pimped hizard dizisk controllaz" then go for it.
That's it for TXTSETUP.SIF. The next file we need to create or modify is WINNT.SIF. If you're frequenting the unattended forums then you probably already know how to create or modify it. If you don't, check
Here all we need to do is point OEMpnpDriversPath to the locations we set up. Remember $OEM$\$1\Drivers\01? If that is the location of the Intel or SI files then WINNT.SIF should read like this...
OemPnPDriversPath="Drivers\01;Drivers\02;Drivers\03;Drivers\04;Drivers\05;Drivers\06"If you have multiple folders like I do make sure that its all contained on ONE line (the forum software might wrap it here).
VI. Blaze it
Now its time to burn the files to a CD or preferably, a CD-RW.
VII. Test it
Testing the functionality of our new drivers is impossible with VMware or Virtual PC because these raid/SATA controllers do not exist within the virtual machine, which is also why we burned an actual CD instead of creating an ISO image. Restart and boot from the CD. When it says "Press F6..." you can simply ignore it, or do like I did and give your monitor the finger. Now watch the bar at the bottom of the screen very closely as it lists drivers being loaded. I have a fairly fast machine and I was able to catch a glimpse of "Intel® 82801ER SATA RAID Controller" and "Silicon Image SiI 3114 SATARaid Controller" being loaded. It does go by very quickly though, so pay attention. Now I believe at this point your computer will reboot and you'll be taken to the disk formatting and partitioning screen (depending on what is in WINNT.SIF). If you see your hard drive listed then you have success!
So far I have only tested this on a RAID 0 setup using the Intel controller, but I assume that SI will work because the driver does load during text mode. Hopefully this method will work for all "F6" drivers, so lets see if we can give Nforce and PCI slot based controllers a hand too.
Edited by raskren, 09 February 2004 - 03:38 PM.