Windows Vista

为 Windows PE 2.0 做好准备

Wes Miller

 

概览:

  • Microsoft Windows 映像技术
  • 驱动程序更新和维护
  • 无需干预的自定义安装

在前两期的 TechNet 杂志的中,我讨论了 Windows 预安装环境(或 Windows PE)的发展历史,涵盖了各种设计决策以及您当前应如何使用 Windows® PE。在本文中,我将重点讨论 Windows PE 2.0,此版本将与 Windows Vista™ 同时发布。本文并非要深入探讨如何使用各个功能。而是对 Windows PE 2.0 中的新特性和功能进行了简要介绍。在本文中我将为您介绍一些实际操作信息,但关于如何使用 Windows PE 2.0 的详细讨论将在今后的文章中提供。

在最初设计 Windows Vista 时,Windows 安装团队(我曾经是该团队的成员)主要关注构建全新的安装体系结构、创建新的映像工具以帮助完成部署,并设计远程安装服务 (RIS) 的替代功能。但随后我们的注意力转向了过渡性的 Windows PE 和 Windows XP Service Pack 2 (SP2),然后转向了 Windows Server® 2003 SP1。这意味着我们对 Windows Vista 中的 Windows PE 的开发工作有一定的拖延。但过渡性的 Windows PE 更新程序使我们可以提供一些我们最初计划在 Windows PE 2.0 版本中加入的功能,因此我们的工作并没有完全偏离轨道。

Windows PE 团队在定义我们希望加入的新功能时(参见“Windows PE 2.0 新功能”边栏),重点关注可持续性和 Windows PE 用户通常的使用情形。接下来介绍主要的新功能。

使用映像

关于 Microsoft® Windows 映像 (WIM) 技术和 Windows 部署服务,有几个基本概念您必须了解。设计 WIM 完全是为了用于以映像(以前被称为 Sysprep 映像)的形式部署 Windows。大多数映像工具都是基于磁盘扇区的,而 WIM 是基于文件的。这意味着 WIM 并不是复制硬盘的每个扇区,而是提取每个文件和与之相关的元数据(访问控制列表、短文件名和长文件名等)并将数据保存在一个文件中。

WIM 映像的一个主要优点就是一个 WIM 文件可以保存多个卷的一个副本(每个 WIM 文件被称为一个卷映像)。无论收集了多少个文件,每个文件在映像中只保存一份。这称为单一实例 (Single Instancing)。尽管所采用的技术有很大不同,但此方法与远程安装服务所采用的方法的作用类似。用于创建 WIM 映像的工具称为 ImageX。(注:它曾一度被称为 XImage,但后来名称改为 ImageX。)

在我们开发 Windows Vista 及其新的基于映像的安装引擎(它将使用 Windows PE 部署操作系统)时,我们发现我们或许可以使用一些技巧来节省介质上的空间。当时我们并不确定 Windows Vista 以 CD 还是 DVD 形式发行,因此我们必须使安装程序占用的磁盘空间降至最低。由于 CD 上组成 Windows PE 的所有文件的版本与其相邻的 WIM 文件中的文件都相同,因此我们开始考虑在 WIM 文件中加入 Windows PE,然后从其 WIM 文件开始引导。凭借 Windows 核心操作系统团队的一位架构师的出色努力,我们的想法变成了一系列原型,并在 2003 年于专业开发人员大会上发布 Longhorn(现在的 Windows Vista)的开发人员预览版之前集成在了产品中。现在,Windows PE 保存在介质的一个 WIM 文件 (boot.wim) 中,安装文件保存在另一个 WIM 文件中 (install.wim)。尽管我们最初构想的 Windows PE 和 Windows 之间的单一实例不再是安装介质的一部分,但 Windows PE 仍然得益于由于压缩在光盘上而节省的空间。通过集成 Windows PE 1.6 中的 RAMDisk 引导功能,还增加了在初期的 WIM 引导工作完成后交换介质的能力(以便在引导完成后取出初始引导 CD/DVD)。

在 WIM 中加入 Windows PE 映像就像使用 ImageX 提取文件(我会在即将发布的一篇文章中详细讨论此问题)并向 ImageX 提供 /boot 标志表明该映像为可引导映像一样简单。将此文件当作引导扇区。当 Windows 启动管理器加载 WIM 文件时,/boot 标志提供的标记会表明 WIM 文件中的哪个映像(一个或多个)是可引导映像。请注意,只有 Windows PE 可以通过 WIM 文件进行引导。您不能通过 WIM 引导任何 Windows Vista。并且,WIM 是只读文件(由于是在 CD 或 DVD 中)。因此,您不能从 Windows PE 的 WIM 映像进行引导然后修改任何文件。要对 Windows PE 进行更改,您必需修改 WIM 文件。

处理驱动程序

在 Windows PE 中,我们始终将注意力放在大容量存储和联网设备支持上。然而,Windows PE 缺乏对新系统上某些设备的支持的情况仍有发生。Windows PE 1.5 中已经包含了一些针对添加设备驱动程序的改进的支持,但 Windows PE 2.0 进一步简化了这一功能。它目前支持所有类型的设备,这些设备在引导后即可工作 - 不需要任何 factory.exe 或 drvinst.exe。要为 Windows PE 2.0 添加新的设备驱动程序,只需运行新的 peimg.exe 工具,然后它就会添加驱动程序。其语法十分简单,如下所示:

peimg.exe /inf drivername.inf builddirectory\Windows

只需将 drivername 替换为 .inf 的名称(支持通配符,如 net*.inf)并将 builddirectory 替换为您的 Windows PE 映像所在的目录的名称即可。

暂存空间

在 Windows PE 下运行的应用程序经常面临的一个问题是,许多 Windows 应用程序(甚至许多 Windows 本身的组件)都希望运行在可写存储器上。当从只读介质(如 CD-R)运行时,许多应用程序的运行就会出现问题。例如,当我首次尝试在 Windows PE 下运行 Microsoft Internet Explorer® 时(最终当我只尝试运行 Windows 组件 MSHTA 或 Microsoft HTML 应用程序时),主要 DLL 文件无法注册,因为它们需要可写存储器来完成某些注册过程中必须完成的任务。

在 Windows PE 2.0 中,不会存在这一问题,因为其中有高达 32MB 的暂存空间可用于进行文件系统的写操作。因此,以前由于 Windows PE 的只读特性而无法工作的组件现在在新版本中都可以正常工作了,因为它们可以对磁盘执行必要的写操作。在暂存空间问题上,这与 RAMDrive(Windows PE 用户一贯使用的方法)不同,Windows PE 2.0 的暂存空间位于与引导卷相同的卷上 - 而 RAMDrive 占用的是另一个临时驱动器。

可选组件

与以前版本的 Windows PE 一样,新版本也提供可用于增加其他功能的可选组件。(当然,这些组件会增加占用的空间,这也是它们为什么是可选组件的原因。)新版本仍旧提供对 Windows Script Host (WSH)、Windows Management Instrumentation (WMI) 和 MSHTA 的支持。您现在可以添加对 MSXML、Windows Vista Recovery Environment、附加 Windows 字体和正式 Microsoft Data Access Components (MDAC) 的支持,MDAC 取代了先前的 ADO 来提供 SQL 支持,包括一些但并非所有 MDAC 支持。但在这里最重要的变动是添加这些组件的难易程度。组件的实施不必通过编写麻烦的 WSH 脚本来实现,而是可以通过使用 peimg.exe 轻松添加或删除 - 此工具也是我在前面讨论的用于添加驱动程序的工具。

语言包

Windows Vista 最初的开发宗旨之一是采用多语言用户界面 (MUI) 的概念 - Windows 2000 中引入了此概念,并在 Windows XP 中得到了改进 - 并在整个操作系统中实施此概念。在 Windows 2000 和 Windows XP 中,您可以指定除英文以外的一种语言,但 MUI 本身开始运行时要依靠英文版本的操作系统。即您可以同时保留英文和您希望使用的其他一种语言。

这种情况在 Windows Vista 中有所改变。我在这里不会详细介绍所有的具体信息,但我必须指出,这一改变对于 Windows PE 非常重要。在早期版本的 Windows PE 中,并不提供对 MUI 的正式支持。 您必须通过您希望为其提供语言支持的本地化语言版本的 Windows 构建。 现在,添加或改变语言支持可以像添加或改变其他任何可选组件一样操作 - 利用 peimg.exe 添加或删除语言包,以满足您特定的 Windows PE 需要。

更好的维护

较早版本的 Windows PE 还缺乏维护支持。要添加 Service Pack,您必须彻底重建 Windows PE。要添加修补程序,您必须手动临时添加 - 如果您有勇气的话。考虑到 Windows PE 非常小,只包含有限的 Windows 功能,并且不会运行太长时间,因此我们没有将这一情况当作问题。直到出现了严重的 Blaster 漏洞。由于 Windows PE 中包含远程过程调用,在一定的情况下该漏洞会攻击并导致 Windows PE 不断重启。

因此我们在 Windows PE 1.5 中加入了 Windows Firewall。随后,团队开始着手确保未来版本的 Windows PE 可以像完整版的 Windows 一样进行维护。Windows Vista 的一个需要关注的主要方面就是可维护性得到了改进。Windows PE 继承了这一点。就像该操作系统的其他可选组件和语言一样,Windows PE 利用 peimg.exe 执行更新程序。更新程序将通过 Windows 下载中心提供。

无需干预的文件支持

您可能对 winbom.ini 很熟悉,在较早版本的 Windows PE 中该文件用于驱动一个名为 factory.exe 的小应用程序。新版本对这些文件进行了替换。新版本中有一个新的 XML 基础结构,您可以用其自定义 Windows PE(这与 Windows Vista 中无需干预的安装使用的 XML 机制相同)和一个新的名为 wpeinit.exe 的应用程序。

在 Windows Vista 中,Wpeinit.exe 使用标准的 unattend.xml 格式来指定 Windows PE 自定义和操作。图 1 显示了一个可用于自定义 Windows PE 的 unattend.xml 文件示例。unattend.xml 文件的格式被作为 Windows OEM 预安装工具包 (OPK) 和 Windows 自动安装工具包 (WAIK) 的一部分记录在文档中,我稍后将对此进行讨论。

Figure 1 unattend.xml 文件的结构

XML 文件 评论
<ComputerName>MyWinPEMachine</ComputerName>
将 Windows PE 系统下的机器名设为 MyWindowsPEMachine。
<Restart>Shutdown</Restart>
在重新启动(而不是像较早版本的 Windows PE 那样重新引导)后关闭系统。
<RunSynchronous>
 
<RunSynchronousCommand> <Order>1</Order> <Path>notepad.exe</Path> </RunSynchronousCommand>
运行 notepad.exe。
<RunSynchronousCommand> <Order>2</Order> <Path>cmd.exe</Path> </RunSynchronousCommand>
当 notepad.exe 完成时,cmd.exe 运行。
</RunSynchronous>
 
<EnableFirewall>true</EnableFirewall>
在引导时启用 Windows Firewall。
<PageFile> <Size>1000</Size> <Path>C:\pagefile.sys</Path> </PageFile>
在 C: 驱动器上设置 1GB 的页面文件。
<LogPath>C:\mylog.txt</LogPath>
将 wpeinit.exe 和此脚本的输出记录到 C:\mylog.txt 中。

Windows 部署服务

正如我在前面提到的,我们的一个主要目标是通过转移到一个统一的基础结构上(无论从 CD、DVD 还是网络进行安装)改进基于网络的安装。但在执行基于 RIS 的 Windows 安装时,在安装过程中要进行大量额外的工作。我们希望尽可能消除这种复杂和多余的工作,为此,我们构建了 Windows 部署服务。

就像 RIS 一样,Windows 部署服务也是基于 PXE 的安装。但与 RIS 不同的是,它通过网络启动 Windows PE,并利用与通常基于 CD 或 DVD 的安装相同的基于映像的安装基础结构,同时提供自 Windows 2000 之后 RIS 提供的集中式企业安装基础结构。关于 WIM 和 Windows 部署服务的内容有很多,无法在本文中一一详述。但是别担心,我会在即将发布的一篇文章中详细讨论这些内容 - 因此继续关注。

使用 WAIK

在这一点上,您可能希望了解如何开始使用 Windows PE 2.0。第一步是获得 WAIK。较早版本的 Windows PE 作为 Windows OPK 或软件保障介质的一部分发行。由于 Windows PE 2.0 计划提供给所有授权的 Windows 客户,因此 Microsoft 为非 OEM 客户创建了 WAIK。

WAIK 提供了创建您自己的 Windows PE 2.0 副本所需的所有 Windows PE 构建工具。您现在就可以通过 Windows Business Desktop Deployment (BDD) 2007 beta 获得其中包含的 WAIK。除了 WAIK 之外,BDD 还提供了有关如何使用 WAIK 及其工具的指导。毋庸置疑,要想真正熟悉 Windows PE 2.0 及所有包含在 Windows Vista 中的其他新的安装和部署技术,最好办法就是尽快开始体验这些产品。

Windows PE 2.0 新功能

Windows PE 2.0 包含 Windows PE 1.6 中的所有功能,并增加了一些新的功能和组件,包括:

  • 从 Microsoft Windows Imaging (WIM) 映像内部引导
  • 驱动程序注入和实时即插即用支持
  • 可写暂存空间(即使从 CD 引导)
  • 轻松添加可选组件 - Microsoft 核心可扩展标记语言服务、Windows 恢复环境、Microsoft 数据访问组件
  • 语言包
  • 无需干预的文件支持
  • 构建和更新 Windows PE 的改进工具

Wes Miller是位于德克萨斯州奥斯汀市的 Pluck 公司 (www.pluck.com) 的一名开发经理。在这之前,Wes 在位于奥斯汀市的 Winternals Software 公司任职,并曾在微软担任 Windows 程序经理和产品经理。Wes 的联系方式如下:technet@getwired.com

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.