我们在服务器上安装Win2003
时,有时会遇到硬盘驱动导致的故障。2003
操作系统已经发布多年,对近年来服务器上使用的一些新型SATA
或SCSI
控制器并不能很好地支持。由于2003
内置的驱动程序无法识别新型的SCSI
或SATA
控制器,因此安装2003
时会出现安装向导找不到硬盘,无法继续安装。
解决这种问题的标准方法应该是在光盘启动时根据屏幕提示按下F6
键,然后安装向导会提示我们插入包含硬盘控制器驱动程序的软盘,这样安装向导就可以从软盘中加载硬盘控制器的驱动,然后就可以顺理成章地识别硬盘了。
由于软驱已经不再是计算机上的标准配置了,因此使用软盘加载驱动的方法在无软驱的服务器上会遇到麻烦,因此今天我们将为大家另外一种解决方案,在Win2003
的安装光盘中直接集成SATA
或SCSI
控制器的驱动,这样我们在安装2003
时就可以不需要软驱的配合,能直接识别出硬盘了。
我们在Vmware Workstation
上为大家搭建一个实验环境,我们在Vmware Workstation6.5
上创建一个虚拟机,选择的SCSI
控制器类型是Buslogic
,如下图所示,这种SCSI
控制器并不被Win2003
支持。
在这个虚拟机上安装Win2003
,如下图所示,安装时会出现找不到硬盘的提示,预料之中的结果。
先把Buslogic
的驱动准备好,在Vmware
的安装目录下可以找到一个windows.iso
文件,用虚拟光驱加载这个镜像文件,如下图所示,在虚拟光驱的Program Files\VMware\VMware Tools\Drivers\SCSI
目录下可以找到Buslogic
控制器的驱动程序。
准备好SCSI
控制器的驱动后,我们来看看如何把驱动集成到2003
的安装光盘中。我们先把Win2003
的安装文件从光盘复制到一个文件夹中,这样有利于我们修改光盘内容。集成驱动最关键的是要修改安装光盘中的I386
目录下的txtsetup.sif
文件,这个文件定义了文本安装模式下2003
能够识别的存储设备以及相应的驱动程序,只要控制好如下图所示的这个文件,硬盘驱动问题就好解决了。最妙的是,这个文件并不在系统保护文件的范畴内,这意味着我们可以对这个文件任意修改而不用担心遭到操作系统的阻止。这个文件我们要修改下列几部分。
一
修改
Txtsetup.sif
中的
[SCSI]
段
Txtsetup.sif
中的[SCSI]
段定义了Win2003
支持的硬盘控制器,如下图所示,我们在[SCSI]
段中增加了一项VMSCSI = "VMware SCSI Controller"
,这项的作用是告诉Win2003
,有一个名为VMSCSI
的硬盘控制器也是被Windows Server 2003
所支持的,而且我们还对VMSCSI
控制器进行了注释,这是一个VMWare
的硬盘控制器。其实就是为Buslogic
控制器取名为VMSCSI
。
VMSCSI
其实就是Buslogic
控制器,我们对Buslogic
控制器的描述其实很灵活,可以随意起名,并没有特别严格的要求。我们把Buslogic
控制器描述成VMSCSI
是根据Buslogic
驱动程序中的txtsetup.oem
文件来进行的,txtsetup.oem
文件的内容如下图所示。
二
修改
Txtsetup.sif
文件中的
[HardwareIdsDatabase]
Txtsetup.sif
文件中的[HardwareIdsDatabase]
用来描述被硬盘控制器的硬件ID
,我们刚才修改了Txtsetup.sif
文件的[SCSI]
段,声明了VMSCSI
这个SCSI
控制器被Win2003
所支持,但是,Win2003
怎么知道一个硬盘控制器是不是VMSCSI
呢?我们在[HardwareIdsDatabase]
中写上VMSCSI
控制器的硬件ID
,这样就不会弄混淆了。这个硬件ID
是硬件出厂时被写入的,不会更改,Windows
只要查询一下硬件的ID
,就可以知道这个硬件是不是Buslogic
控制器。如下图所示,我们描述了VMSCSI
的硬件ID
。
那我们怎么知道Buslogic
的硬件ID
呢?答案在Buslogic
的驱动程序中,如下图所示,我们在驱动程序的txtsetup.oem
文件中发现了Buslogic
的硬件ID
。
三
修改
Txtsetup.sif
文件的
[scsi.load]
描述了Buslogic
的硬件ID
后,我们就要修改[scsi.load]
这一段了,这段描述了Win2003
应该利用那些文件来驱动Buslogic
控制器。如下图所示,我们描述了Buslogic
的驱动程序应该是vmscsi.sys
,前面我们已经在Buslogic
的驱动中看到了这个文件。那么,vmscsi.sys
后面还有一个4
,这个4
代表什么呢?继续向下看!
4
代表Windows
目录下的一个路径,如下图所示,在txtsetup.sif
的[WinntDirectories]
段中我们发现4
代表着windows\system32\drivers
目录。这个目录我们非常熟悉,windows
的驱动程序基本都放在这个目录下。
四
修改
Txtsetup.sif
文件中的
[SourceDisksFiles]
最后要进入高潮部分了,我们要解释一下Buslogic
的驱动程序vmscsi.sys
到底从何而来。如下图所示还,我们在[SourceDisksFiles]
中对此进行了定义,vmscsi.sys
= 1,,,,,,,4,0,0
,乍一看让人莫名其妙,仔细看看其实还是可以分析的。1
代表着vmscsi.sys
的来源是Win2003
安装光盘的I386
文件夹,Why
?向下看有答案。
如下图所示,在Txtsetup.sif
的[SourceDisksNames.x86]
中定义了1
的含义,原来1
指的是安装光盘的I386
文件夹。
接着再往下分析,vmscsi.sys
= 1,,,,,,,4,0,0
,1
之后的7
个逗号代表了7
个默认设置,在此我们不需要对此进行修改。4
代表vmscsi.sys
的目标路径,刚才我们已经提到了,是windows\system32\drivers
目录。4
之后的两个0
代表无论是升级系统,还是全新安装的操作系统,都要把vmscsi.sys
拷贝到windows\system32\drivers
目录下。
修改了Txtsetup.sif
文件后,如下图所示,我们用makecab
命令把vmscsi.sys
压缩为vmscsi.sy_
,为什么要对vmscsi.sys
进行压缩呢?因为Win2003
默认在安装时会对文件进行解压缩操作。我们使用Ultraiso
工具把vmscsi.sy_
和txtsetup.sif
都集成到Win2003
的安装光盘上,然后就可以试试效果了。
用集成了SCSI
驱动的光盘启动虚拟机,如下图所示,我们看到集成的驱动已经发挥了作用,安装程序找到了硬盘!希望利用这篇文章,能够帮助那些被SCSI
硬盘或SATA
硬盘困扰的朋友,希望大家可以举一反三,早日定制出自己专用的Windows
安装光盘。