uefi 启动不显示 ubuntu / GRUB

4 linux boot grub uefi windows-10

我有一个 acer aspire e 14。

它有一个带有 7 个分区的单个 HDD:

  • /dev/sda1 上的 EFI 系统
  • 在 /dev/sda2 上描述为“Microsoft 保留”的内容
  • /dev/sda3 上的 Windows 10 FS
  • /dev/sda5 上的 Linux FS
  • 在 /dev/sda6 上交换
  • /dev/sda4 上的 Microsoft Windows 恢复管理器
  • /dev/sda 上的可用空间

现在问题是,我确定 Windows 10 和 linux (lubuntu) 都安装在 UEFI 模式下,但是引导顺序中没有条目让我选择 ubuntu 或 grub 作为首选引导选项。

如果我在启动时什么都不做,它会自动启动到 Windows 10 而不问任何问题。

如果我想启动到 ubuntu,我必须执行以下技巧:

  1. 插入可启动 U 盘(带 grub)
  2. 计算机启动后,USB 棒的 grub 允许我在尝试 USB 中的操作系统的实时版本或安装它之间进行选择,我只需按 Escape。
  3. 这会打开一个控制台,我只需在其中输入“退出”即可。
  4. 下面的屏幕似乎是 UEFI 启动选项,它让我可以在启动 USB、“未知设备”或 Windows 10 启动管理器之间进行选择。如果我选择 USB,它只会返回到第 2 步的屏幕。如果我选​​择最后一个它会启动 Windows 10,如果我选择“未知设备”,它最终会显示安装在计算机中的 grub 屏幕,这让我选择启动 lubuntu 或 windows。

我真的不知道如何解决这个问题,所以欢迎任何建议或建议。

(编辑)我尝试过的事情包括:

  • “efibootmgr -v”显示同一个文件(\EFI\ubuntu\shimx64.efi)的两个条目,一个名为ubuntu,另一个“未知设备”也用RC完成了描述。我试图在 Windows 启动管理器之前更改 --bootorder 以匹配它们两个,但没有效果,在重新启动时我启动到 Windows,当回到 linux 时,启动顺序不是我之前放置的那个。
  • 我尝试按照 SmallLoanOf1M 的建议重新构建 grub,结果相同,但我注意到一件奇怪的事情,我的 linux 有一个 /boot/efi 文件夹。但是当我挂载 EFI 系统 (/dev/sda1) 来重建 grub 时,我得到的是有一个“EFI”文件夹(注意大写),这可能是问题吗?如果是这样,我应该如何在不搞砸任何事情的情况下解决这个问题?

Spo*_*ler 6

您正在寻找“efibootmgr”。这个程序可以在已经启动到 EFI 模式的 GNU/Linux 系统上使用(所以使用实时磁盘或其他东西来获取它)。

它有几个开关,而且通常非常简单。您希望创建 EFI 引导条目,并查看现有条目。

您可以使用“efibootmgr -v”查看现有的引导条目。这将显示缺少 EFI 条目,或者可能是格式错误的 EFI 条目。

如果您已经有一个条目,或者根本没有任何条目,那么重建 GRUB应该调用 efibootmgr 为您创建一个条目。这是最简单的操作过程。您应该在已安装系统的 chroot 中执行此操作(我们使用实时系统的另一个原因)。如果您不知道如何设置 chroot 环境,请参考本指南:https : //help.ubuntu.com/community/BasicChroot

完成后,重新安装 GRUB 包:

sudo apt-get install --reinstall grub-efi

完成后,再次将 GRUB 粘贴到磁盘上:

sudo grub-install /dev/sda

重新创建您的 GRUB 配置(这也应该调用 efibootmgr):

sudo update-grub

检查 /boot/EFI 中是否有用于 Linux 安装的 EFI 引导映像。您应该同时拥有适用于 Windows 和 Linux 的目录,每个目录中都有 .efi 文件。

最后,使用以下命令检查 EFI NVRAM 中是否有正确的引导项 efibootmgr -v

如果您仍然没有,可以验证您在 /boot/EFI 上挂载的 FAT 文件系统中是否.efi 文件,然后自己创建条目。这是我在这里描述的事情变得有点奇怪的地方,但 efibootmgr 手册页非常有帮助:http ://linux.die.net/man/8/efibootmgr

编辑:有关手动创建 EFI 条目的更多信息:

由于自动 GRUB 步骤似乎对您的情况没有帮助,让我们创建一个全新的 EFI 条目,该条目将指向您的 GRUB 二进制文件。为此,我们将使用 efibootmgr。

由于您提供的信息,我们可以制作一个可以复制/粘贴功能的命令。凉爽的。在开始之前,请按照上面的建议从 EFI 启动的实时系统上进入本地系统上的 chroot 环境。此外,将您的 EFI 文件系统挂载到 chroot 中的 /boot/efi。

这可以通过一个命令(根据您的情况量身定制)来完成:

efibootmgr -c -l \\EFI\\ubuntu\\shimx64.efi -L UbuntuBoot

这是一个指向 GRUB 二进制文件(而不是默认的 elilo.efi - 你没有)的安全启动(这就是 shimx64 是什么)EFI 条目,具有 UbuntuBoot 的外观名称(以区别于其他),并将分别使用 /dev/sda 和 /dev/sda1 作为磁盘和分区。这是 efibootmgr -c 的默认设置,因此如果您在不同的磁盘或分区上拥有 EFI 文件系统,则必须通过选项明确指定。反斜杠必须用反斜杠转义为“文字”。

创建该条目后,您应该可以通过 efibootmgr -v 看到它。如果它在那里,请尝试启动它。如果您可以启动它,您可能应该删除旧的。

安装 Windows 时这种问题很常见,但前提是您选择将 EFI 二进制文件安装到驱动器的“可移动磁盘 EFI 区域”。只有一个 EFI 条目可以进入那里,无论使用什么来完成 EFI 引导,Windows 都会使用该区域。我们通常只在不会以任何其他方式启动的有缺陷的 EFI 系统上使用该区域,但它可以保证在任何情况下都能正常工作。

但是,在同一区域安装另一个启用 EFI 的操作系统会使您之前安装的 EFI 二进制文件消失。在安装大多数 Linux 发行版时,它通常会询问您是否要强制将 GRUB 安装到 EFI 的“可移动媒体路径”。选择否,这种情况不应再次发生。几乎没有必要在任何现代 EFI 上使用可移动媒体路径。