Windows XP SP2集成SATA驱动的改进方法
- 作者:Wink@Lynn Studio
- 原创文章,转载请注明作者和出处。
之前曾经研究过如何在Windows XP SP2光盘中集成SATA驱动,并总结出来为文档留待以后参考。但是这个方法一直感觉并非完美,因为需要单独创建一个目录存放SATA驱动,而且涉及的文件较多,步骤过于繁琐。于是借着近日新入手ThinkPad T60的机会,重新总结了一下集成SATA驱动的方法,成果还是比较不错的
前期准备
文件的准备还是参考和之前的这篇“制作集成SATA驱动的Windows XP安装光盘”文章中所要求的一样。
- Windows XP SP2安装光盘,并假设将安装光盘中所有文件放置于“D:\XPCD\”中。
- Windows XP Service Pack 2部署工具。
- 主板厂商提供的SATA驱动,例如Floppy Configuration Utility - Intel Matrix Storage Manager、ATI SB600 Southbridge Driver等等。
- 光盘工具:UltraISO、Nero Burning Rom。
- 其它工具:WinImage、UltraEdit、WinRAR等等。
首先了解一下相关的基本知识。
Windows XP安装分为Text Mode和GUI Mode两个步骤。


TXTSETUP.SIF文件左右了Text Mode步骤可以使用的设备,但仅仅是提供驱动支持,无法发挥设备的全部性能。而在Text Mode末尾会将所需的基本驱动复制到硬盘上,以便GUI Mode的继续进行。所以修改该文件,可以使原本在Windows XP安装时因无驱动而无法识别的设备获得支持。
DOSNET.INF是为DOS环境以及Windows环境安装准备的。如果只是需要Windows安装光盘启动安装,可以忽略修改该文件。理论上讲,TXTSETUP.SIF和DOSNET.INF中的文件应是一一对应。
但是以上两个文件并非真正安装了驱动。安装结束进入系统后,便失去了因修改这两个文件而增加的设备支持。需要修改WINNT.SIF(安装应答文件)并相应地添加驱动文件至安装光盘中。
TXTSETUP.SIF相关说明
[SourceDisksNames.x86]
[SourceDisksNames.x86]预定义了后面需要使用的源文件位置。其中
1_ = %bootname1%,"%boottagfile1%",,""
笔者猜测,类似带下划线的编号可能意指利用makeboot或者makebt32生成的虚拟启动软盘组中的软盘编号(实际制作Windows XP的启动软盘就需要六张软盘),即该文件处于启动软盘组中的第几张之中,与文件末尾的[Strings]段对应。
[Strings]
cdname = "Windows XP Professional CD-ROM"
productname = "Windows XP Professional"
bootname1 = "Windows XP Professional SP2 Setup Boot Disk"
bootname2 = "Windows XP Professional SP2 Setup Disk #2"
bootname3 = "Windows XP Professional SP2 Setup Disk #3"
bootname4 = "Windows XP Professional SP2 Setup Disk #4"
bootname5 = "Windows XP Professional SP2 Setup Disk #5"
bootname6 = "Windows XP Professional SP2 Setup Disk #6"
cdtagfile = "\win51ip"
cdtagfilei = "\win51ip"
cdtagfilem = "\win51mp"
boottagfile1 = "\disk101"
boottagfile2 = "\disk102"
boottagfile3 = "\disk103"
boottagfile4 = "\disk104"
boottagfile5 = "\disk105"
boottagfile6 = "\disk106"
spcdname = "Windows XP Professional Service Pack 2 CD"
spcdtagfilei = "\win51ip.sp2"
cd2name = "Windows XP Professional CD2"
cd2tagfilei = "\win51ip2"
而“1_”又意味着文件被压缩,相反地,“_1”代表文件未被压缩,还没有找到确切的官方文档肯定这个说法。
[WinntDirectories]
[WinntDirectories]预定义了目标文件位置,默认的根目录为“WINDOWS\”。也就是说,
1 = "\"
代表着“WINDOWS”目录。
[SourceDisksFiles]
[SourceDisksFiles]段是重头戏,描述从源文件位置复制到目标位置的文件列表。具体的说明如下,一些地方还暂时无法咬准确切意义,不过,这不影响接下来的工作。

DOSNET.INI相关说明
[Directories]
[Directories]和TXTSETUP.SIF中的[SourceDisksNames.x86]含义大致相同,也是预定义了后面需要使用的源文件位置。
[Files]
[Files]中列出需要从源文件位置复制的文件列表。前面说过TXTSETUP.SIF和DOSNET.INF中的文件应是一一对应,所以TXTSETUP.SIF中新增的文件,也需要在DOSNET.INI中相应添加。
TXTSETUP.OEM文件
在各个芯片厂商提供的SATA驱动中,都会提供TXTSETUP.OEM文件。关于TXTSETUP.OEM的详细说明,请参考Microsoft的“The txtsetup.oem File Format”文档。
以Intel Matrix Storage Manager提供的TXTSETUP.OEM文件举例,在后面的工作中,需要用到类似于下面的设备说明。
[HardwareIds.scsi.iaAHCI_ICH9R]
id = "PCI\VEN_8086&DEV_2922&CC_0106","iaStor"
[HardwareIds.scsi.iaStor_ICH8M]
id = "PCI\VEN_8086&DEV_282A&CC_0104","iaStor"
[HardwareIds.scsi.iaAHCI_ICH8M]
id = "PCI\VEN_8086&DEV_2829&CC_0106","iaStor"
[HardwareIds.scsi.iaStor_ICH8R]
id = "PCI\VEN_8086&DEV_2822&CC_0104","iaStor"
[HardwareIds.scsi.iaAHCI_ICH8R]
id = "PCI\VEN_8086&DEV_2821&CC_0106","iaStor"
……
这里需要根据自己主板的南桥芯片硬件ID来判断使用哪一句代码,可以在系统中通过查看“设备管理器”的该设备属性详细信息中的硬件ID得到。例如笔者的ThinkPad T60笔记本是迅驰三平台,使用
[HardwareIds.scsi.iaAHCI_ICH7M]
id = "PCI\VEN_8086&DEV_27C5&CC_0106","iaStor"
这行代码。另外,在TXTSETUP.OEM文件中还有类似于
iaAHCI_ICH7M = "Intel(R) 82801GBM SATA AHCI Controller (Mobile ICH7M/DH)"
的设备名称也是我们需要的。
实际操作,为迅驰三主板添加SATA驱动支持。
打开“TXTSETUP.SIF”文件,按照段的类别依次添加:
[SourceDisksFiles]
iaStor.cat = 1,,,,,,,20,0,0
iaStor.inf = 1,,,,,,,20,0,0
iaAHCI.cat = 1,,,,,,,20,0,0
iaAHCI.inf = 1,,,,,,,20,0,0
iaStor.sys = 1,,,,,,4_,4,1,,,1,4
[HardwareIdsDatabase]
PCI\VEN_8086&DEV_27C5&CC_0106 = "iaStor"
[SCSI.Load]
iaStor = iaStor.sys,4
[SCSI]
iaStor = "Intel(R) 82801GBM SATA AHCI Controller (Mobile ICH7M)"
这些代码通过前面的知识准备已经不难理解,iaStor.cat等五个文件是从Intel Matrix Storage Manager中得到的。另外,前面也说过“[HardwareIdsDatabase]”和“[SCSI]”段中需要按照自己的实际情况在TXTSETUP.OEM文件挑选使用。“[HardwareIdsDatabase]”中是将TXTSETUP.OEM文件中的“[HardwareIds.scsi.*****]”内容形式稍加改变而已。
接下来是编辑DOSNET.INI文件:
[FloppyFiles.1]
d1,iastor.sys
[Files]
d1,iaAHCI.inf
d1,iaAHCI.cat
d1,iaStor.cat
d1,iaStor.inf
d1,iaStor.sys
然后是修改WINNT.SIF文件,关于如何创建应答文件,网上资料很多,笔者不做赘述,使用Windows XP Service Pack 2部署工具即可,这里只是列出和集成SATA驱动相关需要添加的语句:
[Data]
MSDosInitiated=0
UnattendedInstall=Yes
OemDrivers=OemInfFiles
[OemInfFiles]
OemDriverFlags=1
OemDriverPathName="%systemroot%\inf"
OemInfName="iaahci.inf","iastor.inf"
最后将Intel Matrix Storage Manager(F6flpy32)中的五个文件iaahci.cat、iaahci.inf、iastor.cat、iastor.inf、iastor.sys复制至I386目录下,注意,不需要使用makecab命令压缩。再用UltraISO等光盘工具封装为Windows XP安装光盘即可。
实际操作二:AMD 690G芯片SATA驱动的集成。
方法和上面基本相同,只是驱动文件的区别而已。还是一样,实际需要根据自己主板芯片的硬件ID和芯片厂商提供的驱动文件判断集成。(以笔者手里的资源,精英AMD690GM-M2的SATA控制器硬件ID是“PCI\VEN_1002&DEV_4380&SUBSYS_43821019”,映泰TA690G的SATA控制器硬件ID是“PCI\VEN_1002&DEV_4380&SUBSYS_43821002”,这里以精英AMD690GM-M2为例。另外,映泰TA690G的BIOS中开启AHCI的选项是“IDE→AHCI”,不知是否还有什么特殊的意义。)
TXTSETUP.SIF修改:
[SourceDisksFiles]
ahci8086.cat = 1,,,,,,,20,0,0
ahci8086.inf = 1,,,,,,,20,0,0
ahci8086.sys = 1,,,,,,4_,4,1,,,1,4
[HardwareIdsDatabase]
PCI\VEN_1002&DEV_4380&SUBSYS_43821019 = "ahci8086"
[SCSI.Load]
ahci8086 = ahci8086.sys,4
[SCSI]
ahci8086 = "ATI AHCI Compatible RAID Controller-x86 platform"
DOSNET.INF文件修改:
[FloppyFiles.1]
d1,ahci8086.sys
[Files]
d1,ahci8086.inf
d1,ahci8086.cat
d1,ahci8086.sys
WINNT.SIF文件基本一样,在上面案例的基础上修改为:
OemInfName = "iaahci.inf","iastor.inf","ahci8086.inf"
当然,如果仅仅想集成690G的SATA驱动,就只需写成
OemInfName = "ahci8086.inf"
You can follow any responses to this entry through the RSS 2.0 feed. Responses are currently closed, but you can trackback from your own site.
Contents