我刚买了一台预装了 Windows 7 的新 PC(HP P7-1380T)。该机器设置为 EFI 启动,没有“安全启动”。我原本计划将旧的 SATA 驱动器(双启动 XP 和 Linux,MBR 中有 grub)安装为辅助驱动器,以便将 Windows 和 Linux 文件复制到新驱动器 - 然后将其保留为备份设备。问题是我无法以 Windows 和 Linux 都可以识别的方式安装旧驱动器。
该机器配有 SATA0 硬盘和 SATA2 DVD/ROM 驱动器。SATA1 和 SATA3 是空闲的。
当我将旧驱动器插入 SATA1 时,我无法启动 Windows 7。EFI 引导加载程序尝试从旧 SATA1 驱动器而不是新 SATA0 驱动器启动。它加载了 grub 启动菜单,此时我关闭电源以防止进一步的破坏。在 SATA1 中,旧驱动器显示在 BIOS 中,当我从实时 CD 启动 Linux 时,它将其视为 /dev/sdb。
当我将旧驱动器插入 SATA3 时,它没有BIOS 中显示,当我启动 live linux CD 时,它也没有看到驱动器。但是,在 SATA3 中安装驱动器后,Windows 7 启动,并且它看到旧的 XP 分区并将其用作驱动器 F:。
显然,我更愿意使用 SATA1,这样 Linux 就可以使用该驱动器,但到目前为止,我只能让 Windows 或 Linux 看到它,而不能同时看到它。为什么 EFI Windows 引导加载程序会尝试从辅助驱动器启动,而它显然设置为从 SATA0 启动?是否有一些工具可以用来更改此行为?
答案1
由于安装了 Windows XP,您的旧驱动器几乎肯定使用 MBR 分区和 BIOS 引导加载程序。不幸的是,不现代 EFI 系统在显示两个磁盘时如何反应的标准化,其中一个磁盘使用 GPT 和 EFI 引导加载程序,另一个磁盘使用 MBR 和 BIOS 引导加载程序。您可以通过调整固件设置或引导顺序来忽略磁盘,但这可能还不够。沿着这些思路,寻找引导顺序选项或禁用“CSM”或“旧版”支持的选项。您也可以尝试启用“快速启动”支持。
如果这些都不起作用,你可以考虑另一种方法:
- 安装两个磁盘。
- 从光驱启动紧急 Linux 系统。例如系统救援光盘或者Parted Magic应该可以正常工作。
- 使用应急系统将所有文件从旧磁盘复制到新磁盘。
- 可选地,关闭电源,移除旧磁盘,使用新安装启动,并检查所有文件是否可访问。重新启动进入紧急系统。
- 启动
parted
、GParted,或者gdisk
在旧磁盘上。 - 在旧磁盘上创建一个新的(空的)GUID 分区表。您可以
parted
使用mklabel
命令执行此操作,在 GParted 中通过使用设备->创建分区表对话框及其高级选项,在 中gdisk
通过在主菜单中键入o
然后使用 保存更改来执行此操作w
。这应该会使磁盘在 BIOS 模式下无法启动,因此它不会出现您现在遇到的问题。 - 在旧磁盘上创建新的分区和文件系统。务必使用支持 GPT 的工具,例如
parted
、GParted 或gdisk
;不要使用fdisk
,cfdisk
, 或sfdisk
! - 在紧急系统中或重新启动到常规安装后,开始使用旧磁盘作为备份磁盘。
当然,此过程意味着您将无法启动 Windows XP 或旧的 Linux 安装。如果您想保留启动 Windows XP 的能力,则需要更加努力地寻找基于固件的解决方案;或者您可以对 XP 分区进行映像备份并尝试使用虚拟机运行它——但在这种情况下,完全重新安装 XP 更有意义。