驱动集成是玩转系统的基本功之一。现在常用的方法是在注册中指定驱动搜索位置。或者是先将驱动分类别压缩,恢复时先判断目标机器所需要的驱动包,再解压相应的驱动包。
做系统首要任务是稳定兼容。XP光盘中自带的驱动其实都很不错的。但我们却时常将之抛弃。微软将自带的驱动文件全都压缩成driver.CAB 和SP2.CAB。要安装过程安装程序会先找到驱动INF文件,然后根据INF文件中所指定的驱动文件,自己到driver.CAB 和SP2.CAB中搜索并将相应的驱动文件解压出来。其实微软才用CAB格式也是有道理的,现在流行的7Z格式,如果不采用固实压缩,其压缩比CAB也没啥优势。但固实压缩有个缺点就是要在压缩包中搜索和解压单个文件的速度要比CAB慢好多。并且7Z作固实压缩,解压时要占用的内存也比CAB大(在DOS中占6M左右吧)。7Z的固实压缩的优势是在于整体解压。
哈~ 废话多啦!~ 以下转入正题:
以前本人所用的本子VIA声卡驱动为例来介绍。
1. 精简驱动。主要是精简掉多余的语言支持,文本,帮助,Html页面,不想要的增强工具等。这一步网上已经有好多现成的啦。这个VIA AC97声卡驱动,经精简后只有2个文件。分别是vinyl97.sys和
vinyl97.INF。
2.将经过处理的INF文件复制到%WINDIR%\INF文件夹中。把剩下的SYS或DLL或EXE文件都复制到MYDRIVER目录中,并将其打包成MYDRIVER.CAB。我试验的MYDRIVER.CAB只含有一个文件vinyl97.sys。处理方法见第5步。
3.将MYDRIVER.CAB复制到%WINDIR%\Driver Cache\i386中
4.修改位于%WINDIR%\INF中的Drvindex.inf文件。示例:
[Version]
signature="$Windows NT$"
CabFiles=driver,mydrivers ;添加mydrivers
[mydrivers] ;添加节名[mydrivers]
vinyl97.sys ;添加MYDRIVER.CAB中的文件名
[driver]
2gmgsmt.sf2
3cwmcru.sys
……
……
[Cabs]
driver=driver.cab
mydrivers=mydriver.cab ;指定[mydrivers]为MYDRIVER.CAB
这个Drvindex.inf比较特殊,因为我已经将driver.CAB 和SP2.CAB合二为一啦。
5.处理第2步中的INF文件。找到[SourceDisksNames] 或[SourceDisksNames.x86] 这样的段,
下面一行1=%DISKNAME%,,, 改成1=%DISKNAME%,"MYdriver.cab",,"i386"
提示最前面这个数字不是1,也可以是其它的哦。示例:
; Copyright (c) 1998-2004 VIA Technologies, Inc.
[Version]
;CatalogFile=vinyl97.cat
Signature="$CHICAGO$"
Class=MEDIA
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
provider=%VIA%
DriverVer =07/23/2004,6.14.01.4060
[ControlFlags]
ExcludeFromSelect=*
[SourceDisksNames]
222="Vinyl AC'97 Codec Combo WDM Driver Disk","MYDRIVER.CAB",,"I386"
[SourceDisksFiles]
vinyl97.sys=222
封装版的只需要更改这些。安装版还要修改Txtsetup.sif 和Dosnet.inf的。