亲爱的未来人:在 BIOS 模式下安装 Windows 7。GPT 和 UEFI 未得到正确支持。
更长的答案:如果您在另一个硬盘上有一个 EFI 分区,即使它是您唯一的 EFI 分区,UEFI 模式的 Win7 安装程序也会继续写入 EFI 分区,直到无法再写入为止。之后,它将写入系统保留分区,将其余空白空间格式化为 NTFS,安装程序将失败。当您尝试删除 NTFS 并在格式化的内容上安装时,您将被告知 Windows 7 无法安装在 GPT 磁盘上。
这篇文章会比较长,因为我做了很多测试。除非有证据证明不是这样,否则我假设这个非常奇怪的问题是由我的电脑被鬼魂缠身引起的。我也有点忙,所以可能几天内都无法尝试建议的修复方法。
背景故事:我刚刚组装了一台新台式机。里面有 3 个硬盘:一个来自某人旧 PC 的 1TB(我将其完全重新格式化以安装全新的 Windows),一个我买的干净的 80GB(完全重新格式化),还有一个来自我仍在使用的旧 BIOS 笔记本电脑,因为它才几个月大。由于硬件兼容性问题,我刚刚在 17.2 上安装了 17.3(均基于 Ubuntu 14.04)。除了这个和其他一些事情(分区调整大小以删除笔记本电脑的 Windows 安装)之外,它与正常工作的设置完全相同。它只是在 UEFI 系统中而不是 BIOS 中。我的 Linux 硬盘显示 MBR 类型的分区表,但这不应该是问题所在。笔记本电脑驱动器上的每个分区都是扩展分区的一部分。
问题:Windows 无法启动。当我尝试启动时,Windows 徽标会弹出一秒钟,然后屏幕变黑,并出现一个进度条,显示“Windows 正在加载文件”。然后它告诉我 Windows 无法启动。安全模式不起作用。我尝试放入安装介质并运行启动修复,但它立即进入“正在尝试修复”状态,并且修复操作无法取消,除非关闭机器。
我所做的事情(在发布问题时)(这只是我记得做的事情,可能还有一些我忘了提及的事情):
所有安装和启动均在 UEFI 模式下完成,而不是传统 BIOS 模式。固件已更新为最新版本。是的,我在拔下硬盘之前关闭了系统。不,安全启动未启用。
首次尝试:首次在新机器上安装。将 Windows 安装到 1TB,调整笔记本电脑分区大小,并在笔记本电脑硬盘上安装 Linux。重新启动到 Linux,运行良好。后来发现 Windows 现在很乱。
第二次尝试:删除 1T 上的分区。拔下 1T 和笔记本电脑。将 Windows 安装到 80G(以生成新的 EFI 分区)。启动到 Windows,一切正常。拔下 80G,重新插入 1T。将 Windows 重新安装到 1T,然后删除 80G 上除 EFI 之外的所有内容。启动到 Windows,一切正常。拔下 1T 并重新安装 Linux,选择 80G 上的 EFI 分区作为启动分区。重新插入 1T 并启动到 Linux,然后运行 update-grub。启动到 GRUB,选择 Windows。Windows 无法启动。
第三次尝试:再次删除 1T 并运行 update-grub 以删除 Windows 条目,然后编辑 .bash_aliases 以确保我不会意外更新 GRUB(是的,我知道这是针对每个用户的,而不是针对系统的)。拔下笔记本电脑和 80G。重新安装 Windows。重新插入笔记本电脑和 80G。这次我使用 BIOS 启动菜单而不是 GRUB 启动到 Windows。Windows 加载正常。重新启动到 Linux。查看 GRUB,没有 Windows 条目。Linux 加载正常。现在我感觉非常有信心,但为了 10,000% 确定,我再次通过主板的 UEFI 启动菜单重新启动到 Windows。Windows 加载失败。GRUB 仍然没有显示 Windows 条目。
此时,我完全不知所措。它们甚至不应该交互,更不用说这样做了。Windows 7 现在是否有一段代码可以检测 Linux 并自行退出,但仅限于 UEFI 模式?我有点想它与我的 MBR 笔记本电脑驱动器有关,但那是我的 Linux 安装托管的地方,更不用说上次尝试完全消除了任何意外覆盖的可能性。这对我来说是一个真正的问题,因为我的一些工作需要不在 WINE 下运行的程序。我可以在大学里做这件事,但如果我在星期五下午意识到我犯了一个错误,我就完全倒霉了。有人能告诉我发生了什么,我该如何解决这个问题吗?研究表明,多个 EFI 分区不应该产生问题,我完美运行的 MBR Linux 安装不应该影响单独驱动器上的 Windows。我有点犹豫是否要尝试将其转换为 GPT 只是为了看看会发生什么,因为出于某种原因,我的备份程序在到达 steam.pipe(以及一些其他程序,但通常会先到达那个程序)时会冻结,并且我不能丢失所有数据。
这个问题能解决吗?还是我应该叫来驱魔人?
答案1
我没有明确的解决方案,但我确实有一些观察和建议:
- 显示详细信息-- 你对每一步所做事情的总结省略了很多细节。对这些细节的总结可能会有所帮助在某个时间点,然后停止摆弄系统,直到你收集到一些可以优先考虑的建议。Linux启动信息脚本将把信息收集到一个文件中 (
RESULTS.txt
),您可以将其发布到pastebin 网站并在此处发布文档的 URL。请随意尝试以下一项或多项操作前你可以这样做,但请不要发布你的系统状态然后更改它。此外,在你的 Windows 启动失败报告中添加精确的错误消息。(如果消息很长,请拍摄并发布数码照片。) - 从方程式中移除 GRUB-- 与 IInspectable 不同,我不认为 GRUB 是问题的根源;但是,如果是的话,你可以将其从方程式中移除。你可以重新安装 Windows 以获取工作副本,然后安装 Mint没有GRUB。在 Ubuntu 中,您可以通过将安装程序引导至“尝试不安装”模式来执行此操作,打开终端并输入
ubiquity -b
。该-b
选项告诉它不安装 GRUB。我怀疑 Mint 也会这样,但我对此并不 100% 肯定。此时,Mint 将安装但无法启动。您可以使用我的rEFInd 启动管理器放在 USB 闪存驱动器上进行临时启动,或者在 Mint 中安装其 PPA 或 Debian 包以将其永久安装到硬盘上。rEFInd 在启动 Windows 引导加载程序方面比 GRUB 做得更好,因此使用 rEFInd 并将 GRUB 保持在磁盘之外可能会有所帮助。 - 停止玩弄磁盘-- 您大量使用了旧 BIOS 技巧,即拔下磁盘来控制启动过程。这种做法在 EFI 世界中用处不大,因为在 EFI 中,引导加载程序的完整路径存储在 NVRAM 中。当您拔下磁盘时,固件可能会注意到路径无效并将其删除。此问题不会破坏从 GRUB 启动的 Windows,但如果您只能通过其 NVRAM 条目来启动 Windows,则拔下磁盘可能会删除或损坏该条目,从而导致问题。再加上 GRUB 错误阻止其启动 Windows,这可以解释您的许多问题。
- 仅使用 GPT- 它应该可以混合使用 GPT 和 MBR。这样做通常可以。不过,我看过一些问题报告,它们表明 MBR 磁盘的存在可能会导致一些微妙而奇怪的问题一些您的计算机可能就是其中之一。因此,我建议仅使用 GPT。如果您有想要保留在 MBR 磁盘上的宝贵数据,我建议您备份这些文件,然后使用我的
gdisk
程序从 MBR 转换为 GPT。(gdisk
附带 Mint 并适用于 Windows。)转换本身风险较低,但并非 100% 无风险,并且仅需几分之一秒——浏览菜单和键入命令所花的时间比重写数据结构所花的时间要长得多。 - 在 Windows 中禁用快速启动和休眠-- 这两个 Windows 功能在双启动配置中会引发无数麻烦和奇怪的启动问题。当启用时,关机或重启操作会变成挂起到磁盘的操作,从而导致文件系统损坏,并可能表现为启动问题。请参阅这里和这里了解如何禁用这些功能。请注意,这是视窗重要的功能。许多 EFI 都具有完全不相关的“快速启动”功能,这是不是你的问题的根源。
- 禁用固件中的 CSM-- 兼容性支持模块 (CSM),又称“传统启动支持”或类似名称,为 EFI 提供了启动 BIOS 模式操作系统的能力。这可能会导致问题,因为您可能在不知情的情况下以 BIOS 模式安装了其中一个操作系统。请参阅我的这个页面了解有关 CSM 以及它如何导致问题的更多信息。
- 识别并限制 ESP 的数量-- EFI 规范非常明确地规定,多个 ESP,甚至每个磁盘多个 ESP,都是合法的;但是,有些操作系统在存在多个 ESP 时会出现问题。至少对于 Windows 7 安装程序来说是这样。(我还没有检查过较新的 Windows 安装程序。)我从未听说过由于多个 ESP 而出现像您这样的问题,但一般来说,我会尝试将所有磁盘上的 ESP 数量限制为一个。
- 检查您的 NVRAM 条目- 您可以使用简易UEFI在 Windows 中或
efibootmgr
在 Linux 中使用该实用程序来查看和管理您的 NVRAM 条目。如果您想重新安装所有内容,我建议您首先清除所有 Windows 和“Ubuntu”(实际上是 Mint)条目,以及可能剩余的任何其他条目(例如,如果您之前安装了 Fedora,则清除 Fedora 条目)。请注意,某些条目是由固件创建的,即使您删除它们,它们仍会重新出现。
在这些建议中,禁用快速启动和休眠、禁用 CSM 以及停止磁盘操作可能是最重要的。从 GRUB 切换到 rEFInd不应该帮助,但根据您对问题开始发生时情况的描述,可能值得尝试。
答案2
听起来你需要将硬盘设置为 GPT 而不是 MBR。我只知道如何以一种破坏你要安装到的驱动器上的所有数据的方式执行此操作。在从 Windows DVD/USB 可启动设备启动时按 Ctrl+f10。这会打开一个命令提示符,你可以在其中使用“diskpart”
输入;列出磁盘(显示磁盘)
然后;选择磁盘#(用驱动器号替换#
然后输入;clean(警告,这将删除所有分区)
然后输入;转换 gpt(将 mbr 转换为 gpt)
最后输入;format fs=fat32 quick
然后输入“exit”并按回车键,然后输入“exit”并再次输入
这会让您在 Windows 安装程序菜单中看到一个可以接受 UEFI 安装的 GPT 硬盘。
提示!!!!使用 rufus 将 Windows .iso/.img 文件刻录到 USB 驱动器以创建与 GPT/UEFI 兼容的安装媒体!
一些 DVD 媒体没有 EFI 安装选项。