简单介绍一下封装和克隆

最近,老看到一些一些诸如“封装后输入法设置丢了啊”、“封装后IE设置丢了啊”、“封装后自动更新又打开了啊”、“我明明封装前设置好了的,封装后防火墙又打开了啊”之类的帖子,甚至于因此引出了“ES重大bug”或者强烈要求ES更新解决bug之类的,究其原因,是因为没有搞清楚封装到底是什么,封装到底做了哪些操作,封装与克隆的区别。在此基于自己的理解,简单介绍一下封装与克隆,因水平有限,如有谬误,欢迎指正。

封装主要的目的是为了将 Windows 映像部署到不同的电脑,那么借用微软的话来说,就必须从映像中删除计算机特定的信息,这是封装最核心的事情。

当然封装还有其他事情,譬如在部署阶段提供各种接口,方便对新建用户、应用软件进行各种配置、方便用户添加驱动等。

主要说第一点吧,何谓计算机特定的信息呢?计算机名称,用户名,用户的SID,操作系统的授权许可,硬件驱动、微软某些软件的设定(譬如IE浏览器的各种设置、windows media player的各种设定、输入法的设定)等等,这些在封装的过程中都会进行处理的,硬件驱动也相当重要,也会在封装过程中进行处理。对于NT5系统来说,微软会卸载清理掉,对于NT6系统来说,微软会解除驱动关联。当然,不同版本的Windows,微软的认定、处理方法不尽相同。

如果不处理硬件驱动,会有什么影响呢?最起码会有驱动残留啊(洁癖党受的了吗);驱动就有可能相互冲突,那么在新机器上就很有可能蓝屏、无法启动或者工作不正常;匹配了不合适的驱动有可能降低性能啊。

如果不处理软件相关的设定,那么用户名、计算机名称、用户的SID等等在新机器上也会是一样的,这样就世界大同了啊;这样也会有相当的风险的,譬如不处理账户SID,造成同一批机器都是相同的SID,那在局域网环境中可能就会出现严重的网络安全问题了。

其实封装本身是个很简单的事情:

(1)对于WinXP/2003等NT5系统而言,需要从系统源盘工具中提取deploy工具包,提取其中sysprep.exe及相关程序文件,创建C:\Sysprep目录,并将sysprep.exe及相关文件复制到其中。执行C:\Sysprep\sysprep.exe,按照UI的提示说明进行操作,即可完成封装;

(2)对于Win7/8/2008/2012等NT6系统而言,封装更加简单,直接运行C:\Windows\system32\sysprep\sysprep.exe,按照UI的提示说明操作,即可完成封装。

所以“封装”并不复杂,真正麻烦和复杂的是我们所提出的各种各样的需求。例如我们需要增强系统部署范围,这样就要集成各种磁盘控制器驱动;我们需要更多接口,以调用自己所指定的程序(万能驱动、运行库、软件包、优化等);我们要压缩C盘软件节省体积,并于部署时释放;我们要让部署背景更好看,要在部署中显示更明确的进度等等。而正是我们的这些需求,令封装变的相当复杂,从而一定程度上降低封装成功率和稳定性。

说了以上这些,再说些题外的,假如你要封装,为了提高封装和部署的成功率,在封装时,你就应采取“硬件最小化”原则,即尽量减少非必要硬件,譬如去掉软驱、串口、并口、软盘控制器、USB设备等等,为达到这个效果建议尽量采用虚拟机封装,不要实体机封装。

那么如何实现自己的设定呢?导出相关设置的注册表项、或者自己做批处理在部署阶段(部署的各个阶段自己看一下区别)调用、自己编译可执行文件调用等等,这些要靠自己的长期积累和实践了。

而克隆基本上是对文件或者磁盘扇区完整的拷贝(ghost打包操作系统镜像时其实会忽略掉页面文件、休眠文件等),如果对没有封装的操作系统直接ghost打包,在异机上进行恢复操作,那么会缺少部署过程,之前是什么样,之后还是老样子。前文所说的封装的种种操作都不会进行,那么用户名、计算机名称、用户的SID、硬件驱动等等均是一样的,那么就有可能出现蓝屏、无法启动、授权失效、被识别为同一台机器等各种各样的问题。

有人会说,我用非封装的ghost克隆镜像包,在异机上恢复没有出现蓝屏等问题,甚至试过很多台机器都没有出现。我想说的是,如果你机器只是简单的一些办公,使用率不高,如果平台差异不大,的确几台、几十万台或许都不会出现大问题,但是稳定性呢?如果是局域网启用了文件共享那安全性呢?一些通过硬件识别的软件或许就会报错用不了或者直接识别为同一台,又或者启用了不匹配的驱动降低了硬件的性能等等不一而足,这些例子中我是遇到过一部分的。最后你再试一下平台差异性很大的机器,譬如一台老奔腾4代的机器,一台酷睿8代的机器试试看呢

有人说通过万能驱动或者SkyIAR的“换硬件不换系统”清理掉驱动,再用万能驱动安装驱动,那么封装没有什么必要。

SkyIAR的换硬件不换系统只是一种应急方案,其主要针对的是硬件驱动中磁盘控制器驱动和即插即用驱动,而且其使用条件中也写明“更换前后的硬件平台差异不算太大,硬盘读写机制无太大差别”,其清理也不可能做到100%精确,可能会有遗漏和误删除,这是由Windows系统复杂性的客观条件所决定的,SkyIAR能做的是尽一切可能的精确。一种应急方案,拿来当通用方案,这真没什么好说的。

而万能驱动的清理驱动功能说明如下,请仔细读一下

说明与注意:

(1)清理驱动是指切断已安装驱动与系统之间的关联,而不会删除掉已安装驱动的文件(微软自己的卸载亦是如此);

(2)本功能一般用于“当目标系统存在驱动冲突问题而无法解决时”进行补救,或进行驱动测试,非日常功能;

(3)本功能与原SkyIAR中的功能类似但更为完善,亦可达成“换硬件不换系统”等效果;

(4)离线清理工作不可能100%完善,清理可能导致目标系统异常,请谨慎使用。

缺陷已经足够多了,前文所说的封装的种种操作又无法实现,你还觉得封装没什么必要??

所以,如果是要用在异机上,那么最好是采用封装,ghost克隆一般比较适合于本机备份。不过如果你是开电脑店的,新进一批相同的机器,你又不会封装,那么直接克隆一台机器再用到其他机器上一般问题不大,如果用到其他平台不同的机器上,就只能祝你好运了。


分享到:


相關文章: