我有一台带有一块硬盘的计算机,其中 Ubuntu 14.04 是唯一的操作系统,并且 GRUB2 位于同一磁盘 (hd0/sata0)。其分区如下:
sda1 - ext4 primary
sda2 - swap area
sda3 - NTFS
我找到了一个旧硬盘,上面安装了 XP 作为主操作系统(也是唯一的操作系统)。我将其连接到我的计算机(sata1),GRUB2 将其识别为 hd1。
我的目标是通过 GRUB2 命令行/配置文件加载 XP 操作系统(无需更改 BIOS 启动顺序或重新安装 XP)。
我进入GRUB2命令行并尝试了以下命令:
set root='(hd1,msdos1)'
drivemap -s hd0 hd1
chainloader +1
这个解决方案不起作用。它说该命令drivemap
不存在,并且命令chainloader
要求输入文件。
如何使用另一块硬盘上的 GRUB2 启动 Windows XP(非 EFI)?
答案1
您看到的错误消息意味着您当前的设置处于 EFI 模式。但是,Windows XP 不支持在 EFI 模式下启动——它是一个仅限 BIOS 的操作系统。此外,Windows XP 已经达到寿命终止 (EOL) 状态。因此,对你的问题最简单的回答是“忘掉它”。你应该能够从更现代的 Windows 或 Linux 中提取磁盘中的用户数据。如果你真的迫切需要运行 Windows XP,我有几点建议:
- 虚拟化-- 您可以在虚拟机中运行 XP,例如在 VirtualBox 下。请参阅这里有关如何为 VirtualBox 提供直接(“原始”)磁盘访问以启动现有 Windows XP 安装的信息。
- 全部转换为 BIOS 模式-- 您可以转换全部当前操作系统以 BIOS 模式启动。这将需要执行GPT 到 MBR磁盘转换、重新安装 GRUB,以及重新安装现有的 Windows 引导加载程序或重新安装 Windows。这可能是此处描述的选项中最困难的转换,但一旦完成,它应该会顺利运行。
- 手动切换启动模式-- 许多 EFI 都提供内置的启动管理器,可以在 EFI 模式和 BIOS 模式启动之间切换。如果您有这样的固件,您应该能够通过访问此启动管理器手动切换启动模式。不幸的是,不同 EFI 之间的细节差别很大,所以我无法提供有关如何执行此操作的详细说明。
- 使用 rEFInd- 我的rEFInd 启动管理器可以切换启动模式,但您需要编辑
refind.conf
配置文件:取消注释该scanfor
选项并确保它hdbios
在选项中。不过,此功能非常原始;目前,它通常只能从第一个硬盘启动,因此您可能需要交换磁盘电缆或在第一个磁盘上安装 BIOS 模式引导加载程序,以将启动过程重定向到第二个磁盘。有些计算机缺乏 rEFInd 以这种方式工作所需的固件功能。 - 使用第二台计算机-- 这是最简单的选择。将磁盘插入第二台计算机并使用它。
还要注意的是,Windows(甚至像 XP 一样老的版本)往往对硬件要求很高,因此可能需要多次重启才能更新其驱动程序以适应新环境。事实上,它甚至可能没有适用于现代计算机的驱动程序;您可能需要从计算机制造商处获取它们——假设它们存在!(VirtualBox 可能以这种方式更容易,因为它模拟了相当旧的硬件。)