设为首页收藏本站

网络分析论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22902|回复: 14

XP Embedded 的双启动提示

  [复制链接]
arch 发表于 2007-1-28 21:20 | 显示全部楼层 |阅读模式
by Sean D. Liming
Microsoft Embedded MVP
Managing Director, SJJ Embedded Micro Solutions

适用于 Microsoft© Windows® XP Embedded

摘要

双启动是玩转 Windows XP Embedded 时最常用的目标方法之一。本文讨论解决双启动配置问题的某些技巧。



本页内容
简介
配置设置
Boot.ini 文件
ARC 路径
驱动器号
Virtual PC 2004 — 更好的选择
小结
SJJ Embedded Micro Solutions 公司
更多信息
其他资源

简介
许多 Windows® XP Embedded 开发的新手选择他们自己的开发系统作为 Windows XP Embedded 目标平台。称为双启动的原因是,它允许开发人员在 Windows XP Professional 中构建 Windows XP Embedded 操作系统,将该操作系统下载到一个单独的分区或硬盘驱动器,然后将计算机重新启动到 Windows XP Embedded。因为不再需要购买一台单独的计算机作为目标计算机,所以双启动可以为您节省成本。

对于在该环境下编程的开发人员而言,其面临的一个问题就是如何在 Windows XP Embedded 配置和 boot.ini 文件中设置正确的参数。Windows XP Embedded 新闻组中充斥着有关高级 RISC 计算 (ARC) 路径、boot.ini 设置和驱动器号的问题。在以下各部分中,我尝试将这些问题解释清楚。

返回页首
配置设置
在 Windows NT Embedded 时代,Windows NT 与 Windows NT Embedded 之间双启动的唯一设置要求就是在主活动分区的 boot.ini 文件中更改 ARC 路径。然而现在,注册表更加完整了。因此,Windows XP 和 Windows XP Embedded 自然而然地要求将驱动器号和 ARC 路径信息内置到注册表中。当您在计算机上安装 Windows XP 时,会在安装期间自动安装驱动器号和 ARC 路径设置。

对于 Windows XP Embedded,您必须在自定义配置的目标设计器中手动设置驱动器和 ARC 路径设置。图 1 显示一个示例“目标设备设置”部分。操作系统将驻留在第一个硬盘驱动器的第二个分区上。该分区大小为 2 MB。



目标设备设置 – 驱动器号正确吗?


驱动器号 E 正确吗?您如何确定这些参数?以下部分提供了有关如何设置这些参数的提示。

返回页首
Boot.ini 文件
扩充 Windows NT 的 boot.ini 文件,允许在一台计算机上存在多个操作系统的实例。使用 boot.ini 文件,您可以启动到不同的操作系统,如 DOS、Windows 9X、Windows 2000、Windows XP 和 Windows XP Embedded。通常,这些不同的操作系统驻留在计算机的不同硬盘驱动器或分区中。Boot.ini 文件包含定义操作系统安装路径的 ARC 路径。

在您构建 Windows XP Embedded 映像时,目标设计器会自动创建一个 boot.ini 文件,其中的 ARC 路径基于“目标设备设置”中的值。在双启动方案中,没有使用映像的 boot.ini 文件,也没有使用 NTLDR 和 NTDETECT 文件,这两个文件位于映像的根下。

当计算机启动时,BIOS post 会运行和配置芯片集以启动操作系统。在系统 BIOS 完成 ROM 扫描操作后,它会查找启动设备,如软盘、CD-ROM、USB 闪存、PXE 客户端或硬盘驱动器。在硬盘驱动器上,BIOS 会查看前几个扇区(也称为主启动记录 (MBR))。MBR 中包含可告知 BIOS 到哪里查找主活动分区的所有分区和跟踪信息。系统中必须有一个主活动分区。

在双启动方案中,Windows XP Pro 驻留在主活动分区中,并且只使用主活动分区中的 boot.ini 文件(以及 NTLDR 和 NTDETECT)。一旦构建了 Windows XP Embedded 映像,您就必须手动编辑 Windows XP Pro 分区中的 boot.ini 文件,以添加第二个 ARC 路径选择。以下为一个示例:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Embedded" /fastdetect

无论是否使用这些文件,您都应该将整个 Windows XP Embedded 映像(包括根启动文件)复制到分区。在开始使用独立系统时,您将需要这些文件。

返回页首
ARC 路径
操作系统使用 ARC 路径来确定操作系统驻留的位置。路径 multi(X)disk(Y)rdisk(Z)partition(W)\ 提供了一个指向操作系统设备位置的指针。但是,指定 X、Y、Z 和 W 的值会出现问题。

另外,还有一个用于 SCSI 驱动器的 scsi(X)disk(Y)rdisk(Z)partition(W)\ ARC 路径约定。SCSI 驱动器较为复杂,因为您可能会使用两种 ARC 路径类型。由于 IDE(包括串行 ATA)驱动器提高了性能,SCSI 驱动器就不那么流行了,因此我们将使用 IDE ARC 路径类型作为本文中的示例。有关 SCSI 支持的详细信息,请参阅“参考资料”部分中的 MSDN ARC 路径文章参考。由于这个原因,我们可以假定 X 和 Y 的值始终为 0 – multi(0)disk(0)。这就只剩下了 Z 和 W 的值。

Z 值指的是磁盘编号,它从 0 开始。磁盘顺序通常由 IDE 或 SATA 总线(IDE 0 或 IDE 1,SATA 0 或 SATA 1)以及该磁盘是主驱动器还是次驱动器决定。

W 值指的是 Z 值所定义的磁盘上的分区号。分区号从 1 开始。

下面是阐明 Z 和 W 概念的几个示例。

示例 1:您希望 Windows XP Embedded 从第二个 IDE 磁盘(IDE0 次驱动器)的第二个分区启动。ARC 路径将如下所示:

multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="Microsoft Windows XP Embedded" /fastdetect

示例 2:您希望 Windows XP Embedded 从第四个 IDE 磁盘(IDE1 次驱动器)的第三个分区启动。ARC 路径将如下所示:

multi(0)disk(0)rdisk(3)partition(3)\WINDOWS="Microsoft Windows XP Embedded" /fastdetect

示例 3:您希望 Windows XP Embedded 从第一个 IDE 磁盘(IDE0 主驱动器)的第二个分区启动。ARC 路径将如下所示:

multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Embedded" /fastdetect

请注意,ARC 路径以 \WINDOWS 结尾。对于从 Windows NT 升级系统的开发人员来说,还有一些困惑。旧的目录称为 \WINNT。Windows XP Embedded 映像将所有的主要文件都放在 \WINDOWS 目录下,因此您的 ARC 路径中还应该有 \WINDOWS。如果您使用 \WINNT 取而代之,则会在启动时收到以下错误信息:

Windows could not start because the following file is missing
or corrupt:
<Windows root>\System32\hal.dll.
Please re-install a copy of the above file.

返回页首
驱动器号
正是驱动器号导致了大部分问题的发生,并且它是最难以解决的参数。如果您设置的驱动器号不正确,操作系统将会反复重新启动,而不会启动 Microsoft Windows XP Embedded First Boot Agent (FBA)。

当您创建第二个分区后,磁盘管理器会自动为新分区指定一个驱动器号。在图 2 中,磁盘管理器为主磁盘上用于 Windows XP Embedded 的第二个分区指定了驱动器号 E。CD-ROM 驱动器使用驱动器号 D。



图 2 驱动器号为 E 的第二个分区


假定 Windows XP Embedded 驱动器号必须为 E,那么您可能会如图 1 所示那样设置“目标设备设置”。但是,实际情况不是这样的。

要确定正确的驱动器号,应假定系统在没有 CD-ROM 驱动器的情况下启动 DOS,并且所有驱动器都有文件分配表 (FAT) 文件系统。如果您要在 DOS 中访问每个分区,则驱动器号应如下分配:

• Windows XP Embedded 中的 C 应该是 DOS 中的 C。

• Windows XP Embedded 中的 E 应该是 DOS 中的 D,这是因为没有加载 CD-ROM 驱动器。


这样,正确的驱动器号应该是D。在图 1 中,“目标设备设置”需要使用 D 驱动器号而不是 E。虽然这不是查找驱动器号的最科学方法,但是它始终有效。

请注意,如果您的系统有多个硬盘驱动器,则可能需要仔细考虑驱动器号。

返回页首
Virtual PC 2004 — 更好的选择
我不得不承认,双启动并不是我在测试 Windows XP Embedded 时最喜欢使用的方法。我更喜欢用单独的目标系统;因为原始设备生产商 (OEM) 要提供的是只使用 Windows XP Embedded 的系统。

您当然希望节省资金,同时初探这些选项。如果您在之后无法启动操作系统,那么结果将非常糟糕,这本来是可以避免的。此外,还有一个缺点。您必须关闭对开发系统的访问才能启动到测试操作系统,这将减慢整个开发过程的速度。

基于这些原因,使得 Virtual PC 2004 (VPC) 优于双启动。我发现,VPC 非常有助于无法拥有第二个目标系统情况下的长期开发过程。最好的一点是,当我每次需要运行 Windows XP Embedded 内部版时,不必再重新启动计算机。

在撰写本文时,Virtual PC 2004 推出了一个 45 天的免费试用版,您可以从该 Microsoft Web 站点下载此版本。请查看 www.sjjmico.com 上的 Windows XP Embedded Toolkit,以获得有关将 Windows XP Embedded 与 VPC 配合使用的详细信息。
 楼主| arch 发表于 2007-1-30 12:38 | 显示全部楼层
 楼主| arch 发表于 2007-2-6 10:11 | 显示全部楼层
 楼主| arch 发表于 2007-2-6 10:23 | 显示全部楼层
凌豪 发表于 2007-11-17 17:18 | 显示全部楼层
thank you
lf144090 发表于 2008-7-28 12:54 | 显示全部楼层
:-)
心上长草 发表于 2010-1-19 18:27 | 显示全部楼层
呵呵,不错呀
我在坚持什么 发表于 2011-6-23 16:09 | 显示全部楼层
嗯,学习了哈!
失眠旳情绪 发表于 2011-8-21 20:19 | 显示全部楼层
我也学习咯~
时代广 发表于 2011-12-2 19:24 | 显示全部楼层
凡走過,必留下我的足跡
慯伈々無涙 发表于 2013-11-4 21:11 | 显示全部楼层
好帖顶一个。
蛋糕房事 发表于 2014-11-18 19:36 | 显示全部楼层
什么勤快俄啊
共同进退 发表于 2014-12-6 20:32 | 显示全部楼层
就是这样的啊。。

Archiver|手机版|小黑屋|网络分析论坛 ( 京ICP备05002225  

GMT+8, 2020-8-6 06:46 , Processed in 1.093750 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2014 协议分析论坛

快速回复 返回顶部 返回列表