《封装志》
第 1 章、初识封装与部署技术- X$ H) l6 }- O; b; l4 D
讲述此项技术的基本原理,展示 WinXP 和 Win7 的基本封装与部署过程。( J* u7 Q$ A9 A$ C( Y& T" V
第 2 章、硬件设备驱动的处理, j$ F5 ~; e" \4 ]
封装前对硬件设备驱动的卸载以及对 HAL 的处理等。; ?' O: j+ U& v2 P/ }" t \
第 3 章、磁盘控制器驱动的制作与集成
讲述 SRS 驱动的制作过程与集成方法,以及所要注意的问题。9 H5 I2 ~9 c% G7 m% ~$ N' h9 B
第 4 章、基本部署自动化控制
使用微软提供的无人值守工具使部署过程自动化。( ]3 h/ |* W, c" O$ i! n) {; X# O4 Z
第 5 章、进阶部署自动化控制
发挥我们的才能,进一步控制系统部署过程,使更方便。
第 6 章、驱动综合包的制作与集成 1 e y6 F6 B8 v6 n. A3 }. I) E" b
驱动综合包的制作方法和集成方式。
第 7 章、手动封装与部署控制实例
完全手动的封装系统,并用手动控制部署过程。
第 8 章、自动封装与部署控制实例! \* v; m6 T% v% _! |# F+ n9 h
使用 ES3 封装系统,完全自动化的系统部署控制。
0. 序言
虽然是序言,但还是希望大家能认真的读一下。$ h0 r) u! B, F
0.1 一份担忧 4 {$ p3 P7 ?. E( ~" I
系统封装与部署技术从被搬上台面到现在也有 5 到 7 年的时间了,从最初是少数高人手中的玩具,逐渐的变成大量老菜
鸟津津乐道的话题,再到现在一个普通 IT 人员都可以使用封装辅助工具独立的完成系统封装与部署。这项技术在飞速的发展
着,也被广大 IT 人员使用着,在看到此项技术被广泛应用的同时,一份前所未有的担忧也伴随了我将近 3 年的时光。2 W( x1 a8 M, n9 D5 I
自动化封装辅助工具的出现,虽然简化了操作、拓展了适用范围,但是很多技术也被逐渐的隐藏了起来。很多功能不再
需要操作者手动修改注册表、亲手编写批处理了,这些功能变成了只需要选中一个选项、单击一个按钮就可以完成的事情。
诚然,这令系统封装变的史无前例的简单,有效的降低了工作者所需的技术门槛,但这也使得系统封装与部署技术的真正技
术内幕变得只有越来越少的人知道,太多的所谓“能独立封装系统的人”只具备浮于表面的技术水平,一旦遇到较为纠结的问
题,一旦遇到较为特殊的情况,一律无法解决,缺乏解决问题的技术能力和基本素养。7 P! ~6 O9 K2 R9 s
自动化封装辅助工具的出现也带来了其他附带的问题。由于很多操作变得简单化,正如上文已述的,很少需要用到手动
修改注册表,也很少用到亲手编写批处理解决问题,甚至有些人连打开控制面板点选某个选项都懒得亲手做,所有功能一律
由自动化封装辅助工具包办。而恰恰是这些操作,在潜移默化的培养着一个 IT 从业者的基本技术素养,很多技术要靠实践的
磨练。) k2 f( b- _( t* C# }* H2 d5 x
但是说到这里,并不是说我们要反对自动化封装辅助工具。自动化封装辅助工具在推广自动化系统封装与快速部署技术
的过程中功不可没,没有它,现在系统封装部署技术还是少部分所谓高人手中赚钱的工具。自动化封装辅助工具有效的让更
多新人入门,也让更多的老手节省了时间和精力。拿来主义讲,我们要善于拿来精华,去除糟粕。我们在享受“一键封装”的
过程中,必须还要能摸清这门技术。- {2 H. O& _- R3 E
系统封装和部署技术不是你家的电视机、空调和洗衣机,按几个按钮什么都解决。我们不需要去了解这些电器的内部结
构,是因为它们足够稳定,而且有专门的修理人员。但操作系统本身就存在有各种可能性,程序本身就可能存在各种 BUG,
作为 IT 业者的我们,一旦在使用这门技术时发现和遇到问题,也只能靠我们自己来“修理”。特别是系统方面的问题,很多问
题不只有其表象上的问题,我们要善于通过现象看本质,而不能浮于“什么怎么样,应该怎么办”上,电脑中没有死的规则,
一个问题可以有 N 种解决途径,同样一个问题也需要我们从 N 个方面去分析和理解。知其然且知其所以然,这样才能应用
一项技术。只知其然而不知其所以然的,只能说自己会用,但永远不能说自己可以“应用”!+ z T4 G- i% E- y3 l- i9 `4 \
说到这里,如果没有系统封装与部署技术的知识撑腰,如果您目前仅仅限于会用封装辅助工具,那你敢说自己会封装了
吗?进一步说,你还敢封装吗?; r: e9 s7 Z. E
0.2 我不会讲的和我会讲的$ T" q$ Y, `! j$ a# G- E
在本书中我不会讲如下三条内容:
1、怎么打开注册表、怎么打开设备管理器、怎么写批处理、怎么改文件后缀名以及怎么按开机键打开电脑等等。这是
一个只要想搞搞电脑技术的人所必备的基本素质,我想我不需要就这些基本的小事还婆婆妈妈的长篇大论。
2、怎么分区、怎么安装系统、某某分区工具怎么用、虚拟机是什么等等。软件的使用方法,只有多尝试、多实践,不
要以为走弯路是耽误你实践,没有白走的路,多走的这些路正是你磨练的过程。当然我会和大家共同探讨使用软件的技巧和
经验,但至于怎么做这些基本的事情还烦请自行研究。2 ]2 W$ Z. a9 Z6 F' H0 N
3、某某软件怎么找、某某工具去哪下载等等。互联网的宽广程度超出我们的想象,只要不是特别稀缺的资源,大多数
资源均可从网络上找到。只要不是有意使用的软件的缩略名,根据软件的全称 95%以上的软件都可以在网络上 DOWN 到。
只是看你用心不用心、懒不懒的问题。
如果遇到如上问题怎么办?善用百度和谷歌,顺道学会用迅雷。
在本书中我会讲如下内容:
1、尽可能全面的讲解系统封装与部署技术的各个方面,从最基本的知识到进阶的知识,从拆分的实例到完整的系统封
装实例。尽我所能的从多方面、多角度分析问题,循序渐进、步步为营的解决问题。3 i8 d7 i) T: f3 l3 P; J% i
2、精讲常用的、重要的知识,并拓展这些知识。略讲不常用的、冷门的知识,减少视听的混淆。有些软件我们可能只
使用它 20%的功能,那我会着重分析这 20%,至于其他 80%中很多功能我们一辈子都用不上一次,有必要用大篇幅讲讲吗? z&
g2 O( x, D% R8
3、针对大家最感兴趣的问题进行讲解,如手动系统封装与部署控制、SRS 驱动的收集原理、综合驱动包的制作方法等。
本书不可能涵盖所有关于封装与部署的知识,这些知识仅微软官方提供的资料就有 NNN 页,如果您有兴趣可以查阅这
些资料,而本书没必要把这些生涩的知识复制粘贴一下来浪费纸张。但本书中会精讲我们最常用、最有用的部分,让大家明
白原理,并能利用这些原理更好的完善自身的技术。
0.3 阅读本书所需要的
1、这不是一本零起步教程,这是实话实说。我不想为本书扣上“零起步教程”的噱头,骗取更多新手的血汗钱,我个人更
推荐有一定基础的人来阅读本书。当然,这不是对新手的不屑,而是一份诚恳的建议。系统封装与部署技术不是一项单一的
技术,更多层面上讲,这是一项复合型的技术。系统封装与部署技术设计:系统、驱动、软件、硬件、优化、编程等多方面
技术,且对这些技术的综合应用能力有一定的要求。但如果您是一位很有毅力的新手,那您可以忽略这一条。
2、绝对的耐心和信心。系统封装与部署技术虽然是一项综合性很高的技术,但对每项技术的深度要求都不算高,所以
很适宜知识面广的 IT 业者来学习。虽然对每项技术的要求都不高,然而由于综合性强、涉及面广,出现各种问题的几率大大
的提高了。随时都有可能出现“你不注意的某个细节成为了你失败的关键”的情况,设置有时一个简单的问题需要几十次测试
和好几天的时间。这种时候,唯一能支持你的只有你的耐心和信心!% J! m8 k5 J; p3 O3 e. ]9 b
3、优秀的品质和心态。学习任何技术都要有良好的品质和心态,态度能决定你的一切。学习一项新技术是在头脑中构
建新的知识架构的过程,甚至需要拆毁之前已有的知识架构来构建新的,这是一个残酷的过程。摆正自己的心态,拥有百折
不挠的精神和不怕失败的勇气,这是学好一样新知识的重中之重。
4、稍微有那么一点的编程知识。本书中某些自动化的实现我将用 AutoIt v3(AU3)来实现。如果您不会编程,建议您
学一些基础,特别是经常有自己想法的朋友,只有编程能更好的实现你的想法,不要让灵感流逝。如果您会编程,但不会 AU3,
这个不要紧,只要是编程语言都是相通的,算法是一致的,且 AU3 属于语法宽松的脚本语言,我会对程序部分加详细的注
解以方便您阅读。如果您会 AU3,那太好了,相信本书能给您提供更多的思路。. z' _: v1 @9 z) h' i/ C1 ]4 K; a
本书旨在详细讲述系统封装与部署技术,为了更多的人了解这项技术,也为了更多人来应用并推广这项技术。系统封装
与部署技术极大的提高了 IT 业者的工作效率,有效的节省了无谓的时间与精力的消耗。本书将同您一起进入这项技术的殿堂,
我将与您一起通过随后 8 章的学习领略这项技术的魅力。3 W5 q4 V4 F0 b% C4 ~ {
本书将以微软最稳定成熟的 Windows XP 和最新的 Windows 7 为蓝本来共同研究封装与部署技术。Windows 2000
和 Windows Server 2003 所使用的方法与 Windows XP 类似,Windows Vista 和 Windows Server 2008 所使用的方法
与 Windows 7 基本相同,这里不再赘述。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
第 1 章、初识封装与部署技术
. B; O. h3 E% I! }6 v K# S( d
1.1 封装与部署技术要知道的; p6 _5 H. O; A
% [9 Q. h9 f1 ]! T/ C* n- i
首先我们来了解一些基本知识和问题,虽然这有些枯燥,但基本概念可以让我们掌握事物的根本,同时,摆正对事物的
认识,可以进一步的帮我们理解知识。
1.1.1 什么是系统封装与部署技术 6 O% p" C# l& `* u5 j1 [
系统封装与部署技术是由微软官方提供的,是一种将源计算机中的 Windows 操作系统经过封装后,使用磁盘映像工具
或文件映像工具制作成系统映像,再通过各种中间介质传输到一台或多台目标计算机上,并部署到目标计算机中的技术。这
至少让我们知道了三个概念和一个流程:5 i% s" E4 ^' v0 d, \
三个概念:
(1)系统封装。还原系统的某些设置到初始状态,将系统调整为准备部署的状态。就像你在家里打包你的行李,准备
带这些行李外出。
(2)系统映像与转移。使用如 Ghost、ImageX 等把当前系统做成系统映像,将系统映像通过 CD、DVD、USB 移动
存储设备、网络等介质传送到目标计算机中。换而言之,和谐号也好,波音 747 也好,只要是能把你从家带到目的地的方法
均可。, g' L$ h/ J' }
(3)系统部署。系统进入部署状态、适应新计算机的硬件环境、重新装载驱动、调整系统设置等,最后交付给你一个
和源计算机中相似的全新 Windows 系统环境。就像你到达目的地后,打开你的行李箱,把上衣、裤子、文件、PDA、TT
拿出来准备随时使用。1 j5 H. g, [/ \5 G+ j3 d% c
一个流程:7 z- a* d# k+ o9 b, E
源计算机中的 Windows 操作系统-->系统封装-->映像工具制作系统映像-->传输介质-->目标计算机-->映像工具恢
复系统映像-->系统部署-->目标计算机中的全新 Windows 操作系统。! ^1 h+ b+ ]+ L3 ?- Q; G. S
说到这里,相信您对系统封装与部署技术有了一个大致的了解。虽然封装与部署会还原部分系统设置到初始状态,但系
统内所安装的补丁、软件以及所做的大多数优化都是不变的。这也就是说,你部署的不单单是一个操作系统,而是一个经过
调整和设置的、包含各种常用硬件驱动和应用软件的操作系统!可以想象只需要按一个按钮就完成这一切吗?这也正是封装
与部署技术备受青睐的优势!
1.1.2 封装与部署≠克隆
这是两个几乎不沾边的概念,但时至今日仍有人将系统封装与部署说成是克隆系统,甚至直接说成是 Ghost 系统。可能
在早期的确有人尝试将系统直接使用 Ghost 克隆,但这种操作与系统封装部署技术基本不沾边。这里我们讨论两个大家比较
关心的问题:6 h& \6 H& ?) o1 H
(1)为什么使用 Ghost?
Ghost 只是一个磁盘映像工具,正如前文中叙述的,其作用是将已经封装的系统做成系统映像,并将映像恢复到目标计
算机,充其量只做了个在系统封装后打包和在系统部署前拆包的工作。如果你愿意,可以使用任何映像工具做这个操作,不
一定使用 Ghost。
而至于我们大家为什么都用 Ghost,一是因为它是老牌软件,二是因为我们这么多年都用习惯了,三是因为能够使用
Ghost 已经成为了一个 IT 工作人员必备的技能。最重要的一点,Ghost 可以在纯 DOS 环境下运作,就某些“恶劣的”计算机
环境而言,DOS 比 Windows PE 更具有优势。! a1 _3 f+ o. B3 }& ?
所以,所谓“克隆版”或“Ghost 版”的说法仅仅是某些不了解技术真像的人的一种偏颇的叫法,凡是这样说的人,大多没
有触及封装与部署技术的深层。
(2)封装与部署技术的稳定性差?3 I+ C. y/ J5 _7 ~; O
在 1.1.1 节的第一句话我就说过,封装与部署技术是微软官方提供的,系统封装与部署的核心操作都是由微软官方软件
来执行的。虽然微软每个月的漏洞让我们比较心烦,但是我相信你我都不会去怀疑微软自家的技术,特别是微软自家针对自
己核心产品 Windows 的技术。所以,就封装与部署技术本身的稳定性而言,是基本不需要怀疑的。6 N) R6 Y- v# j; J( n& r
但为什么仍有人认为“克隆版”的稳定性比较差呢?这只是通过表象看的问题罢了,不是事情的真相。为了让系统封装更
智能,为了让系统部署的适用范围更广,广大 IT 工作者为系统封装与部署技术注入了更多的技术拓展,这在很大程度上提高
了系统封装与部署的适用性,但同时也带来了部分小问题,毕竟大家并不是微软。例如增加磁盘控制器驱动不当会宕机,系
统调整不当会带来兼容性的降低等,但这些不稳定因素都是人为产生的,不是由系统封装与部署技术本身产生的。
- u% {1 F) U! D9 [
1.1.3 封装与部署≠盗版- y1 u4 I3 a( I- G$ D" W: e7 z6 B
- q% _- K7 E2 B4 b0 {/ y* I
盗版是个敏感话题,但我们仍要说一说。! ?. ?4 r, S' V2 ?
前文多次提到封装与部署技术即是微软自家的技术,因其减少了无谓的劳动和人力物力的损耗、有效的提高了工作效率
等诸多优点,被很多 IT 业者所青睐。这项技术的优势是显而易见的,但正是它的优势引得了个别人的歪念头。
由于国内大多数人软件正版意识淡薄,而正版 Windows 操作系统的价格又较为昂贵,个别人将 Windows 以特殊方法
激活后以封装方式做成盗版 Windows 光盘,而后部署到盗版购买者的计算机上。由于封装与部署技术的便利性,几乎按一
个按钮就可以完成包括系统、补丁、驱动、软件等的安装,没有太多计算机应用水平的盗版购买者也可以轻易的进行安装,
所以盗版光盘绝大多数使用了封装与部署技术。
但这恰恰反应了系统封装与部署技术的便利性和优越性。而如果非要把封装与部署技术和盗版挂钩,真是过于牵强了。
就像我是卖菜刀的,客户用刀切菜还是用刀伤人,和我有关吗?封装与部署技术完全可以用于正版,有些人非要把它用于盗
版就把盗版和封装与部署技术挂钩合理吗?$ ?% ?# K% l6 S) j
1.1.4 封装辅助工具是什么?
& \* i! C- U0 s5 s7 I
封装与部署工具是微软的,那我们现在在网络间常见的各种“系统封装工具”又是什么?# A" Y1 Z2 ~, d' S
封装不单单是运行一下微软的工作就可以,封装前和封装后我们都要做一些手动的操作,如打补丁、卸载驱动、加入
OEM 信息等。而部署过程也不单单是只运作微软的部署流程就可以,如果要做的更方便我们就要加入其他的各种软件并做
相应的设置。以前这些事情都是靠手工作的,亲手改注册表、亲手写批处理,我个人到现在还很怀念那个时代。但现在,时
代变了。: Q3 J( j) b2 q& J
为了降低操作的复杂性,同时为了降低封装与部署技术的门槛,网络上的部分 IT 高手开始编写自动化程序来替代这些繁
琐的手工操作,这些自动化操作整合起来,就成为了系统封装辅助工具,其中也不乏高智能化高人性化的经典之作。确切的
说,自动化封装辅助工具还包括了对系统部署过程的拓展和自动化控制。但无论封装辅助工具怎么样,绝大多数仍旧使用了
微软自家的封装与部署工具作为核心,封装辅助工具所做的仅仅是替代了以往麻烦的手工操作罢了,所以并没有改变系统封
装与部署的本质。9 n. i8 v6 n3 E S0 P" W! l
综上所述,我们要驾驭系统封装与部署技术,就必须看一看最原始的系统封装与部署是怎么样的,或者说看一看使用微
软官方的工具能做到什么样的效果。了解基础是我们掌握本质的关键,下面我将分 Windows XP 和 Windows 7 两方面给大
家展示一下何为封装与部署。
1.2 Windows XP 基本封装方法
' R( r; Y6 }5 k' q3 d- T( A
Windows XP 虽然年迈,但不可否认它是微软的经典之作。Windows XP 从 2001 年发布到现在已经经历了各种磨练,
各方面扎实稳定,便于我们研究。且 Windows 之间的技术大多是通用的,所以研究 Windows XP 不只是研究 Windows XP
而已。
1.2.1 安装 Windows XP: {3 @$ T, ?5 x: b, O+ {" w# v6 }) h
要封装 Windows XP(一下简称 XP 或 WinXP),必须先安装 XP。XP 安装并不是个难事,所以这里不会赘述,但有两
个问题我想和大家探讨一下。
1、安装到 C 盘,为什么?
从我们开始研究封装一来,见到的各种优秀作品都是 C 盘的系统,确切的说是用第一硬盘第一分区的系统来进行封装操
作并部署,为什么?这个问题需要我们从 XP 的启动来从根说起。7 z6 X' i# x' F/ n
计算机启动并将控制权交给 XP 是一个这样的过程:/ x7 X7 S' Q5 r$ K
(1)计算机启动,BIOS 和 CMOS 管理各硬件,自检;
(2)自检结束,检测硬盘中的活动分区;
(3)加载活动分区中的 NTLDR,这个包含 NTLDR 的活动分区我们为它命名为【启动分区】;
(4)启动分区中的 NTLDR 通过 BOOT.INI 文件寻找 XP 系统文件夹(默认为 Windows 文件夹)所在分区,这个被
BOOT.INI 指向的包含 Windows 文件夹的分区我们为它命名为【系统分区】;
(5)加载 Windows 文件夹中的系统文件启动 XP,计算机控制权由 BIOS 和 CMOS 交给 XP,XP 启动完毕。
简单说,流程为:计算机启动-->BIOS 和 CMOS 管理-->找到硬盘上的启动分区-->加载【启动分区】中的 NTLDR
-->NTLDR 通过 BOOT.INI 寻找【系统分区】-->启动系统分区中的 XP-->XP 启动完毕。1 S7 F5 x) E* `; l( i
一般来说只有主分区可以做活动分区,而活动分区一般为【启动分区】。由于【启动分区】中的 NTLDR 可以依靠 BOOT.INI
来寻找【系统分区】的位置,所以系统分区不一定必须是主分区,也可以是逻辑分区。而我们平时常见的“C 盘”,则是一
个特殊的情况,即 C 盘是主分区,同时也是【启动分区】和【系统分区】。
“C 盘”的特殊情况有利于我们做封装和部署操作,这是因为一般情况下我们只转移一个分区的映像。假设当前 C 盘是
【启动分区】,我们将系统安装在 D 盘里,那么 D 盘是【系统分区】,则 NTLDR 和 BOOT.INI 在 C 盘里,而系统则在 D
盘里。我们对 D 盘执行封装操作后做成系统映像,但这个系统映像里并不包括 NTLDR 和 BOOT.INI!那么如果我们将这个
系统映像恢复到目标计算机,那么没有 NTLDR 和 BOOT.INI 的计算机如何启动?
所以,一般情况下,建议将 C 盘设置为主分区,并用 C 盘同时做【启动分区】和【系统分区】。这便于我们做封装操作,
简化不必要的步骤。