迄今为止,大家使用 Microsoft 部署工具包 (MDT)创建、维护和部署自定义 Microsoft Windows 操作系统已有一段时日。您可能有从 Windows XP 到 Windows7 的多个桌面映像,以及 Windows Server 2003 和 Windows Server 2008等多个服务器映像,甚至对每个操作系统都有若干映像。例如,您可能有 Windows Server 2008 Standard 和Enterprise 映像、32 位和 64位映像,以及各种其他组合。随着您创建和维护的映像数量不断增加,分布共享所占的空间迅速攀升。为此,需要使用多张 CD 或 DVD来分发各个映像。面对这种情况,您是否希望对映像进行整合?自 Windows Vista 推出以来,Microsoft便提供了将多个操作系统安装放在一张 DVD 上的功能,大家为何不效仿此举呢?这听起来与您的情况相似吗?
我不止一次遇到这种情况,并且有相同的顾虑和问题。我的回答是:您可以整合各个自定义映像,甚至可以将多个安装映像容纳在一张光盘上,但在介绍如何达到这一目的之前,让我们先看看映像功能在Windows Vista 推出后发生了怎样的变化。
WIM 格式
Microsoft Windows 映像文件 (WIM) 格式最初是在 Microsoft Windows Vista中引入的。WIM 格式是一种基于文件的磁盘格式,用于替代较为常用的基于扇区的磁盘格式。基于扇区的格式之前曾用于 Microsoft自动部署服务 (ADS) 和 Microsoft XP Embedded(XPe),现在的大多数其他商业映像解决方案通常也采用这种格式。这两种文件格式的区别在于,基于扇区的格式需要基于物理磁盘的实际扇区进行捕获,而基于文件的格式只需基于磁盘上的文件即可捕获。
Microsoft 创建 WIM 格式的初衷是想获得更大的灵活性和操控性。WIM格式完全与硬件无关。您可以从任何系统捕获和部署这种格式。此外,WIM还可以在脱机状态下进行维护,这意味着您可以有选择性地添加、复制和删除文件及驱动程序,甚至是应用修补程序,而无需重新创建映像。WIM映像还可以标记为可引导映像,从而可以通过 WIM 中的映像来启动计算机。您可以将 WIM映像应用于任意大小的分区,而不用考虑从中捕获映像的磁盘大小。WIM 还允许实施非破坏性部署,即应用 WIM不会擦除磁盘上的原有数据。WIM格式还提供了将多个映像存储在一个文件中的功能,它采用文件资源单实例存储技术和文件压缩技术来降低映像的实际大小。一个 WIM也可以分布在多张光盘上,从而可以使用不同的介质(CD 和 DVD)进行存储。
单实例存储
经过以上讨论,您大概已经知道了一些有助于实现映像整合目标的功能:在单个 WIM 中存储多个映像的功能、文件压缩以及单实例存储(SIS)。那么,究竟什么是 SIS 呢?SIS 是单实例存储技术(英文是 Single-Instance Store)的简称。自从Windows 2000 Server 中引入了此技术后,已经有多种 Microsoft 产品应用了这项技术,其中包括Microsoft Storage Server 和 Microsoft Exchange。SIS提供了删除重复文件的功能,可实现存储容量的优化。它采用安全哈希算法 1 (SHA-1) 来确定映像中每个文件的哈希值。随后,SIS会基于此哈希值来识别重复的文件,并以透明方式将重复文件替换为指向公用存储中保留的单一文件副本的文件系统链接。合并多个类似的操作系统映像时,最终的映像文件大小通常比合并前这些映像文件的总大小小60% 以上(请参见图 1,其中 W2k8.wim 表示将三个 WIM 合并成一个WIM)。
图 1 单独的 WIM 大小与合并后的 WIM 大小
基于多个映像创建单个 WIM
通过相同的标准映像捕获流程,您可以直接在 MDT 中创建一个包含多个映像的WIM。为此,可启动一个映像部署,并按照部署向导进行操作。出现“捕获”屏幕后,选择“捕获”,并为 WIM提供一个名称或接受默认值,然后开始进行部署。在完成部署和捕获后,启动另一个映像部署,并按照部署向导进行操作。出现“捕获”屏幕后,选择“捕获”,并提供与上一捕获完全相同的名称和位置。用于完成实际映像捕获的MDT ZTIBackup 脚本将识别出该 WIM 已经存在,因此会将新映像追加到现有 WIM 中。在追加过程中,ZTIBackup脚本会使用任务序列 ID 和驱动器盘符创建映像名称。由于 WIM 中的每个映像都必须具有唯一的映像名称,因此需要对默认 MDT脚本进行自定义或者手动修改 WIM,否则无法使用相同的任务序列将多个映像追加到同一个 WIM 中。不过,使用单独的任务序列时,可通过MDT 将多个映像追加到同一个 WIM 中,而无需进行任何自定义。
下面让我们回到开始时提到的情况。您现在已经知道,您可以整合自定义映像并可以在使用 MDT创建和捕获新映像时实现此目的,但对于已经创建的 WIM,又如何实现这一目的呢?创建这些 WIM已经做了不少工作,这难道表示要重新操作一遍?是否必须重新捕获所有自定义映像?答案是否定的。您可以使用 ImageX整合现有的所有自定义映像。
ImageX 是 Microsoft Windows 自动安装工具包 (WAIK) 中提供的一款免费的命令行工具。实际上,MDT在创建、管理和部署自定义映像的许多流程中都采用了 ImageX。MDT 使用 ImageX 的 append 开关将映像追加到现有的WIM 中。不过,ImageX 提供了另一个选项,允许您创建包含多个映像的单个 WIM,这个选项就是 export 开关。export开关用于从一个 WIM 中导出映像文件,然后基于导出内容创建新的 WIM。例如,假设您有一个名为 W2K8ENTX64.wim 的WIM,并希望创建一个名为 W2K8.wim 的新 WIM。为此,您将运行以下命令:
ImageX /export W2K8STDSP2X64.wim 1 W2K8.wim "WindowsServer 2008 Standard SP2 X64"
在此命令中,“Windows Server 2008 Standard SP2X64”表示要分配给即将导入的映像的名称。现在,我们假设您要在 W2K8.wim 中添加另一个映像。为此,您将运行以下命令:
ImageX /export W2K8ENTSP2X64.wim 1 W2K8.wim "WindowsServer 2008 Enterprise SP2 X64"
前面曾经提到,在将多个映像合并到一个 WIM中时,每个映像都必须具有唯一的映像名称。除了唯一的映像名称外,每个映像还会获得一个映像索引号。这些编号按映像导入到 WIM文件的时间顺序分配,不能进行修改。在上面的示例中,Windows Server 2008 Standard SP2 X64的索引号将为 1,Windows Server 2008 Enterprise SP2 X64 的索引号将为2。无论是从包含多个映像的单个 WIM 中修改映像还是安装映像,都需要映像索引号来正确识别 WIM 中的映像。
![使用MDT和单实例存储 eclipse mdt 使用](http://img.aihuau.com/images/30101030/30112324t01d7e9287ec7d6665a.jpg)
无论是使用 MDT 还是从命令行运行 ImageX,每次只能将一个映像合并到现有的 WIM 中。因此,对于要合并到现有 WIM中的每个既有捕获,必须等待前一部署和捕获过程完成,才能开始下一个部署和捕获过程。在将映像存储在 WIM 中时,两个 Imagex开关都将使用前面介绍的哈希算法来消除所有重复的文件。
部署多个映像
至此,您已知道如何创建包含多个操作系统的单个 WIM,那么该如何部署此 WIM呢?若要实现此目的,需要执行以下三个步骤:
- 将 WIM 导入到 MDT 中
- 创建新的任务序列或修改现有任务序列
- 创建介质
步骤 1:将 WIM 导入到 MDT 中
需要完成的第一个任务是将 WIM 作为操作系统导入到 MDT中,其方法与导入任何其他自定义操作系统映像的方法一样。在完成操作系统导入向导后,选择“OperatingSystems”文件夹,现在应该可以看到位于 WIM文件中的所有映像,这些映像都以单独操作系统的形式列出。每个操作系统的显示名称将取决于将映像添加到 WIM 中的方式。例如,如果使用MDT 创建 SIS WIM,每个唯一映像都将以创建映像时所用的任务序列ID(W2K8STDSP2X64CDrive、W2K8ENTSP2X64CDrive 和W2K8DATACSP2X64CDrive)作为标题,正如前面介绍的示例一样,我们会看到“Windows Server 2008Standard SP2 x64”、“Windows Server 2008 Enterprise SP2 x64”和“WindowsServer 2008 Datacenter SP2 x64”。在将映像导入到“OperatingSystems”文件夹中后,还可以直接从 MDT 控制台中更新 MDT 中的显示名称。
步骤 2:创建新的任务序列或修改现有任务序列
将操作系统导入到 MDT中后,便可创建部署任务序列来部署这些映像。如果要更新现有任务序列,可能会稍微复杂一点,但也是可以实现的。首先,您需要编辑任务序列的属性。对于Windows Vista 和更高版本的 Microsoft 操作系统,将需要修改 Unattend.xml文件,以反映要应用的映像的新 WIM 和映像索引号。若要更新 Unattend.xml文件,可在现有任务序列的属性窗口中选择“操作系统信息”选项卡,然后选择编辑 unttend.xml 文件的按钮。这样会打开Windows 系统映像管理器 (WSIM) 应用程序,如图 2 所示。随后,在 WSIM中修改以下条目,以反映新的 WIM 文件和映像索引号:
Unattend | Components | 1 windowsPE |Microsoft-Windows-Setup |ImageInstall | OSImage | InstallFrom|Path:.Operating Systems<WIMFile>Unattend| Components | 1 windowsPE | Microsoft-Windows-Setup |ImageInstall| OSImage | InstallFrom | Path |MetaData[Key="/image/index"]|Value: 1
图 2 显示 Unattend.xml 的 Windows 系统映像管理器应用程序
值 1 表示映像索引号。通过在 MDT 中查看操作系统属性的“常规”选项卡,便可确定映像索引号(请参见图3)。
图 3 MDT 中的操作系统属性
更新 Unattend.xml文件后,在任务序列属性的“任务序列”选项卡上找到“安装操作系统”这一步,然后选择要安装的新操作系统。对于 Windows Vista之前的操作系统,无需修改 Unattend.xml,只需重新执行“安装操作系统”这一步即可。
步骤 3:创建介质
现在,我们已创建了一个包含所有自定义映像的新 WIM,并更新了从此 WIM中部署映像的现有任务序列,或者创建了一个全新的任务序列。下一步就是从一张 CD 或 DVD 部署新 WIM中的所有操作系统。首先,根据所用 MDT 的版本创建一个新的介质部署点 (MDT 2008) 或选项配置文件 (MDT2010)。在该介质部署点或选项配置文件的属性中,选择 WIM中的所有部署任务序列、这些序列所需的驱动程序,以及部署所需的所有应用程序。在为介质点选择所有适当的属性后,选择“更新”即可生成新的ISO。
在 MDT 2010 版中,如果选择同时生成 32 位和 64 位的介质,则会在 WINPE启动过程中出现新的提示(请参见图 4)。通过此提示可选择基于 32 位和基于 64 位的 WINPE环境,从而可在支持 32 位和 64 位的环境中进一步整合基于介质的部署。这样便不再需要为介质部署分别创建 LiteTouch_x86和 LiteTouch_x64 ISO。
图 4 WINPE 启动选项
部署同时包含 32 位和 64 位映像的单个 WIM
您分别创建了 32 位和 64 位的 WIM,下面是否可以进一步整合呢?创建同时包含 32 位和 64 位映像的单个 WIM是否有利可图?Microsoft 的所有 64 位操作系统都包含 WoW64,后者是操作系统的一个子系统,可用于在 64位的操作系统上运行 32 位的应用程序。WoW64 子系统与相应操作系统的 32 位版本具有许多相同的文件,因此在采用 SIS时,合并这两种体系结构将大有裨益。但存在一个问题:现成的 MDT 并不支持部署同时包含 32 位和 64 位映像的单个WIM。您现在可能会问,既然 MDT 不支持这项功能,为什么还要谈这个问题呢?下面让我们先来看看现成的 MDT为什么不支持这项功能。
在使用 MDT 部署 Windows Vista 和更高版本的 Microsoft操作系统映像时,需要原始安装程序的二进制文件来完成部署。32 位版本与 64 位版本的安装程序二进制文件并不相同,每次将操作系统导入到MDT 中时,只能包括一个版本的安装程序二进制文件。在部署过程中,MDT将在操作系统文件夹中查找相应的安装程序二进制文件进行部署。如果 MDT无法找到这些安装程序二进制文件,它将查找与处理器体系结构匹配的其他操作系统。
在我们的方案中,我们需要将两种版本的安装程序二进制文件包括在同一个操作系统文件夹中。为此,应将单个 WIM 作为操作系统导入到MDT 中,并选择不包括安装程序文件的选项。在完成导入后,通过浏览在部署共享中找到 WIM 文件夹位置,然后创建两个新的文件夹 x86和 x64。接下来,将针对 32 位和 64 位的 OEM 安装介质分别复制到 x86 文件夹和 x64文件夹中。完成此操作后,分别从 X86Sources 和 X64Sources 文件夹中删除 install.wim。
现在我们的操作系统中已包含两个版本的安装程序二进制文件,下面就需要修改 MDT 以使其搜索这两个文件夹。为此,请在部署共享中找到LTIApply.wsf,然后使用文本编辑器将该文件打开。在 LTIApply.wsf 中,将以下突出显示为黑色的内容添加到函数ApplySetup() 中(请参见图 5 和图 6)。
图 5 在 LTIApply 中修改 ApplySetup() 1
图 6 在 LTIApply 中修改 ApplySetup() 2
这样,除了原始搜索位置外,MDT 现在还会基于部署处理器的体系结构搜索 x86 和 x64 文件夹。只有 MDT 2010支持从单个 WIM 中部署 32 位和 64 位操作系统的功能;在 MDT 2008 中,仍然需要为 32 位和 64位映像分别维护单独的 WIM。请记住,在修改默认的 MDT 脚本后,任何升级 MDT 的操作都会覆盖所做的更改。
无限制自定义
通过创建 WIM 格式并使用 MDT进行分发,可大幅增强操作系统映像的创建和部署功能。本文探讨了目前诸多技术中的一种,这可通过上述两种技术来加以利用。MDT是一款强大的免费工具,它允许进行无限制的自定义,并可用于增强和简化当前的映像创建过程。此外,它还提供了一条绝佳的途径,使您可以熟悉Microsoft 映像创建过程,进而为实施下一步(使用 Microsoft System Center ConfigurationManager 部署操作系统)做好准备。