|
楼主 |
发表于 2008-4-26 08:38
|
显示全部楼层
以S&R&S为例,谈一下封装及封装工具-Deepin小兵
以S&R&S为例,谈一下封装及封装工具-Deepin小兵
一个不经处理的Windows系统直接恢复到另一台机器上,最有可能出现的情况就是蓝屏,或者反复重新启动。那么,造成蓝屏、重启等的原因是什么呢?事实上,这就是通用克隆系统所要解决的最基本的技术问题。
我们这里以封装XP系统为例,2003及2K的方法都是大同小异的
首先我们来了解一下封装的步骤:
一.安装操作系统
装系统、打补丁,至于集成驱动及软件、优化或美化等由需要而定。
Dllcache备份的步骤可选,这里就不单独列为一项了。Dllcache备份的原理不是备份文件,而是备份文件名,在系统恢复后从I386的CAB包中提取相应文件。Deepin XP lite是没有这些文件的,300多兆的Dllcache并不是必需的。
二.删除、更改系统硬件驱动
1.更改HAL电源模式的方法其实有很几种,目前主流的就是使用Longhorn的ntldr自动判断。longhorn的ntldr有一个新参数,即/detecthal(在boot.ini的启动项中设置),通过这个参数,可以实现自动判断并选择计算机类型,而且这种技术由于源出于微软,所以其结果是百分百准确的。基本上,使用Longhorn技术来判断正确的hal就是目前最完美的解决办法。死改不改的S&R&S 9.x版本基本上都使用这种方式。
2.更改存储控制器类型
硬盘控制器包括PATA(传统的硬盘控制器)、SATA、RAID、SCSI等,实际上,死性不改的S&R&S就是SATA&RAID&SCSI的意思。在通用克隆发展的早期,SATA硬盘还不是很流行,这个问题还不是很严重,因为所有的PATA(IDE)控制器都兼容于标准双通道IDE控制器,所以人们制做克隆时只需要将源机器的IDE控制器修改为标准双通道即可。但很显然,SATA并不兼容于标准双通道,所以当时制做的克隆系统在SATA硬盘上恢复后重启时会出现蓝屏。
3.删除其他硬件驱动
三.封装
依照作者选用的封装方式,封装的步骤也就不尽相同。如果选用SRS的话,这里就可以直接封装了,它会调用sysprep完成封装过程。手工替换NTLDR的就需要自己细心一点,替换文件、删除相关注册表等。
注:S&R&S9.7集成了更改电源及IDE模式的功能,所以第二步里面的1和2也可不做。
下面我们研究一下封装工具都做了些什么:
一.电源检测
S&R&S9.X采用了基于MCC硬件抽象层电源识别技术,即替换LONGHORN版本的NTLDR,依靠/DETECTHAL来完成对电源模式的检测。早期是需要用户手工选择的,这里就不说了。
二.更改IDE模式
通过mshdc.inf文件来更新IDE模式为双通道
runwait(\"devcon update \"&@windowsdir&\"\\inf\\mshdc.inf E_ISA_UP\",\"\",@SW_HIDE)
三.驱动集成
很显然,以我们个人的能力是不可能搜集到所有的MassStorage设备的驱动的,同时存储技术在不断发展,新硬件也层出不穷,这是通用克隆不可能实现万能的原因之一。
S&R&S9.X采用了DPS驱动包,所以大家在N多使用不改的封装工具的GHOST作品里都可以看到“含大多数驱动,支持SATA。。。支持64位”。这话是怎么来的呢?
This one supports almost all (none are reported missing) MassStorage controllers (PATA, SATA, SCSI, RAID and al their combinations).
大家可以到这个地址下载相关驱动:http://www.driverpacks.net/DriverPacks/
除了存储设备的驱动,新型的CPU以及USB键盘、鼠标等设备驱动也要集成到系统里,例如AMD K8 CPU等。不过,这些驱动之间有可能存在不兼容问题,驱动的不兼容会导致同时加载时直接死机,例如intelide与viaide的不兼容问题,这是导致克隆不能万能的原因之二,也是最主要的同时也很难解决的问题。
至于更改及恢复启动菜单、调用sysprep进行静默封装等非技术步骤,这里不做讨论。
了解了封装工具的工作原理以后,我们会想:
封装工具是必需的吗? 答案是:不!
在预封装问题上,为了让系统能正确识别MassStorage设备,目前可以采取集成驱动到system32\\driver或使用txtsetup引导(深度的V2及老毛桃的PE都是这样做的)的办法。
通过手工替换相关文件,可以做到完美的电源检测,在深度白金3in1中已经做到了100%准确。虽然SRS采用的也这个技术,但是在实际应用中,效果仍不是绝对满意的,出现了部分用户无法正常关机的情况,也就是电源检测上出了问题。
尽管我们可以通过手工替换NTLDR及HAL、修改注册表、更改电源及IDE模式,最后运行SYSPREP进行封装,但是在一些驱动问题上,我还没有做到面面俱到,在3in1中就已经体现了对一些SATA等设备的识别问题。
Windows NT不再依赖于BIOS提供的方式访问硬盘,而是通过底层的驱动程序,如果没有加载对应的驱动程序,那么Windows就会找不到硬盘,找不到硬盘当然就不可能将Windows启动起来。而DOS则是通过BIOS来访问硬盘的,所以这也是为什么DOS能够访问SATA、RAID、SCSI硬盘而Windows却不能访问的主要原因。目前,死性不改正在探索在DOS下运行的S&R&S软件,目的就是解决这个问题,其实现原理就是根据目标机器的硬件情况在DOS下只加载适合目标机器的对应的驱动,这样就可以有效避免驱动程序的不兼容问题。
实际上我们深度已经有了自己的封装工具,但是我们必须看到这条路的发展方向,我个人认为,封装工具不是必需的,而辅助工具却是急需的。 |
|