HOWTO:制作 Windows 7 加速部署映像

        加速部署映像 - 也就是我们通常说的系统模板,通常我们为了提高 Windows 的安装速度,会事先制作一套包含驱动、应用软件、补丁程序以及自定义设置的标准化系统。这样我们在使用该加速部署映像完成安装后,就可以让用户直接使用,不仅在安装方面大大缩短了时间,也提高了用户的体验。

        在 Windows XP 时代,我们在定制完毕系统后为了能够让该加速部署映像用于不同 HAL 的电脑,还需要人工执行很多复杂繁琐的操作,最后再使用 Sysprep 执行系统封装准备,完成后对系统打包。如果要实现自动安装,事先还需要使用 setupmgr 制作一份用于 Sysprep 的应答文件。

        自 Windows Vista 开始,Windows 的安装和部署发生了质的变化,到了 Windows 7 更是得到了完善和加强。现在我们使用 Sysprep 的 generalize 参数即可制作出一套不受 HAL 限制的通用映像。而自动应答文件富含更多地功能和设置,我们现在需要借助 WAIK(Windows Automated Installation Kit)这个新的 Windows 自动安装工具包来制作 Windows 的应答文件。由于 Windows 安装方式的改进,过去零散的安装文件都被打包在以扩展名为 WIM 的文件中,此外由于采用了文件方式的存储,WIM 不受磁盘大小的约束,能够很轻易的部署到不同容量的分区卷上,并且在释放 WIM 后文件都将紧密排列存储。这样我们维护或部署映像也将更将方便快捷。

        由于 Windows 7 的一些新特性,如:系统 oobe 阶段必须创建一个新用户;经过定制后将当前用户配置文件应用于默认用户配置,则需要借助  WAIK 在 specialize 阶段通过 CopyProfile=true 来实现。导致我们不能像以往 Windows XP 那样制作定制的加速部署映像。在 WAIK 的帮助文档中提供了多种安装部署方式的标准流程,鉴于一些环境因素的约束,gOxiA 采用如下的流程来制作 Windows 7 的加速部署映像。

image

        本次测试环境是在 Hyper-V 中创建了一个 Windows 7 的虚拟机,标准安装时直接 Mount 的 Windows 7 Pro ISO,使用虚拟化来创建加速部署映像是非常方便的。如果打算在物理机上实施则可以使用安装光盘、移动U盘或网络安装等方式执行标准化安装。

        使用集成 imagex 等小工具的 WinPE v3.0 工具盘可以说为很多朋友解决了不少的问题。gOxiA 一直以来也都擅长喜好使用 imagex 来执行系统备份,诸如此类的优势说明在过去的日志中也经常提到,这里就不再复述。而今天要与大家分享的经验是最近 gOxiA 遇到一个问题,而过去也曾经历过只不过未有留意,而这次遭遇同类问题在解决之后认为有必要大家分享,帮助大家避免发生同类的问题。

        起因是这样,gOxiA 的 Blog 服务器前段时间曾出现不稳定的状况,在对系统执行优化后决定对磁盘执行一次碎片整理,毕竟这个基于 Windows Server 2008 Web 的虚拟服务器已经运行了近17个月。随即在夜间进行了磁盘整理工作,第二天一早发现悲剧降临了,在执行碎片操作前,gOxiA 忽略了这台虚拟服务器使用的是动态类型的磁盘,而虚拟磁盘文件所在的分区卷容量还小于这个动态类型磁盘的容量,结果可想而知。系统启动后无法登录,提示磁盘已满,而存储卷显示剩余0字节。之前决定使用 VMWare 的压缩工具进行压缩,但都以失败告终。现在唯一的可行办法就是使用 WinPE 引导系统,挂载一个空的虚拟磁盘并使用 imagex 将原系统映像备份出来,因为 imagex 是以文件方式来执行数据拷贝的,所以新生成的映像恢复到新的虚拟磁盘上将不会有任何问题,初次之外还起到了磁盘整理的效果,因为 imagex 恢复后的文件时顺序排列的。经过一番折腾,总算把备份的映像释放到了新的虚拟磁盘上,然后挂载到虚拟机上启动系统,但是出现了 winload.exe 0xC000000E 故障。

winload_0xc000000e

        该故障引发的原因很简单,因为 bcdboot 中的引导信息是与硬盘所关联的,因为映像释放到了新的虚拟磁盘上,就相当于更换了硬盘,那么势必导致硬盘唯一标识变更,最终导致该故障的发生。而早先 gOxiA 使用 imagex 用于部署系统,不是将备份恢复到原硬盘就是使用 sysprep 后部署到其他硬盘上。此外,在部署 Windows 7 和 Windows Server 2008 R2 时因为系统设计的变化,默认安装系统时会自动生成一个 100M 大小的分区存储引导信息,而通常我们只备份系统盘,而在使用 imagex 恢复映像后都需要使用 bcdboot 命令创建引导信息。OK,到这里我们已经改如何解决这个故障信息了,除了使用 Windows 安装光盘引导进行修复以外,我们还可以使用手头现有的 WinPE 光盘进行命令行方式的修复。为此,我们使用 WinPE 引导盘引导系统,执行如下命令:

bcdboot c:\windows /s c:

        执行完这条命令之后我们就可以进行正常的启动了,但是问题还并未真正解决完。因为你会发现启动过程会显示 boot manager 菜单,而其中包含了两个名称相同的系统引导项,此外还会发现当前的引导菜单无法正确显示出中文字符。所以我们在前面使用 bcdboot 命令创建完引导信息之后还需要再执行如下命令,使 boot manager 采用中文版本。

bcdboot c:\windows /l zh-cn

        执行完上面两行命令后再退出 WinPE 重新引导计算机,最后使用 bcdedit 命令删除之前失败的系统引导项,整个恢复过程才算正式结束。

        保持清醒的头脑,认真分析之后再进行操作才能万无一失!

Tags: ,

        MDT 2010 中加入了一个新的高级功能 - Media,通过该功能我们可以实现客户端部署时脱离网络的限制,即无需 PXE 引导和 WDS 以及 MDT 节点服务器。部署涉及的脚本控制、任务序列、应用软件、操作系统、驱动等等数据都可以打包到一起生成 ISO 文件,刻录成DVD光盘使用。或者,将其直接拷贝到 U 盘,通过 U 盘进行安装(注意:该方法必须在 Windows Vista 或 Windows 7 系统上对 U 盘执行分区、格式化、激活才能实现引导)。对于单机部署来说,十分方便快捷!并且能实现最小化的接触安装。

        gOxiA 最近实施一个小项目,为5台 Dell 服务器进行系统安装,由于环境和时间约束无法部署 WDS+MDT2010,那么为了节省时间并减少人为干预,通过传统载体实现自动化安装是最佳的方式。最终,gOxiA 选择了 MDT 2010 的 Media 高级功能,该方案非常适合此项目的实施!整个设置步骤和操作过程其实都非常简单,gOxiA 认为重点主要还是在设计规划上,首先要尽可能的实现少量接触,此外还要保证其相对的通用性。这5台 Dell 服务器除了型号不同以外,有些还应用了 RAID5。因为操作系统是 Retail 的 Windows Server 2003 R2 Standard Edition,所以自动化步骤中的产品密钥部分就要单独考虑。此外,因为必须要在设备抵达前就准备好系统安装所需,那么通过设备序号或 MAC 来标识安装的办法亦不可取,最后的设计是产品密钥使用通用密钥,之后单独输入各自的产品密钥手工激活;计算机名也是用自动命名方式,之后再单独进行更改;系统分区没有特别要求,故分配40G。

        完成了计划便可以进入准备工作,为了减少数据占用的容量建议单独创建一个 Point,添加 Windows Server 2003 R2 安装源文件,添加磁盘控制器、显卡、网卡等驱动,具体的步骤就不再复述,需要注意是任务序列创建过程中序列号应当输入一个通用密钥,以便后续部署过程中能够自动输入序列号。当准备工作完成后,便可以使用“Advanced Configuration”下的“Media”功能开始创建单机部署源。

image

        创建过程也非常简单,可以参考下面的截图。

image

image

image

        下面开始重点部分,因为要部署的 Windows Server 2003 R2 是 32-bit 版本,所以在 General 选向卡下去除 Generate x64 boot image 的复选。因为考虑到还要通过光盘来部署系统,所以 Generate a Lite Touch bootable ISO image 选向也是必须的。

image

        我们知道默认的 Rules 和 Bootstrap.ini 配置非常简单,无法满足我们所需的自动化安装步骤,所以要完成前面所讲到的目标,我们需要对这两个配置文件进行修改。

image

        如下图所示,这是 gOxiA 做好的配置,其中 Bootstrap.ini 里 [Default] 部分添加的“SkipBDDWelcome=YES”是略去部署环境开始时的欢迎界面。

image

        Rules 配置文件中 [Default] 部分的详细数据如下:

[Default]
OSInstall=Y
SkipAppsOnUpgrade=YES
SkipSummary=YES(忽略部署环境中最后的摘要)
SkipCapture=YES
SkipAdminPassword=YES
SkipProductKey=YES(忽略产品密钥的输入)
SkipLocaleSelection=YES
SkipDomainMembership=YES(忽略加入域的步骤,即默认为工作组)
KeyboardLocale=0804:00000409(指定键盘区域为中文简体)
InputLocale=0804:00000409(指定输入法为中文简体)
UserLocale=0804:00000409(指定用户默认语言为中文简体)
SkipTimeZone=YES(忽略时区设置)
TimeZone=210(指定时区代码)
TimeZoneName=China Standard Time(指定时区的名称)
DoCapture=NO
SkipUserData=YES
UserDataLocation=NONE
SkipFinalSummary=YES(忽略部署的最后结果摘要,可根据需要选择,如果之前已经进行过完整的测试,那么可以忽略该摘要。)
SkipTaskSequence=YES(忽略任务序列的选择)
BuildID=001(指定任务序列ID,这个变量同样是定义 Task Sequence ID 的,但是由于该变量沿用BDD2007中的变量,并且是内置变量,无法通过 MDT 控制台进行编辑,我们可以将其看作为一个索引值。在实际应用中,BuildID和TaskSquenceID必须一同使用。否则单一指定TaskSquenceID无效。)
TaskSquenceID=001(指定任务序列的ID)
SkipComputerName=YES(忽略计算机名)

        看了上面提供的配置数据,我相信对 MDT2010 有一定认识的朋友,能很容易看懂!并能够灵活应用到实际环境中。

Tags: , , ,
分页: 32/49 第一页 上页 27 28 29 30 31 32 33 34 35 36 下页 最后页 [ 显示模式: 摘要 | 列表 ]