我是一个发行版爱好者。所以我的电脑上有很多启动操作系统。它们都是基于 Ubuntu 的。我在 Ubuntu 20.04.5 和 Ubuntu 22.10 上安装了 efibootmge。但在这两个操作系统中,efibootmgr 只给我提供了一些可启动分区。我尝试了 v-verbose 设置,但仍然得到相同数量的条目。有时我想更改默认启动操作系统。但 efibootmgr 没有给我一个完整的列表。启动时,我得到了一个要启动的 16 个操作系统的列表。
efibootmgr 只给我 7 个启动项:下面是 efibootmgr 的输出。
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0003,0002,0001,0014,0015,0016,0017,0018,0019
Boot0000* ubuntu
Boot0001* MX19
Boot0002* debian
Boot0003* MX21
Boot0014* UEFI: Hitachi HDS721050CLA362
Boot0015* Diskette Drive
Boot0016* Hitachi HDS721050CLA362
Boot0017* USB Storage Device
Boot0018* CD/DVD/CD-RW Drive
Boot0019* Onboard NIC
0000,0003,0002,0001,0014,0015,0016, 可启动 0017,0018,0019 任务条目
gparted 显示 15 个可能的启动项
12、11、6、2、1、4、9、5、13、14、15、16、17、18、19 和 25
efibootmgr 可以处理的启动项数量有限制吗?我在安装 efibootmgr 时做错了什么吗?任何帮助都将不胜感激。
答案1
该efibootmgr
实用程序显示 EFI 自己的启动菜单选项。这些选项指向各种内容 - 内置工具(如 EFI shell 或设置实用程序);设备(如网卡)的启动功能;磁盘的默认/后备启动加载程序;或 EFI 系统分区 (ESP) 上的单个启动程序。最后一个类别与您的问题相关,但您的efibootmgr
输出显示了大多数或所有类别的条目。
大多数操作系统都会在 ESP 上安装 EFI 引导加载程序,其批准位置是目录的子目录EFI
。对于 Ubuntu,此位置是EFI/ubuntu
。Ubuntu 将 ESP 安装在/boot/efi
,因此在 Ubuntu 中,引导加载程序存储在/boot/efi/EFI/ubuntu
。重要的是,Ubuntu 的每个实例都会将其引导加载程序安装到同一位置并创建相同的 EFI 引导管理器条目,或重新使用现有的条目。Ubuntu 默认使用 GRUB 2 作为引导加载程序。因此,如果您按照指定的方式安装了 Ubuntu 20.04 和 22.10,那么它们最终会破坏彼此的 GRUB 2 二进制文件和配置文件。无论安装或更新的是哪一个,其最近的 GRUB 2 将接管该引导项。
如果您只安装了两个 Ubuntu,这通常不会成为太大的问题,因为它们会检测彼此的配置,并且您的 GRUB 2 菜单将显示两个选项。当其他发行版加入到组合中时,这可能会成为更大的问题。debian
例如,您的输出显示一个条目。如果您设置了两个 Ubuntu,然后安装 Debian,那么 Debian 的 GRUB 2 将成为默认设置。它可能会也可能不会很好地检测 Ubuntu 安装并启动它们。当其中一个 Ubuntu 更新时,它可能会成为默认的启动程序。
也可以使用固件的启动管理器在这些选项之间进行选择,但正如我所说,有些选项最终会被“折叠”在一起形成一个整体条目。理论上,您可以通过在 ESP 上为每个 Ubuntu 提供自己的 GRUB 2(例如EFI/ubuntu2004
和)来解决此EFI/ubuntu2210
问题。不过,我碰巧不知道要实现这一点,您需要修改哪些 GRUB 配置文件。
另一个选择是绕过 GRUB 2。systemd-boot和重新索引旨在帮助处理与 GRUB 2 相比更复杂的多重启动配置,而 GRUB 2 确实不太适合这项任务。 (免责声明:我是 rEFInd 的维护者,因此我并非完全没有偏见。)在这两者中,systemd-boot 在设计上更简单,但设置起来更困难,特别是因为它要求将内核存储在 EFI 系统分区 (ESP) 上。 (至少,上次我检查时是这样的。)另一方面,rEFInd 可以从几个 Linux 文件系统(即 ext2/3/4fs、Btrfs 和 ReiserFS)读取内核,并且它只需要在要启动的操作系统上进行最少的配置更改。使用任一程序,您可以为每个 Ubuntu 或类似 Ubuntu 的操作系统获取单独的条目。假设安全启动已禁用,您可以使用其 USB 闪存驱动器版本尝试 rEFInd 而无需安装它;但是,如果您使用单独的/boot
分区(例如使用 LVM 设置),则需要通过按两次 Tab 或 F2(而不是 Enter)来调整启动选项,以启动操作系统。