此处发布的答案应该:
- 避免要求用户下载和安装额外的包或 PPA。
- 尽可能快速和简单。(我试过引导修复但不合格。)
- 可能为没有太多终端经验的用户提供脚本。
像这样的类似问题已多次发布到该站点:
- Ubuntu的最新版本已成功安装在预装了 Windows 8 或更高版本副本的支持 UEFI 的机器上。
- 的输出
efibootmgr -v
显示/efi/ubuntu/shimx64.efi
已注册为ubuntu
. (这些新的引导条目通常以最高优先级添加。另请参阅使用 efibootmgr 更改引导顺序) - 重新启动后,没有显示操作系统选择菜单 (GRUB),机器直接启动到 Windows。
- 的输出
- 访问固件设置菜单(以前称为 BIOS)
时:
- 没有指示如何更改单个操作系统的引导顺序,或者根本没有显示操作系统(如
Windows Boot Manager
),仅显示设备。 - 固件设置中的安全启动功能已关闭。
- 没有指示如何更改单个操作系统的引导顺序,或者根本没有显示操作系统(如
- Ubuntu 是通过在 UEFI 模式下启动实时媒体来安装的,而不是通过在 Windows 中运行WUBI -Installer 来安装的。
- Windows 安装本身没有被修改、替换或删除。
- 该驱动器包含一个 GPT 分区表。
- Windows 磁盘管理显示磁盘上至少存在以下 3 个分区:
- EFI系统分区
- Windows分区
- 一个不可读的 RAW 分区,可能是 Ubuntu 安装
- 您尝试完全删除
\EFI\BOOT\
目录,然后(!)备份它。
这通常表示默认引导加载程序或引导进程在某种程度上被硬编码为引导 Windows 时出现问题。在大多数情况下,这可以很容易地通过替换\EFI\BOOT\BOOTx64.EFI
为另一个也允许启动其他操作系统的文件来修复。
简短的回答
您可以使用grub-mkimage
bootx64.efi
从 Ubuntu 实时媒体中创建一个二进制文件,并编写自定义链接加载您不想启动的加载程序,并将这两个文件复制到 EFI 系统分区 (ESP) 到目录中。grub.cfg
\EFI\BOOT\
如果您不知道如何使用终端,本答案下一节中提供的脚本将为您完成此操作。有关更多详细信息,请查看The longer answer中的技术细节部分。
为您的方便而编写的脚本
关于这个脚本:
grub-efi-amd64
在它运行的地方安装包,因此会破坏旧版 MBR 安装。如果可能的话,可能只从实时媒体运行它。/isodevice
。GUI:计算机➜ Nautilus/文件管理器中的isodevice。更长的答案
问题
UEFI 规范建议固件实施者通过命名为从外部媒体引导的默认引导加载程序
\EFI\BOOT\BOOT{arch}.EFI
引导,例如,依赖平台中的 NVRAM 条目(计算机主板)来引导特定操作系统是不可能的。arch
当前x64
为 AMD64、ia32
i386 和ARM
/或A64
ARM定义的值。Windows 和 Fedora 在 ESP 上安装了这样的引导加载程序,而 Ubuntu 目前没有。一些计算机中的固件——比如经济型笔记本电脑——表现出一种行为,这些设备似乎完全忽略了 NVRAM 引导目录中正确注册的 UEFI 引导加载程序,并且默认从 引导
\EFI\BOOT\BOOT{arch}.EFI
,这通常会导致引导 Windows 而不是 Ubuntu。技术细节
此配置目前不支持安全启动,也没有针对 Apple 计算机进行测试,因为我没有这样的机器。(非常感谢帮助。)
如果直到现在还不清楚:这也将允许在另一台支持 UEFI 的计算机的磁盘上启动操作系统安装,类似于旧版 MBR。
bootx64.efi
使用 GRUB生成镜像创建对应
grub.cfg
文件此配置涵盖启动 Ubuntu、启动 Windows 和启动固件设置的基本情况。最后一个条目允许循环挂载和引导 ISO 映像,乍一看这可能看起来很奇怪,因为 ESP 通常只有几百兆字节大并且不能存储这么大的文件,但是这两个文件都可以在 FAT 格式的 USB 驱动器上工作。具有多个 ISO的多重引导 USB 驱动器仅需进行一些编辑。您也可以轻松替换
ubuntu
为fedora
以创建另一个启动 Fedora 或任何其他 Linux 发行版的菜单项,只需查看 ESP 的内容即可。附录
gummiboot 和 PreLoader 怎么样?
我过去曾发布过类似的内容,据我所知,这没有任何问题。它甚至可以与安全启动一起使用。如果它对您有用,那很好,但是包括手动下载、创建和提取多个文件在内的用户体验并不是最佳的,而且对于普通用户来说相当困难。
示例输出
从实时媒体运行脚本的示例输出:
efibootmgr 的输出将有助于确定顺序是否正确。
所以根据我的理解,这是一个改变引导顺序的问题,这样 grub 的条目就是默认的。我也有那个问题。
由于您无法启动到 ubuntu 来解决这个问题或在 UEFI/BIOS 中执行该操作,您可以启动 Ubuntu 的 LiveCD,然后进入终端或控制台
你打开一个终端并运行
并且您更改引导条目的顺序
然后再次运行 efibootmgr 以检查更改是否有效。它也应该更改 bootnext 值,否则你可以运行