以前在安装WINDOWS的时候老是要借软驱插软盘,遇到软驱软盘坏了就麻烦了,一直都想把驱动做到光盘或者硬盘上并让WINDOWS安装程序自动加载,经过查资料和摸索,得出下面的方法:
安装Windows 2000/XP之类的基于NT内核的操作系统在RAID或SCSI或SATA硬盘上,它们的驱动程序必须在安装系统之前就正确加载。安装此类驱动程序常见的模式是将硬件的驱动程序拷贝到软盘上,在系统开始安装的时候按下F6,然后系统会为你加载软盘中的驱动程序。这样的驱动程序软盘根目录下肯定有一个名为Txtsetup.oem的文件,它会告诉安装程序怎样安装SCSI、RAID卡的驱动程序。那么只要我们使用WINDOWS的自动安装模式,并通过Txtsetup.oem就可以实现让驱动直接加载(就如同它已经内置了驱动程序一样)。以EP-8RDA3+的SATA芯片SI3112为例,其他的可以依瓢画葫芦。
1、新建一个目录,命名为$OEM$。在此目录下建立两个目录,TEXTMODE和$1。
2、把SI3112的驱动文件都拷到TEXTMODE的目录下:
Si3112r.inf
Si3112r.mpd
Si3112r.sys
SIISUPP.vxd
SIWinAcc.sys
TxtSetup.oem
驱动文件至少应包括包含TxtSetup.oem、.inf和.sys文件。也就是在TxtSetup.oem里出现的文件都是必须的。
3、用任何文本编辑器编辑Txtsetup.oem文件,删除任何和Windows XP驱动无关的信息,保存。我的文件修改后如下:
[Disks]
disk1 = "Silicon Image SiI 3x12 SATARaid Driver Installation Disk",\Si3112r.sys,
[Defaults]
SCSI = Si3112r
[SCSI] ; HwComponent section
Si3112r_XP = "Silicon Image SiI 3x12 SATARaid Controller for Windows XP"
[Files.SCSI.Si3112r_XP]
driver = disk1,si3112r.sys, Si3112r
driver = disk1,SiWinAcc.sys, SiFilter
inf = disk1,Si3112r.inf
;;catalog = disk1, Si3112r.cat
[HardwareIds.SCSI.Si3112r_XP]
id = "PCI\VEN_1095&DEV_3112&SUBSYS_61121095", "Si3112r"
id = "PCI\VEN_1095&DEV_3112&SUBSYS_34228086", "Si3112r"
id = "PCI\VEN_1095&DEV_3112&SUBSYS_809D1043", "Si3112r"
id = "PCI\VEN_1095&DEV_3512&SUBSYS_65121095", "Si3112r"
id = "PCI\VEN_1095&DEV_3512&SUBSYS_34228086", "Si3112r"
[Config.Si3112r_XP]
value = ProblemDevices, "", REG_SZ, ""
value = ProblemDevices, "Maxtor 4D060H3 DAK05GK0", REG_SZ, "MaxMode = UDMA-5"
value = ProblemDevices, "ST320012AS", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST330013AS", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST340017AS", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST360015AS", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST380023AS", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST3120023AS", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST340014ASL", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST360014ASL", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST380011ASL", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST3120022ASL", REG_SZ, "Mod15Write"
value = ProblemDevices, "ST3160021ASL", REG_SZ, "Mod15Write"
4、在$1的目录下建立Drivers目录,在Drivers目录下再建立SI3112目录,此两个目录名称可随意,但是必须与下面的unattend.txt文件里提到的相应路径一致。把TEXTMODE下的所有文件都拷到SI3112目录下。
5、建立文件名为unattend.txt的文本文件,这个文件是WINDOWS自动安装的脚本文件,可自己手动写入参数,也可通过setupmgr.exe产生,setupmgr.exe文件在安装光盘的SUPPORT\TOOLS目录下的DEPLOY.CAB压缩包里。
6、在unattend.txt中,创建 [OEMBootFiles]段,把TextMode目录下的所有文件列表填写进去,如我的:
[OEMBootFiles]
Si3112r.inf
Si3112r.mpd
Si3112r.sys
SIISUPP.vxd
SIWinAcc.sys
TxtSetup.oem
7、建立[MassStorageDrivers]段,如:
[MassStorageDrivers]
"Silicon Image SiI 3x12 SATARaid Controller for Windows XP"="OEM"
其中"Silicon Image SiI 3x12 SATARaid Controller for Windows XP"来自于Txtsetup.oem文件[scsi]段中标志Windows XP控制器的文字。
8、建立[Unattended],在[Unattended]中添加OemPreinstall=Yes,是为了保证Windows安装程序自动去查找我们添加进去的第三方驱动程序。为了防止没有通过微软的WHQL认证的驱动安装失败,需要指定DriverSigningPolicy=Ignore来忽略WHQL认证检查。还要指明驱动保存的目录路径,此为:Drivers\SI3112。如下:
[Unattended]
OemPreinstall=Yes
DriverSigningPolicy=Ignore
OemPnPDriversPath="Drivers\SI3112"
9、使用此方法有一个缺陷――Windows安装分区是自动选择的,我们不能在安装过程中指定分区,不过可以在unattend.txt文件中新建[Data]段,并输入以下信息就可以在安装过程中选择安装分区。
[Data]
AutoPartition = 0
Unattendmode = Yes
MSDosInitiated = "0"
OemSkipEula=Yes
10、安装:
把安装光盘中所有的文件COPY到硬盘(比如:F盘的WINXP目录下),把一开始创建的整个$OEM$目录都放到I386的目录下,并且unattend.txt也放到I386目录下,在I386目录下运行安装命令为Winnt /u:unattend.txt /s:f:\winXP\i386,其中f:\winXP\i386为I386所在的绝对路径。(注:有些网友反映光盘安装出现很多问题,我试验之后的确有他们所提的问题,为了不再“误导”更多网友,故把光盘安装方法取消,等出了解决办法之后才贴上,望谅!)
自动安装文件还有很多其他的作用,如自动填入序列号等,大家可以自己去查阅资料,祝大家都能方便的安装WINDOWS,另上面如有不对的地方也请提出,谢谢!