#1 生成和部署 XP Embedded 映像
发布日期: 11/1/2004 | 更新日期: 11/1/2004
David Reed、John Macintyre 和 Stephen Berard
Microsoft Corporation
适用于:
Microsoft® Windows® XP Embedded with Service Pack 1
摘要
该白皮书是一组珍贵的文档资料,可帮助嵌入式开发人员演练使用 Windows Embedded Studio 工具来生成和部署 Windows XP Embedded with Service Pack 1 运行时映像所涉及到的各种步骤。
所讨论的主题包括使用目标分析器探测器 (TAP.exe) 和目标分析器 (TA.exe) 应用程序、在组件设计器中创建硬件宏以及使用诸如系统克隆、系统部署映像 (SDI) 和预启动执行环境 (PXE) 之类的部署技术等方面的最佳做法。
入门
一切以 TAP.exe 和 Windows 预安装环境 (WinPE) 为起点。开始新的 Microsoft® Windows® XP Embedded 配置的最佳方式是启动到 WinPE 环境并且运行 TAP.exe,以便为目标系统生成硬件配置文件。第一张 Windows XP Embedded with Service Pack 1 安装盘是一个可启动的 WinPE 映像。对于该教程,您将使用这一版本的 WinPE。
要使用 WinPE,请确保目标系统的基本输入/输出系统 (BIOS) 支持启动到 CD-ROM。配置系统的 BIOS 启动设备顺序以首先启动到 CD-ROM,然后插入 Windows XP Embedded with SP1 安装 CD-ROM 的第一张光盘并重新启动计算机。当系统 BIOS 提示您从 CD-ROM 启动时,请照此执行以启动 WinPE 安装例程。
首先,用您希望最终设备拥有的所有外围设备设置裸机。接下来,将 Windows XP Embedded 安装盘 1 插入到目标计算机的 CD-ROM 驱动器中并启动到 WinPE。当计算机处于 WinPE 环境中时,导航到 \XPE 目录并用下列参数运行 TAP.exe,以便将 devices.PMQ 文件保存到软盘驱动器:
tap /O a:\Kiosk-HW.PMQ
然后,TAP.exe 将产生目标计算机的硬件配置文件(一个 .pmq 文件),并且将硬件查询的结果保存到驱动器 A 上的 a:\Kiosk-HW.PMQ 文件中。接下来,将 Kiosk-HW.PMQ 文件复制到已经安装了 Windows XP Embedded 工具和数据库的开发计算机中。
TAP.exe 最佳做法
TAP.exe 是一种了不起的工具,它能够使 Windows XP Embedded 开发过程变得轻松。然而,与在开发环境中使用的任何工具一样,该工具的使用效果取决于使用它的实现。TAP.exe 能够十分出色地查找系统中的所有硬件,但它经常会找到比最终的嵌入式映像所需的设备更多的设备。
对于在完整的桌面系统(例如,Windows XP)上运行 TAP.exe 的情况,TAP.exe 能够找到操作该系统所需的所有硬件和软件组件。TAP.exe 甚至会找到曾经安装在该系统中但后来又被移除的设备。
因此,非常重要的一点是,使用 TAP.exe 的嵌入式开发人员应该仔细检查导入的 PMQ 文件的结果以查找错误的硬件,以便确保他们所包含的硬件支持不会超出最终的嵌入式映像的真正需要。
使用 TAP.exe 的最佳方式是从 WinPE 环境内部使用它。在 WinPE 环境中运行 TAP.exe 通常会产生目标系统的相当小的 PMQ 或硬件配置文件。其主要原因之一是,WinPE 不会加载诸如广域网 (WAN) 小端口和内核音频子系统之类的软件枚举设备 (swenum),因此产生的 PMQ 文件比较小且更加易于使用。
下面的表格显示了 TAP.exe 能够在各种环境中找到的设备的数量方面的差异:
完整桌面环境
典型的 Windows XP Pro 或 Windows 2000 桌面环境
65到 75 个设备
典型的 Windows XP Pro 或 Windows 2000 膝上型环境
90到 100 个设备
WinPE 环境
典型的 Windows XP Pro 或 Windows 2000 桌面环境
35到 45 个设备
典型的 Windows XP Pro 或 Windows 2000 膝上型环境
45到 55 个设备
正如您可以看到的那样,在 WinPE 环境下运行 TAP.exe 可以产生用于创建最低配置运行时映像的最佳结果。
TAP.exe 会在 WinPE 环境中找到哪些设备?您真正需要的几乎所有设备。它会找到所有核心父设备(如外围设备互联 (PCI) 和图形加速端口 (AGP) 设备)、正确的系统硬件抽象层 (HAL)、磁盘驱动器和 CD-ROM 驱动器、启动系统所需的系统芯片组和关键启动设备以及一些基本通用串行总线 (USB) 设备支持。
如何对 TA.exe 和 TAP.exe 进行取舍
目标分析器 (TA.exe) 是另一个可用于查询目标硬件和创建最小内存足迹硬件配置文件的工具,但 TA.exe 缺少查找大多数系统中存在的许多子设备所需的支持。原因在于 TA.exe 的工作方式。
TA.exe 只扫描目标系统的 PCI 总线,并且只定位它可以找到的、附加到系统的 PCI 总线的主要父设备,但 TAP.exe 会扫描系统的注册表以获得检测到的设备的列表。
TA.exe 只有在实模式操作系统(如 Microsoft MS DOS®)中才能正确操作;它没有办法加载或扫描系统的注册表以查找设备。另一方面,TAP.exe 仅在 Windows 2000、Windows XP 和 Microsoft Windows Server™ 2003 上受到支持,而在其他任何 Microsoft 操作系统上不受支持。
TA.exe 能找到哪些子设备呢?它只能找到诸如 PS/2 鼠标设备和键盘、通信和打印机端口之类的设备。TA.exe 找不到诸如系统的磁盘驱动器、USB 外围设备和集线器、软盘驱动器之类的设备以及诸如电源按钮、风扇和热量控制之类的高级配置和电源接口 (ACPI) 设备。
在 WinPE 上运行 TA.exe 能够比在 Windows XP 上运行 TA 更快地创建映像,因为 WinPE 不会报告许多由 Windows XP 索引的设备,因而可以得到较小的 .pmq 文件。这一行为类似于在 WinPE 上运行 TAP.exe — 这与在 Windows XP Pro 上运行 TAP.exe(如前所述)相对。
与 ACPI HAL 和 TA.exe 有关的说明:
关键的 ACPI 组件 — Microsoft ACPI-Compliant System — 通常不会被 TA.exe 检测到,因而不会包含在配置中。请确保添加该组件,以避免在 First Boot Agent (FBA) 安装过程中发生崩溃。可以方便地使用 Filter Manager(在目标设计器内部)来搜索所有在其显示名称中含有“ACPI”的组件,以便顺利地定位大多数 ACPI“堆栈”。
另外一个关键的 ACPI 组件是目标硬件上的芯片组的特定集成驱动器电子 (IDE) 总线主控制器。缺少或拥有不正确的 IDE 总线主控制器通常会在 FBA 安装程序首次启动时导致“bug check 7b”消息。
创建硬件宏
这一部分演示如何在组件设计器中根据 PMQ 文件创建硬件宏(组件)。这是使用 Windows Embedded Studio 工具集生成映像的第一步。在完成这一步骤之后,就将拥有支持目标硬件的基本操作系统 (OS) 配置。为此,请启动组件设计器,然后在“File”菜单上,单击“Import”。使用“Browse”选项找到 PMQ 文件,然后单击“Next”继续。
在开始导入过程之前,可以指定需要导入程序在导入过程中生成的日志文件的名称和路径。具有导入日志有助于对可能需要第三方驱动程序支持的未检测到的或不受支持的设备进行疑难解答。
在指定导入日志以后,启动 PMQ 导入过程。设备查找过程通常需要大约 10 分钟,但是在完成以后,导入程序会产生目标硬件的硬件宏组件。
在导入过程完成以后,将光标放在新的宏组件上,并且查看该组件的主要属性。您会注意到,目标分析器除了被列为组件所有者以外,还被列为组件作者。如果您愿意,可以去掉该信息,并且在这些字段中放置您自己的姓名,以便组织中的其他人在需要时能够追溯到您自己。
您还可以用您的公司或项目的名称和版权信息来编辑公司名称和版权信息。“Description”字段是一个很好的用来记录有关该硬件宏的信息的地方;您还可以添加一些琐碎的信息(如计算机的品牌和型号),以便跟踪这些详细信息。
为了控制内存足迹,您还可以在保存硬件宏之前,对导入的设备进行一些设备精减工作。如果您不是硬件专家,则可以使用 MSDN® 上的“Reducing the Windows XP Embedded Run-time Image Size”白皮书来帮助您移除可能影响最终映像的不需要的硬件设备。
要查看在导入过程中找到了哪些硬件组件,请单击硬件宏的“Component”节点或“Group Dependencies”节点,并且浏览在导入过程中找到的设备。如果您的映像中不需要声音或调制解调器支持,则这些设备应该位于要移除的设备列表的顶部(如果这些设备存在的话)。此外,如果您的设计将只需要支持 PS/2 鼠标和键盘,则可以在精减宏的过程中移除所有 COM 和 LPT 端口。如果您不打算在最终的映像中支持软盘或 CD-ROM 访问,则还可以移除对这些设备的引用。
这一精减工作将使您得到更小的、更安全的映像,并且将有助于使您的 Windows XP Embedded 映像内存足迹保持最小。
如果您希望宏组件可以在目标设计器中进行配置,则可以将 Selector Prototype 组件添加为硬件宏的原型。为此,请导航到主要组件属性页,并且单击“Prototype”字段上的“Browse”按钮。导航到数据库中的 Software | Test & Development 类别,选择 Selector Prototype (R,1507) 组件,然后单击“OK”将该组件添加为原型。
现在一切准备就绪,您需要做的最后一件事情是发布您的组件,以便使其处于最终状态。
1.
在组件浏览器中右键单击 Kiosk-HW 组件,然后单击 Release component。
您会得到有关该操作会将组件设置为最终修订版的提示。
2.
单击 OK,保存 SLD 文件,并且关闭组件设计器。
现在就可以启动生成过程了。此时,需要启动目标设计器并启动一个新的 SLX 文件。
1.
在“Component Browser”窗口中,应该看到 Kiosk-HW 组件被列出。将该组件添加到配置中,然后单击“Settings”节点。
2.
将显示一个动态超文本标记语言 (DHTML) 窗口,该窗口列出了您的宏将在配置中包含的所有组件。
生成映像
既然硬件配置已经就绪,那么就可以开始向映像中添加所需的 Windows 子系统支持了。您可以通过添加 Runtime Quick Start Helper Macro 开始工作。该组件位于 Windows XP Embedded with SP1 数据库中的 Software | Test & Development 类别下面。请将该组件添加到您的配置中,并且单击它的“Settings”节点以查看它的可配置 DHTML 设置。
这一“Helper”宏能够解析用户在生成运行时映像时遇到的常见组件依赖项。如果您希望在最终映像中包含 Enhanced Write Filter (EWF) 支持,则必须对该宏进行一项修改。单击 Helper Macro 的“Settings”节点,然后禁用 Microsoft Windows NT® Loader 的选项,以使其不会被添加到运行时映像中。
如果您的映像中需要 Enhanced Write Filter (EWF) 支持,则必须添加 EWF 组件。EWF 组件对于 EWF 支持所需的 Windows NT Loader 版本具有组件依赖性,因此您只需要将该组件添加到映像中,就可以继续工作了。
您还需要使用 System Cloning 工具来准备最终映像以便进行大规模分发,因此请搜索 System Cloning Tool—Hotfix Q810144 并将其添加到配置中。
您还需要向映像中添加网络支持,因此必须通过 Client For Microsoft Networks 宏组件包含传输控制协议/Internet 协议 (TCP/IP)。
既然硬件和软件组件已经就绪,那么就可以执行首次依赖项检查了。在完成首次依赖项检查之后,您需要为 EWF 和 System Cloning 配置的设置将全部可用。还需要配置 User Interface 核心(外壳程序设置)和 Administrator 密码的附加设置,因此最好一次性地配置所有设置。
配置 EWF
在依赖项检查完成之后,您或许希望在 Windows XP Embedded 运行库中包含 EWF 支持。通过 EWF,可以从只读媒体(例如 Flash ROM 或 CD-ROM)或写保护硬盘驱动器中启动 OS。在阅读下一部分之前,强烈建议您熟悉一下 EWF 并了解它可以为您的嵌入式设计做些什么,以便您可以决定是否需要实现 EWF 功能。您可以从 EWF 产品文档资料和在 Windows XP Embedded 中使用 Enhanced Write Filter (EWF) 开始。
覆盖的类型
在 Windows XP Embedded with SP1 中支持两种基本类型的 EWF 覆盖。首先,存在基于磁盘的覆盖,它将所有写操作重定向到硬盘上的独立分区。如果需要,可以将覆盖分区中存储的数据提交到受保护的卷。对于单个卷,可以存在多个磁盘覆盖,并且它们可以分层。这就允许创建多个磁盘检查点。您可以剥离覆盖层以便还原到以前的视图。这可以通过 EWF 管理器应用程序进行控制。Windows XP Embedded with SP1 对于每个卷最多支持九个覆盖。
第二种类型的覆盖是随机访问内存(基于 RAM)覆盖。基于 RAM 的覆盖会将所有写操作重定向到内存。通常,当计算机关机或重新启动时,该数据丢失。Windows XP Embedded with SP1 具有使该数据在关机后继续存在的能力。但是,如果计算机不是正常关机,则数据会丢失。每个卷只能配置一个 RAM 覆盖。您对 EWF 覆盖的选择取决于设备的要求。
配置基于磁盘的覆盖
下面的步骤详细说明了如何将映像配置为支持 EWF 磁盘覆盖:
1.
在目标设计器中,将 Enhanced Write Filter 组件添加到映像中。如果您要保护启动卷,则还需要包含 EWF NTLDR 组件。
2.
为您的设备配置设置,并选择 DISK 作为覆盖类型。
3.
在“EWF Volume Configuration”中,选择受保护的卷的数量和覆盖级别。按照您希望在覆盖中具有的空间量设置分区大小。请确保为每个受保护的卷输入磁盘号和分区号,并且选中 Start EWF Enabled 复选框。
有关所有字段的说明,请参阅 Windows XP Embedded 文档资料。
典型的 RAM 覆盖配置
EWF 卷配置
Maximum Number of Protected Volumes
1
Maximum Number of Overlay Levels
1
EWF Partition Size in KBytes
128,000
Start EWF Enabled
Yes
Enable Lazy Write
No
Disk Number
0
Partition Number
1
Disk Type IDE SCSI
IDE
Overlay Type
Disk
1.
配置、生成映像并将其部署到设备。您需要将驱动器分区,以便在该驱动器上的扩展分区中具有可用的空闲空间;该空间将被 EWF 用于在磁盘覆盖中存储数据,因此它需要足够大,以便容纳您的数据。例如,要使受保护的卷可以使用 100 兆字节 (MB) 的覆盖,该分区必须起码为 100 MB。
注 如果扩展分区不存在,并且您具有的主分区少于四个,则将需要在驱动器上留下未分区的空间。
2.
启动设备。在 FBA 期间,EWF 将基于注册表中的设置配置本身。它将创建并格式化 EWF 分区。
配置基于 RAM 的覆盖
下面的步骤详细说明了如何将映像配置为支持 EWF RAM 磁盘覆盖:
1.
在目标设计器中,将 Enhanced Write Filter 组件添加到映像中。
2.
配置设备的设置,将 EWF 分区大小设置为 0,并且选择 RAM 作为覆盖类型。
3.
在“EWF Volume Configuration”中,选择受保护的卷的数量。
4.
将覆盖级别的数量设置为 1,将分区大小设置为 0。确保为每个受保护的卷输入磁盘号和分区号,并且选中 Start EWF Enabled 复选框。有关所有字段的说明,请参阅 Windows XP Embedded 文档资料。
典型的 DISK 覆盖配置
EWF 卷配置
Maximum Number of Protected Volumes
1
Maximum Number of Overlay Levels
1
EWF Partition Size in KBytes
0
Start EWF Enabled
Yes
Enable Lazy Write
No
Disk Number
0
Partition Number
1
Disk Type IDE SCSI
IDE
Overlay Type
RAM
5.
配置、生成映像并将其部署到设备。您需要将驱动器分区,以便在该驱动器上的扩展分区中至少具有 32 KB 的可用空闲空间(有关详细信息,请参阅上一部分中的附注)。该空间将被 EWF 用于在前后两次启动之间存储 RAM 覆盖的配置数据。
6.
启动设备。在 FBA 期间,EWF 将基于注册表中的设置配置本身。它将创建一个最小的 EWF 分区来存储它的配置信息。
配置 System Cloning
可以使用多种技术来部署 Windows XP Embedded 映像。所选择的方法取决于嵌入式设备的要求。本文所讨论的第一种方法是 System Cloning。单个映像的大规模部署需要使用 System Cloning 工具。System Cloning 工具的核心功能是为部署的每台计算机生成唯一的安全标识 (SID)。如果您将同一映像复制到每个设备,则每个设备将共用相同的计算机 SID。这会造成一个问题,因为每个运行 Windows XP Embedded 的设备都需要具有唯一的计算机 SID,以便能够在网络中唯一地标识它。
注 强烈建议嵌入式开发人员下载 System Cloning 工具的 QFE — Q810144。System Cloning QFE 提供了当前无法在 Windows XP Embedded with SP1 中获得的其他功能。
System Cloning 组件具有可配置的设置,能够帮助您控制在克隆过程中改变映像的哪些方面。默认情况下,如果您没有在生成运行时映像之前在目标设计器中配置 System Cloning 组件,则 System Cloning 工具会从 FBA 安装程序的阶段 12000(早于安装程序的最后一次启动 | 用户首次登录)开始,并且将重置下列系统属性:
• 计算机 SID
• 计算机名称
• 自动登录设置
• 域参与
• 网络设置
• 用户特有设置
• 已装入的设备(被替代的驱动器号等)
1.
该命令会将 SDI 磁盘写到目标设备中。SDI Manager 执行基于扇区的复制,因此不需要使用诸如 fdisk 和 format 之类的工具。
2.
在 SDI Manager 完成(命令提示返回)之后,重新启动目标设备。请确保在系统启动到新的 Windows XP Embedded 运行库之前移除 WinPE 启动盘。
捕获“golden”映像
在自定义、配置和重封该映像之后,需要捕获该映像,这样,每个目标设备就不必经历 FBA 和任何手动自定义了。工具“SDI Manager”用于捕获最终的 Windows XP Embedded 运行库。因为这是将要应用于所有目标设备的映像,所以它被称为“golden”映像。
1.
用 WinPE 启动盘启动目标设备。
2.
将网络驱动器映射到刚刚创建的共享。例如:
net use z: \\mydevmachine\sdi