添加缺失的 UEFI NVRAM 条目

添加缺失的 UEFI NVRAM 条目

我最近用 (Asus)UEFI 和两个 SSD 作为启动驱动器,以及一个 HDD 作为存储,构建了一个新系统。我通过 UEFI 在第一个 SSD 上安装了 Windows,它运行良好,我已经使用了几个星期了。但是,当我进入 UEFI 设置时,它没有给我将第二个 SSD 设置为启动设备的选项,即使在高级模式下也是如此。我改为启动到 live CD(没有问题),并从那里将 ubuntu 安装到第二个 SSD(似乎也没有问题)。

问题是,现在我不知道如何启动 Ubuntu,只能启动 Windows。UEFI 仍然只允许我选择从 Windows SSD 或 DVD 驱动器启动,而且当我打开机器时,Grub 和 Windows 引导加载程序都没有出现。我需要将引导加载程序安装的设备设置为我的 Windows 驱动器吗?

有谁设置过类似的系统,知道是什么原因导致的吗?任何帮助都值得感激。

编辑:我用过易BCD将我的“/boot”分区添加到 Windows 引导加载程序,现在它为我提供了启动到 ubuntu 的选项——但是当我尝试时,它只是给我 Grub 救援提示,而没有实际加载内核。

EDIT2:我按照第一部分中的程序进行操作UEFI 社区文档。我运行了两次引导修复,现在我在启动时得到了 Grub 菜单——但是当我选择任何“Ubuntu”选项时,我得到的只是一个闪烁的下划线。没有提示或任何东西,只是一个带有白色下划线的黑屏。我尝试输入几个命令,但没有任何反馈。

答案1

我的笔记本电脑上有多个操作系统,三个硬盘(HDD1 上安装 Windows 8,HDD2 上安装 Ubuntu LTS 和 Fedora,HDD3/SSD 上安装最新版本的 Ubuntu)。它们都有独立的 EFI 系统分区 (ESP)。

添加缺失的 UEFI NVRAM 条目

假设你的 Ubuntu 安装有一个可正常工作的安装grub-efi(也就是说,如果启动修复没有用其他东西覆盖它,或者grub-efi一开始就没有,或者 Ubuntu SSD 上没有 ESP),你可以使用以下命令将 Ubuntu 启动菜单条目添加到 UEFI NVRAM:

sudo efibootmgr --create --disk /dev/sdc --part 1 --label "Ubuntu" --loader \\EFI\\ubuntu\\grubx64.efi

请注意,在本例中sdc是我的第三块硬盘和--part 1ESP。如果您的 Ubuntu SSD 是计算机中的第二个驱动器,并且您必须创建可能缺少的 ESP(例如,如果/Ubuntu SSD 上只有一个根和交换分区),您的参数将是sdb--part 3

将 grub-efi 重新安装到 ESP 和根文件系统

要重新安装,grub-efi您可以在 UEFI 模式下启动实时媒体,在该挂载点内分别在 SSD 和 ESP 上挂载 Ubuntu 根文件系统(例如$mountpoint_of_external_root_filesystem/boot/efi),然后运行以下命令:

sudo grub-install --boot-directory $mountpoint_of_external_root_filesystem/boot/efi /dev/sdc

同样,sdc这是我的第三块硬盘,请将其替换,并相应地替换 ESP 挂载点的路径。efibootmgr然后运行并检查是否有ubuntu条目,如果没有,请efibootmgr从上面运行命令并再次检查。

由于某种原因,Ubuntu 没有提供默认的 UEFI 引导加载程序,如果缺少 NVRAM 条目(例如在固件更新后,以前称为 BIOS 更新),这可能会给您带来麻烦。您可以EFI/ubuntu在 ESP 上复制EFI/BOOT并复制grubx64.efishimx64.efi命名BOOTX64.EFI或安装 gummiboot(请参阅相关内容)以备后备。

相关问题和解答

答案2

您的问题可能与 UEFI 有关。请按照 UEFI 社区文档第 1 段中的步骤进行操作:https://help.ubuntu.com/community/UEFI

答案3

这为我修复了这个问题:

我最初的设置是将 efi 模式的 Ubuntu 置于非 efi 模式的 Windows 7 之前,它可以正常启动到 Ubuntu,但不能启动到 Windows 7。

自从切换顺序后,我就能完美地启动每个系统了。

相关内容