我有一台预装了 Windows 8 的 HP Pavilion g6 2320tx 笔记本电脑。
从使用 pendrive linux 创建的 USB 安装 Ubuntu 13.04 64 位时,我没有看到如下所示的分区选项:http://www.ubuntu.com/download/desktop/install-desktop-latest。
我的硬盘上有 42 GB 的未分配空间。安装使用了该空间。我无法启动 Ubuntu。我使用启动修复纠正了这个问题,但我得到的选项比正常的 grub 屏幕多得多。启动修复链接是:http://paste.ubuntu.com/5725287/。
是否因为我有未分配的空间,所以在安装过程中没有使用该分区,导致安装出错?
答案1
简短的回答是:不,未分配空间的存在或不存在与您遇到的后续启动问题无关。
要安装 Linux,磁盘必须包含未分配的空间,Linux 安装程序可以在其中创建分区或者已经存在的分区,安装程序可以接管这些分区以供 Linux 使用。如果磁盘不包含上述任何一项,安装程序将缩小现有分区以腾出空间给 Linux。这些选项中哪一个最受支持以及如何执行这些选项的详细信息取决于发行版和您在安装过程中选择的选项。虽然您(或安装程序)在安装过程中所做的选择可能会影响引导过程,但安装后完全无法引导则表明存在错误。
在基于 EFI 的计算机上,计算机的 NVRAM 保存着引导加载程序列表及其使用顺序。因此,您可以将 GRUB 设置为在 Microsoft 的引导加载程序之前启动,例如。就您而言,许多基于 EFI 的 HP 计算机都存在一个错误,导致它们忽略 EFI 引导变量。相反,计算机会盲目地启动 Windows 引导加载程序 ( EFI/Microsoft/Boot/bootmgfw.efi
)。这几乎肯定是您遇到的问题。
Ubuntu 的 Boot Repair 工具会调整引导加载程序,将 Microsoft 的引导加载程序移至另一个名称,并将 GRUB 的副本放置在 Microsoft 引导加载程序所在的位置。它还做了其他几个类似的更改。正如您所观察到的,最终结果是 GRUB 菜单上的引导条目数量激增。如果您使用的是没有错误的 EFI,我建议您通过重新运行它并使用其高级菜单上的“恢复 EFI 备份”选项来撤消 Boot Repair 更改,如所述这里。但是,如果你这样做,你的电脑会直接启动到 Windows。你可能仍然想这样做,然后自己做个不那么笨拙的修复,方法如下:
- 您可以启动 Windows 并使用 Windows 自己的
bcdedit
命令将 GRUB 设置为默认启动加载程序。打开管理员命令提示符窗口并输入bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
。(这假设您已禁用安全启动。如果已启用,请在此命令中替换shimx64.efi
。grubx64.efi
)此选项可能不起作用,但如果有效,它将导致 GRUB 默认启动并显示更少的启动选项。 - 您可以启动 Linux 应急磁盘,将 ESP 安装在方便的地方,复制
EFI/Microsoft/Boot/bootmgfw.efi
到其他名称(我建议将其向下移动一级),然后复制EFI/ubuntu/grubx64.efi
到。 (如果您在安全启动处于活动状态的情况下EFI/Microsoft/Boot/bootmgfw.efi
启动,请复制并将 的副本放在该名称下的目录中。)您还需要运行以让 GRUB 重新生成其启动列表并创建启动 Windows 的选项。shimx64.efi
bootmgfw.efi
grubx64.efi
EFI/Microsoft/Boot
update-grub
- 在常规 Ubuntu 设置中撤消启动修复操作之后,但在重新启动之前,安装 Debian 软件包重新索引。安装完成后,输入
sudo mvrefind.sh /boot/efi/EFI/refind /boot/efi/EFI/Microsoft/Boot
。这会将 rEFInd 设置为默认引导加载程序,取代 Microsoft 的引导加载程序,使用的方法与 Boot Repair 类似;但它应该会减少冗余引导条目。不过,可能至少有两种方法可以启动 Linux:一种是通过 GRUB,另一种是直接启动。如果两种方法都有效,您可以卸载 GRUB(也许可以手动删除其/boot/efi/EFI/ubuntu/grubx64.efi
文件)以删除 GRUB 条目。请注意,如果您在安全启动处于活动状态的情况下启动,则此选项需要额外的步骤。
请注意,您只需一这些方法,尽管如果你尝试了一种方法但不起作用,你可以尝试另一种。我建议在开始之前备份整个 ESP,这样如果你犯了错误,你可以恢复 ESP 的原始状态。简单的文件级复制或创建 tarball 就足以进行备份。