在
Windows Server 2003/XP 安装光盘中集成 RAID 驱动
――不用软驱装RAID/SATA/SAS驱动!
――本文详尽,彻底,准确,可用!此项技术,本文足矣!请细致阅读。
――本文以Windows 2003 SP2集成Intel S5000PSLSAS主板SAS RAID驱动为例讲解,但同样适合Windows XP等操作系统及其他RAID/SATA/SAS驱动。
――本文主要参考引用让SATA“嫁给”Windows XP ,向认真的作者余刘琅致敬!
――本文部分参考将IBM ServeRAID 8i卡的驱动整合到Windows 2003安装光盘里 ,向不留名的作者致敬!
――网络不可用之伪作甚多,不一一列举。
七大步骤:
一、复制Windows 2003安装目录.................................................................................................1
二、准备驱动程序文件...................................................................................................................1
三、编辑“txtsetup.sif”文件(1).................................................................................................2
四、编辑“txtsetup.sif”文件(2).................................................................................................4
五、修改“winnt.sif”文件内容.......................................................................................................8
六、将RAID驱动压缩到安装文件.............................................................................................10
七、重新生成安装光盘.................................................................................................................11
为了不再让Win2003的安装过程需要通过软盘加载RAID驱动程序,很多人都梦想将主板的RAID驱动程序集成到安装光盘中,本文就来DIY一张集成RAID驱动程序的Windows 2003安装光盘!
一、复制Windows 2003安装目录
打开资源管理器,在一个拥有足够磁盘空间(空闲空间至少为700MB;如果将生成后的光盘镜像也放在该分区,则应当保证有一张光盘的双倍容量的空间,即1.4GB左右)的硬盘分区上创建一个文件夹,比如“D:\w2003RAID\”,用于保存Windows 2003的全部安装文件。
把一张完好的Windows 2003安装光盘[下载 ]放入光驱,在资源管理器中将光盘中的文件全部选定,再复制到“D:\w2003RAID\”目录中。
二、准备驱动程序文件
一般随主板附送的驱动程序安装光盘中都有RAID的驱动程序。打开光盘目录,寻找名称中含有“SATA”或“RAID”字符的文件夹;也可在主板制造商的网站或其它驱动程序下载站点(如:驱动之家 等)寻找与自己的主板芯片组相匹配的RAID驱动程序。
[注意]Intel S5000PSLSAS型号的主板,不是每个版本都能支持Intel四核处理器,得803以上版本才行。而且,Intel S5000PSLSAS 803版本主板盒装光盘的SAS RAID驱动,对RAID支持不好,如用此驱动安装Windows 2003系统,一般在例如最后10分钟及3分钟的时候就装不下去了!所以必须下载最新版本的驱动,这是下载地址 。
下载解压后,对Windows 2003而言,只需要ESRT2_Windows_v_07_15_0209_2007_WHQL\windows_xp_2003_x86文件夹下的文件。
在D:\w2003RAID目录下依次建立新的目录D:\w2003RAID\$OEM$\$1\drivers\IntelMegaSR\,然后将下载解压得到的文件中windows_xp_2003_x86文件夹中的9个文件全部拷贝到这个目录下(也就是D:\w2003RAID\$OEM$\$1\drivers\IntelMegaSR目录下,[注意]这个目录中,\$OEM$\$1不可以以其它名称命名,必须照抄此处,因为这涉及到后面“OemPnPDriversPath=drivers\IntelMegaSR”代码对这些文件地址的指向。Drivers目录下,除了IntelMegaSR这个目录,还可以根据需要增加其他的驱动目录)。
这里我们是以MegaSR的RAID驱动程序为例进行介绍。其它类型的RAID驱动程序的集成步骤几乎完全相同,所不同的仅仅是驱动程序文件名的不同而已。
在这个“\IntelMegaSR”的文件夹中,一定会有一个扩展名为“.inf”或“.oem”的小文件,如“oemsetup.inf”或者“txtsetup.oem”等(本例中为“txtsetup.oem”),用记事本程序打开它,随后要用!
就Intel的这款驱动,共有9个文件,列举如下:
dpinst.xml
MegaSR
MegaSR.cat
MegaSR.INF
megasr.md5
megasr.sys
megasr2k.sys
nodev.inf
txtsetup.oem
三、编辑“txtsetup.sif”文件(1)
打开“D:\w2003RAID\I386”文件夹,找到一个名为“txtsetup.sif” 的文件,这是Windows 2003在安装时加载驱动程序的信息文件,用记事本程序打开它。
按“Ctrl+F”快捷键,打开查找对话框,以“[SourceDisksFiles]”为关键字进行查找。找到这个字段后,其下面已经存在一些内容(图1)。
图1
再以“[”为关键字查找到这个字段的末尾(注意:不是整个文件内容的末尾),添加以下内容:“MegaSR.sys = 1,,,,,,3_,4,1,,,1,4”(图2)。
图2
这里的“MegaSR.sys = 1,,,,,,3_,4,1,,,1,4”是描述驱动程序所在位置的代码。代码的格式为“filename_on_source=diskid,subdir,upgradecode,newinstallcode,spare,spare,newfilename”,在“txtsetup.sif”文件中的“[SourceDisksNames]”和“[WinntDirectories]”等字段中有详细的描述。有兴趣的朋友可以深入研究其它目录的对应关系,这里仅简单介绍。
500)this.width=500;">
图3
在实际操作时,绝对不可以照搬代码!特别是扩展名为sys的文件“MegaSR.sys”,它是RAID驱动程序目录“D:\w2003RAID\$OEM$\$1\drivers\IntelMegaSR\”中的驱动程序文件名,如果您的RAID驱动程序与本文所述的不同,则只需换成目录中相应的文件即可。而等号后面的代码,一般可以直接照抄使用。
四、编辑“txtsetup.sif”文件(2)
切换到前面打开的“txtsetup.oem”文件,以“[HardwareIds.”为关键字进行搜索,应该可以找到类似“[HardwareIds.SICS.MegaSR]”的字段(注意不是[HardwareIds.scsi.MegaSR2K],它是WINDOWS 2000的驱动)。
图4
该字段下的代码如:“id="PCI\VEN_8086&DEV_27c3&SUBSYS_10a51734", "MegaSR"”。
切换到刚才打开的“txtsetup.sif”文件窗口中,以“[HardwareIdsDatabase]”为关键字进行搜索。找到后,将“txtsetup.oem”文件中“[HardwareIds.scsi.MegaSR]”字段下的代码拷贝到“txtsetup.sif”文件的“[HardwareIdsDatabase]”字段末尾。不过,我们需要更改一下代码的格式,如将“id="PCI\VEN_8086&DEV_27c3&SUBSYS_10a51734", "MegaSR"”改为:“PCI\VEN_8086&DEV_27c3&SUBSYS_10a51734 = "MegaSR"”(其他代码修改方法相同),更改后的代码如下:
PCI\VEN_8086&DEV_27c3&SUBSYS_10851734 = "MegaSR"
PCI\VEN_8086&DEV_27c3&SUBSYS_10a51734 = "MegaSR"
PCI\VEN_8086&DEV_27c3&SUBSYS_27c08086 = "MegaSR"
PCI\VEN_1000&DEV_0054&SUBSYS_10001000 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_10001000 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_10001000 = "MegaSR"
PCI\VEN_1000&DEV_0059&SUBSYS_10001000 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_346d8086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_346d8086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_34758086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_34798086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_347b8086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_347d8086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_34858086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_34878086 = "MegaSR"
PCI\VEN_1000&DEV_0057&SUBSYS_833c1033 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_35008086 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_35018086 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_35048086 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_83361033 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_83371033 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_83381033 = "MegaSR"
PCI\VEN_1000&DEV_0055&SUBSYS_83421033 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_833c1033 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_83361033 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_83381033 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_72708086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_346d8086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_346f8086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34718086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34738086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34758086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34778086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34798086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_347b8086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_347d8086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34818086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34838086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34858086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34878086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_34898086 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_10a01734 = "MegaSR"
PCI\VEN_8086&DEV_2683&SUBSYS_10a01734 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_10901734 = "MegaSR"
PCI\VEN_8086&DEV_2683&SUBSYS_10901734 = "MegaSR"
PCI\VEN_8086&DEV_2682&SUBSYS_81FF1043 = "MegaSR"
提示:不同RAID驱动程序的代码内容各不相同,应该根据具体情况灵活处理。
检查拷贝修改的内容是否与原有的内容重复,如果有,则把重复的一行删除。接着在“txtsetup.sif”文件查找“[SCSI.load]”和“[SCSI]”字段,添加如下内容:
[SCSI.load]
MegaSR = MegaSR.sys,4
等号前的字符根据驱动酌情更改,等号MegaSR后代码一般照抄使用。
图5
[SCSI]
MegaSR = "Intel Embedded Server RAID Technology (Windows XP/2003)"
图6
[注意]此信息是从驱动的txtsetup.oem文件(或.INF文件)[SCSI]字段中获取,如下图:
图7
至此,我们就把自己的RAID驱动程序的相关信息添加到了Windows 2003安装信息文件“txtsetup.sif”中了!
上述添加自定义RAID信息内容的步骤看似很复杂,其实也就是同时打开Windows 2003安装文件目录中的“txtsetup.sif”文件和驱动程序目录中的“.inf”或“.oem”信息文件,然后将后者文件中相关字段下面的内容一一对应地移植到“txtsetup.sif”文件中。知道了方法,做起来就容易了!
五、修改“winnt.sif”文件内容
现在,我们已经完成了两个最重要的步骤:一是获取了RAID驱动程序文件,它们现在被保存在“D:\w2003RAID\$OEM$\$1\drivers\IntelMegaSR”文件夹中;二是修改了Windows 2003安装时自动加载驱动程序的信息文件“txtsetup.sif”。但现在有一个新的问题:Windows 2003在安装时如何知道它所需要的驱动程序文件在哪个目录下呢?
这个问题则需要通过修改“winnt.sif” 这个文件来解决。这个文件是Windows 2003系统在安装时的附加信息文件,可以在其中指定非微软提供的第三方驱动程序的安装路径。
用Windows Setup Manager Utility创建 unattend.txt 文件, 重命名文件为winnt.sif 并复制到D:\w2003RAID\i386 目录下。下图中 OemPnpdriverPath 一行添加所有PnP 驱动路径[本例是:“OemPnPDriversPath=drivers\IntelMegaSR”,如果不止一个驱动,请用半角分号分隔,如:“OemPnPDriversPath=drivers\IntelMegaSR;drivers\IntelSAS;drivers\AC97”]。并确保[Unattended]项下的OemPreinstall等于Yes(OemPreinstall=Yes)。请见图8。
图8
“OemPnPDriversPath=drivers\IntelMegaSR”这段代码是指随后生成光盘时,驱动程序相对于光盘根目录所在的相对路径。如果我们打算把保存驱动程序的文件夹如IntelMegaSR放到新生成的安装光盘的根目录,就不必包含任何子目录路径:OemPnPDriversPath= “IntelMegaSR”。
[注意]可以从 Windows 2003 Server 光盘的Supports\Tools文件夹下的Deploy.cab 文件解压得到Setup Manager utility。Setup Manager 可以引导创建unattend.txt 文件。注意,请用记事本编辑unattend.txt文件。
另外要提醒的一个小点是,[Data]字段下的AutoPartition的值最好更改为0(AutoPartition=0),因为这样我们在安装系统的时候可以手工选择安装分区,而且在需要格式化该分区时,可以先删除该分区,再重建分区,然后格式化;而此值一般默认是1,如果这样,在安装时程序会自动随机选择一个有足够空间的分区安装,且不对该分区格式化。请看图9:
图9
全部修改完毕后,用记事本保存文件时,一定要输入完整的文件名,并且一定要用半角的双引号将文件名引起来,如“"winnt.sif"”,否则实际上生成的仍然是个文本文件(Winnt.sif.txt),这将导致安装过程中出错,RAID驱动程序无法自动加载!当然也可以在让系统显示文件扩展名的情况下将文件名更改为“winnt.sif”,以确保文件后缀名的正确无误!
六、将RAID驱动压缩到安装文件
使用支持CAB文件格式的工具(如WinRAR等),将驱动程序目录中扩展名为SYS的文件压缩到I386目录下。
这里我们可以使用Windows 2003本身附带的一个命令行工具“makecab.exe”,它位于“C:WINDOWS\System32”目录下。由于“System32”是默认的搜索路径,因此使用时不需要程序所在的路径。
在开始菜单中打开“运行”对话框,输入cmd命令,再在DOS提示符下运行以下命令:
makecab d:\w2003raid\$oem$\$1\drivers\intelmegasr\megasr.sys d:\w2003raid\i386\megasr.sy_
(此处为便于截图,可以直接输入“运行”对话框运行)
此命令运行的结果是在i386\文件夹下生成一个名为megasr.sy_的文件,这个文件是用来加载驱动的!
图10
此命令中具体的驱动程序文件名和保存路径请根据实际情况灵活更改。
七、重新生成安装光盘
经过上述步骤,现在已经是万事俱备,只待刻盘了!
准备任意一款支持制作可引导型光盘的工具程序,如经典的软件“WinISO”、“ISOCommander”及国产软件“UltraISO”等均可。生成可引导光盘的方法有很多种,为避免大家到处寻找那些生僻的工具软件,这里以UltraISO[下载地址 ]为例,分若干个步骤进行:
(1)制作原始安装光盘镜像
这一步的目的是方便从制作出来的光盘镜像中提取引导文件。其实也有专门的直接提取光盘引导区的工具,但操作稍麻烦,因此在这里多花费一两分钟还是很值得的。
将Windows 2003的原始安装光盘放入光驱中,启动UltraISO,按“F5”键,或者执行“工具”菜单中的“制作光盘映像文件”(图5),根据提示指定一个镜像文件的保存位置,随后程序会自动开始读取光盘并完成镜像文件的制作。
图11
(2)提取光盘镜像中的引导信息
在UltraISO主界面中,依次点击“文件”――“打开”――定位刚制作好的映像文件――“打开”,再执行“启动光盘”菜单中的“保存引导文件”命令(下图),将引导信息保存到硬盘上备用,比如保存为“D:\Win2k3Boot.bin”。
图12
(3)新建光盘镜像
在UltraISO的“文件”菜单中执行“新建”命令;从资源管理器中,点击左下角,定位到D:\w2003RAID文件夹,再将光标移至右下角区域并点击一下,再用组合键Ctrl+A全选 “D:\w2003RAID”文件夹中的所有文件,“鼠标右键”――“添加”,将所有文件加入。
图13
[注意]添加时一定不要包含w2003RAID目录本身!也就是说,文件添加成功后,在光盘的根目录下应当可以看到“I386”文件夹。
(4)加载引导信息文件
执行“启动光盘”菜单中的“加载引导文件”命令,找到上一步提取的光盘镜像的引导文件,即“D:\Win2k3Boot.bin”。现在,新建的光盘镜像就具备与原版Windows 2003安装光盘相同的引导功能了。
图14
(5)更改光盘名称
将光标移至窗口左上角光盘名称处,右键――“重命名”,将光盘取个容易理解的名称,好比:NRMEVOLCNS2SR。
图15
(6)保存光盘镜像
按“CTRL+S”或者执行“文件”→“保存”命令,指定一个保存光盘镜像的路径和文件名(如“D:\NRMEVOLCNS2SR.iso”等),确定后UltraISO就开始向指定路径生成光盘镜像文件了。
(7)刻录安装光盘
使用Nero或者其他任意一款支持光盘镜像文件刻录的工具软件,将上述得到的光盘镜像文件(这里即D:\NRMEVOLCNS2SR.iso)刻录到光盘中。现在,用这张安装盘在支持RAID的硬件环境下全新安装Windows 2003,你就既不必按F6,也不需使用什么软盘,非常方便。
[总结]制作集成RAID驱动程序的Windows 2003安装光盘是一件比较复杂的工作,任何一个小小的失误都可能导致无法正确地加载驱动程序。此外,不同主板附带的RAID驱动程序的文件名称、数量、信息文件的内容各不相同,在集成时不能硬套,只有举一反三才能成功。
在用此法制作的光盘安装系统时,如果出现认RAID盘成功、复制安装文件成功,但重启后找不到硬盘的情况,那可能是您的服务器安装了多个RAID,请把系统之外的其他RAID暂时卸载后再安装,系统安装成功后再装其他RAID。
全文到此结束,若按此法还是未能制作成功您想要的光盘,请认真检查您的每一步设置,设置正确了,成功的可能性应该在99.99以上!请勿徒劳地找寻其他资料来消耗您宝贵的青春!
上一篇:WinDbg配置和使用基础
下一篇:FSMO五种角色的作用、查找及规划