现在我们可以接着整合驱动了。 驱动程序是沟通操作系统和硬件的重要桥梁,通过驱动程序可以让操作系统识别更多的硬件,并使硬件发挥更好的性能,如果缺乏驱动程序。系统就会出现无法上网,无法播放视频音频,显示效果糟糕,摄像头无法使用等情况,所以我们要把驱动包整合进去。 整合驱动有两种方法:第一种是通过整合包整合,第二种是手动整合。 我们先用第一种方法: 以IT天空(原来叫自由天空)驱动包为例,这里选用的是E驱动5.20版。 我们先打开RVMI,单击“选择附加组件包”浏览框,选择蜻蜓特派员制作的添加E驱动的组件包。然后单击“开始集成”。 一分多钟后,E驱动整合包已经集成进去了,但是这个这是集成了配置文件,驱动并没有集成进去。现在我们继续添加驱动文件。 打开I386文件夹,我们发现已经多了一个EasyDrv的文件夹,把鼠标放上去还提示“请把驱动文件放在这里”。我们把E驱动的驱动文件放到该文件夹,把不需要的文件删掉。目录结构如下: 同时,我们记得修改EasyDrv5(x86).exe为EasyDrv.exe。否则该文件不会启动。接着,我们简单修改E驱动的配置文件[WinXP.x86]EzDrv5.ini。设置如下: 做好这些后,E驱动就整合进去了,将于“剩余39分钟”被调用。 PS:这个是利用微软官方T39接口来实现的。就是离安装完成还有39分钟时调用某一程序,而该功能在WINNT.SIF文件的[GuiUnattended]段的DetachedProgram 设置项实现的,如:DetachedProgram = "%WinDir%\DrvLoad.exe "。 自由天空驱动调用工具参数说明: -DrvMain=XXX.exe :主程序名参数 默认值为 EasyDrv.exe -TimeOut=X :删除驱动程序等待时间(关于X的解释如下) -2 禁用驱动删除功能 -1 表示直到用户单击删除才会删除驱动 0 表示不提示用户直接删除驱动 其他大于0值表示 X秒后自动删除驱动 默认值为 -1 示例: DetachedProgram = "%WinDir%\DrvLoad.exe -DrvMain=DrvS.exe -TimeOut=10" 测试效果: 第二种办法: 这里我们需要修改 txtsetup.sif 、 dosnet.inf 文件和Winnt.sif文件来实现。 其实关于 txtsetup.sif 和 dosnet.inf 中有很多深奥的东西,不过我们没必要熟悉它们其中的每一个字符,我们只用最好用和最简单的。掌握这些最好用和最简单的已经可以让我们关于安装版系统光盘的制作技术上一个台阶了。 Txtsetup.sif是控制安装过程中要从哪个位置读取哪个文件复制到何许位置,简单的说,就是文件复制控制。Dosnet.inf则是控制在 DOS 或 Windows 环境下安装系统时预先复制到硬盘上的文件。 基本而言,txtsetup.sif和 dosnet.inf中的文件应该是一一对应,不过如果不需要 DOS 或Windows 环境下安装系统,则无需修改 dosnet.inf只修改 txtsetup.sif既可。 这里我们以添加小兵驱动选择工具和IT天空驱动包为例。我们先在I386文件夹下新建Drivers文件夹,把小兵驱动选择工具和IT天空驱动包释放到该文件夹下。 接着我们修改 txtsetup.sif文件。 首先我们了解下 txtsetup.sif文件的部分含义。 先要看的是[SourceDisksNames.x86]段 [SourceDisksNames.x86] 1 = %cdname%,%cdtagfilei%,,\i386 2 = "%cd2name%","%cd2tagfilei%",,\cmpnents\tabletpc\i386 …… 这里规定了复制文件时的源位置,例如1 代表光盘根目录下的 i386文件夹。 其次我们要注意的是“[WinntDirectories]”段 [WinntDirectories] [WinntDirectories] 1 = "\" 2 = system32 …… 这里规定了复制文件时的目标位置,默认根目录是 Windows 文件夹,1 代表 Windows文件夹根目录,2 代表 Windows\System32 文件夹。 最后要看的是[SourceDisksFiles]段,这一段控制我们从源位置读取什么文件复制到什么位置。 例如我们想集成 OEM 信息和图片,这就需要把 oeminfo.ini 和 oemlogo.bmp 复制到Windows\System32 文件夹下,我们可以在[SourceDisksFiles]段下添加 oeminfo.ini = 1,,,,,,,2,0,0 oemlogo.bmp = 1,,,,,,,2,0,0 oeminfo.ini 和 oemlogo.bmp代表我们要复制的文件的文件名。 1 这个位置是用来填写源文件位置,即[SourceDisksNames.x86]段中规定好的位置,以上两行中的源位置都是1,那么系统在复制文件时就会去 i386 根目录下去寻找这个文件。 1 和 2 之间的“,” ,其实每个“,”间都有相应参数,不过这些参数我们用不上,所以就不用写了。 2 这个位置用来填写目标文件位置,也就是[WinntDirectories]段中预先规定的位置,例如2 代表Windows\System32 文件夹,那么系统在复制文件时就会把这个文件复制到Windows\System32 文件夹下。 随后的两个“0”也是参数,不过意义不必了解,但是一定要写。0 后其实还可以跟一个参数,就是用来重命名文件的,例如: Ty.jpg = 1,,,,,,,1981,0,0,type.jpg 1 代表源文件所在地为 I386 文件夹,1981 代表目标为 Windows\Web\Wallpaper。那么这行的含义即从 i386 文件夹中复制 ty.jpg文件到 Windows\Web\Wallpaper 下,并改名为type.jpg。 现在我们开始对 txtsetup.sif文件进行修改: 在[SourceDisksNames.x86]字段添加如下内容: 2900 = %cdname%,%cdtagfilei%,,"\i386\Drivers" 2901 = %cdname%,%cdtagfilei%,,"\i386\Drivers\VIDEO" 2902 = %cdname%,%cdtagfilei%,,"\i386\Drivers\AUDIO" 2909 = %cdname%,%cdtagfilei%,,"\i386\Drivers\AIDA64" 其中2900、2901、2902、2909是任意指定的,记住不要和[SourceDisksNames.x86]字段其他内容重复即可。 在[WinntDirectories]字段添加如下内容: 2900 = Drivers 2901 = Drivers\VIDEO 2902 = Drivers\AUDIO 2909 = Drivers\AIDA64 接着在[SourceDisksFiles]字段下添加: drv2012.exe = 2900,,,,,,,1,0,0 drv2012.ini = 2900,,,,,,,1,0,0 AIDA64.exe = 2909,,,,,,,2909,0,0 AIDA64.dat = 2909,,,,,,,2909,0,0 kerneld.x32 = 2909,,,,,,,2909,0,0 lang_cn.txt = 2909,,,,,,,2909,0,0 pkey.txt = 2909,,,,,,,2909,0,0 adi.7z = 2902,,,,,,,2902,0,0 ati.7z = 2901,,,,,,,2901,0,0 Chipset.7z = 2900,,,,,,,2900,0,0 Camera.7z = 2900,,,,,,,2900,0,0 C-Media.7z = 2902,,,,,,,2902,0,0 Conexant.7z = 2902,,,,,,,2902,0,0 Creative.7z = 2902,,,,,,,2902,0,0 HDAudio.7z = 2902,,,,,,,2902,0,0 intel.7z = 2901,,,,,,,2901,0,0 Network.7z = 2900,,,,,,,2900,0,0 modem.7z = 2900,,,,,,,2900,0,0 nVIDIA.7z = 2901,,,,,,,2901,0,0 other.7z = 2902,,,,,,,2902,0,0 Realtek.7z = 2902,,,,,,,2902,0,0 Sigmatel.7z = 2902,,,,,,,2902,0,0 sis.7z = 2901,,,,,,,2901,0,0 via.7z = 2902,,,,,,,2902,0,0 via(s3).7z = 2901,,,,,,,2901,0,0 vmware.7z = 2901,,,,,,,2901,0,0 这里面左列的文件为Drivers下所有的文件,记住文件夹名不可错误,否则复制时出错。另外右列的2902对应着上面指定的Drivers\AUDIO文件夹。2901、2900对照其他相应文件夹。而“drv2012.ini = 2900,,,,,,,1,0,0”1对应着[WinntDirectories]字段指定的Windows文件夹。 然后我们再修改DOSNET.INF文件。 Dosnet 中相应要修改的东西就简单的多。先看[Directories]段,这段代表文件复制的源位置 [Directories] d1 = \I386 d2 = \cmpnents\tabletpc\I386 d10 = "\i386\Drivers" …… 再看[Files]段 [Files] d1,2gmgsmt.sf2 d1,3cwmcru.sys …… 这段代表要从源位置去复制哪些文件。 如果在 txtsetup.sif中添加了: drv2012.exe = 2900,,,,,,,1,0,0 那么 dosnet 中要相应添加: d10,drv2012.exe 这样即可。 具体操作如下: 我们先在[Directories]字段添加: d10 = "\i386\Drivers" d11 = "\i386\Drivers\VIDEO" d12 = "\i386\Drivers\AUDIO" d19 = "\i386\Drivers\AIDA64" 其中D10、D11等可任意指定,记住不要和该字段其他内容重复即可。 接着在[Files]字段添加: d10,drv2012.exe d10,drv2012.ini d10,Camera.7z d10,Chipset.7z d10,Network.7z d10,modem.7z d11,ati.7z d11,intel.7z d11,NVIDIA.7Z d11,SIS.7Z d11,VIA(S3).7Z d11,VMWARE.7Z d12,C-Media.7z d12,Conexant.7z d12,Creative.7z d12,HDAudio.7z d12,OTHER.7Z d12,REALTEK.7Z d12,Sigmatel.7z d12,VIA.7Z d19,AIDA64.exe d19,AIDA64.dat d19,kerneld.x32 d19,lang_cn.txt d19,pkey.txt 即可。 最后我们修改winnt.sif 文件: [GuiUnattended] 段下添加一项 DetachedProgram = "%windir%\Drv2012.exe" [Unattended] 段下设置 DriverSigningPolicy = Ignore NonDriverSigningPolicy = Ignore PS:微软官方提供了一个T39接口,就是离安装完成还有39分钟时调用某一程序,而该功能在WINNT.SIF文件的[GuiUnattended]段的DetachedProgram 设置项实现的。 测试效果如下: |