我有一台 ASUS N56VZ,配备 Intel Core i7 - 3610QM,预装了 Win 7 Home Premium x64。这台电脑配备 EFI,而不是传统的 BIOS。
当我购买它时,我有 3 个可见分区。C(系统)- 包含窗口和程序;D(数据)- 空白,我存储我的个人数据和电影;E(恢复)- 从华硕到恢复计算机的软件。
因此,由于我正在攻读计算机科学硕士学位,因此我需要安装 Ubuntu。我从 Win 7 中创建了一个分区,为 Ubuntu 12.04 保留了大约 35 GB 的空间。
一切顺利,安装成功。我重新启动后就可以进入 Ubuntu。启动时显示 4 个条目:2 个用于 Ubuntu,一个用于 Windows,一个用于 Windows 恢复。
当我尝试进入 Windows 7,“Windows 7(加载器)”时,收到以下消息:
error: Invalid EFI file path.
Press any key to continue...
用于恢复的那个也无法启动。
于是我再次进入 Ubuntu,并使用修复工具,它在 GRUB 上插入新条目。现在我有 11 个条目!
其中一个新条目名为“Windows UEFI 加载程序”。旧条目“Windows 7(加载程序)”仍然无法使用。这个新条目“Windows UEFI 加载程序”让我进入了 Windows。然后我就在这里停下来了。
我想要一个仅具有两个所需选项的单一启动管理器。
我认为这并不完美,但我不知道如何解决它。
此外,如果我在 Windows 7 上将其置于休眠状态,则当我打开计算机时,我会看到黑屏和一条消息,提示无法恢复会话。(我不确定确切的措辞。-我不得不重新启动并再次启动 Windows。)
这是一个主要问题。我也想解决这个问题。
这是运行启动修复后的链接:
这是我今天做的,通过启动修复并请求启动信息摘要:
答案1
引导修复工具会创建太多引导加载程序文件的备份副本,从而导致问题越来越严重。有很多方法可以解决这个问题。下面是其中一种方法:
- 备份您的 EFI 系统分区 (ESP),它
/dev/sda1
安装在/boot/efi
。基于文件的备份(例如,使用tar
或cp
)应该可以。如果情况不妙,这将使您能够恢复。 - 安装我的rEFInd 启动管理器。最简单的方法是安装 Debian 包。
- 重新启动。rEFInd 应该会出现并显示 Ubuntu 和 Windows 的启动选项。
- 依次测试每个 rEFInd 选项,记下每个选项下指定的文件名及其功能。(有些选项可能缺少这样的文件名。带有 Windows 图标的选项可能就是其中之一,但它可能会启动 GRUB。)确保您可以从 rEFInd 启动 Linux 和 Windows。
- 在 Linux 中,打开 shell 并更改为目录
/boot/efi
,即存储引导加载程序的 EFI 系统分区 (ESP)。 - 删除测试时无法正常工作的引导加载程序,或将其复制到备份位置(例如
/boot/efi/backups
)。对重复项执行相同操作 — 例如,如果两个引导加载程序都启动了 GRUB,则可以删除或移动其中一个。 - 将实际启动 Windows 的引导加载程序(如果它由 rEFInd 主菜单中的文件名标识)移动到
/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
。这是它应该属于的地方。Boot Repair 将其复制到另一个文件名,因此您只需将其复制回来。 - 如果您可以通过
vmlinuz-3.5.0-23-generic
条目直接启动 Linux,您可能可以删除 GRUB,或者取消注释该dont_scan_files
行/boot/efi/EFI/refind/refind.conf
并添加grubx64.efi
到其列表中。
如果一切顺利,您现在应该可以通过 rEFInd 进行启动,它应该会向您显示一个更小的启动选项列表。如果仍然有太多,您可以尝试追踪错误的文件并删除它们(如果您认为合适),或者使用dont_scan_files
、dont_scan_dirs
或dont_scan_volumes
中的选项将剩余项目排除在启动列表之外。如果您的系统有这样的符号链接,/boot/efi/EFI/refind/refind.conf
这种“黑名单”可能有助于将 到 的链接排除/vmlinuz
在启动列表之外。/boot/vmlinuz-3.5.0-23-generic
请注意,rEFInd 每次启动时都会扫描引导加载程序,因此当您安装新内核时它会自动选择新内核。
如果您希望继续使用 GRUB,您可以执行与我的程序概念上类似的操作,但您需要仔细阅读文件/boot/grub/grub.cfg
并将其与您的笔记进行交叉引用,了解哪些引导加载程序条目有效,哪些无效,以找出要删除的文件。然后您需要使用update-grub
重写grub.cfg
文件。您当前的grub.cfg
文件还包含用于启动 Windows 的 BIOS 模式条目,这些条目毫无用处,我不知道如何避免update-grub
拾取它们,如果它们确实是这样进入的。
祝你好运!
答案2
这里您会发现与 GRUB/UEFI 相关的问题的链接。也可能是主板制造商实施的 UEFI 不当,导致与 Linux 结合时出现错误。此外,还有一些处理 Win7 和 8 的具体技巧,例如在安装 Linux 之前进行碎片整理和关闭快速启动等。
检查您的 Win7 是否列在/启动/efi/EFI/并查看 GRUB2 中的 chainloader 部分。总而言之,对于经验丰富的 Linux 用户来说并不太复杂,但对于 Linux 新手来说很难。最好寻求帮助,因为您需要阅读大量资料;这不是一键式解决方案。
答案3
您只需编辑 /boot/grub/grub.cfg 来删除无用的条目。
您可以使用该gksudo gedit /boot/grub/grub.cfg
命令来实现这一点。