扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
许多 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 正确吗?您如何确定这些参数?以下部分提供了有关如何设置这些参数的提示。
扩充 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 路径来确定操作系统驻留的位置。路径 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。虽然这不是查找驱动器号的最科学方法,但是它始终有效。
请注意,如果您的系统有多个硬盘驱动器,则可能需要仔细考虑驱动器号。
我不得不承认,双启动并不是我在测试 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 配合使用的详细信息。
双启动开发计算机以测试 Windows XP Embedded 是您熟悉工具的一个快捷方法。完全了解 ARC 路径和驱动器号将有助于您在最后获得成功。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者