启动过程 - 为什么两个阶段位于不同的应用程序 refind 和 GRUB 上

启动过程 - 为什么两个阶段位于不同的应用程序 refind 和 GRUB 上

我有一台运行 OSx 和 Xubuntu16.04 的 Macbook,但对于启动过程似乎有些我不明白的地方。

我只是想在启动时选择启动哪个操作系统,OSx 还是 Xubuntu - 但实际情况是,选择出现了两次 - 第一次是在使用 refind 的 GUI 中,第二次是在使用 GRUB 的基于文本的选择中。

我该如何选择只使用其中一种?最好是重新查找?

谢谢

答案1

解决方案

您可以通过以下两种方式之一消除 GRUB 菜单:

  • 重新配置 GRUB-- 您可以告诉 GRUB 隐藏其菜单(在这种情况下 GRUB 仍将被使用,但其菜单将消失)。请参阅这个问题及其答案了解有关此方法的更多信息。
  • 使用 EFI 存根加载器-- 您的菜单上可能已经有 EFI 存根加载器;从您的描述来看,这个细节不清楚。如果是这样,您可以简单地选择它以这种方式启动,绕过 GRUB 及其菜单。如果您没有看到这样的选项,您可能可以通过添加 EFI 文件系统驱动程序来获得它们。最简单的方法是大概重新安装 rEFInd。在 OS X 中运行时,安装脚本会查找 Linux 分区,如果找到,则自动安装 ext4fs 驱动程序。在 Linux 中运行时,安装脚本会添加用于保存内核的文件系统的驱动程序(如果该驱动程序可用)。(rEFInd 附带 ext2/3fs、ext4fs、ReiserFS 和 Btrfs 的驱动程序;但不附带 XFS 或 JFS 的驱动程序。)如果您可以让系统使用 EFI 存根加载程序启动,那么很有可能会给您留下两种从 rEFInd 启动 Ubuntu 的方法——EFI 存根加载程序和 GRUB。我建议保留这两种方法,因为如果将来一种方法出现问题,冗余可能会很有用;但是,如果您想隐藏一种方法,可以使用中的dont_scan_dirs或选项来实现;或者,如果您通过 BIOS 模式 GRUB 启动,您可以取消注释该选项并确保dont_scan_filesrefind.confscanforhdbios选项来实现;或者,如果您通过 BIOS 模式 GRUB 启动,您不是选项之一。请参阅这一页rEFInd 文档——阅读“隐藏和显示 EFI 引导加载程序”部分,或dont_scan在页面内搜索。

背景信息:解释(tl;dr)

rEFInd 是一款引导经理,这意味着它会向您显示启动选项菜单,并让您选择一个选项。这与启动装载机,它将操作系统内核加载到内存中并开始运行。每当 rEFInd 启动时,它都会扫描计算机中的 EFI 引导加载程序,根据计算方式,EFI 引导加载程序分为两类或三类:

  • BIOS 模式引导加载程序-- 对于基于 UEFI 的 PC 和 Mac,这些处理方式有所不同,但无论哪种情况,如果您选择其中之一,机器都会使用兼容性支持模块 (CSM) 来启动旧式 BIOS 引导加载程序,例如 GRUB 的 BIOS 版本。您可能看到的情况是 - BIOS 模式的 GRUB 已安装到您的计算机上,因为您以 BIOS 模式安装了 Ubuntu。
  • EFI 模式引导加载程序-- 这些都以相同的方式启动,但 rEFInd 包含的代码可用于此类别中的一般情况和特殊情况:
    • 传统的.efi文件-- 大多数 EFI 引导加载程序都包含在以 结尾的文件中.efi,例如grubx64.efi,这是 GRUB 的 EFI 模式版本。对于大多数这些文件,rEFInd 只会启动它们而不提供任何选项。(此规则有一些例外,但您不必担心它们。)当您从 rEFInd 启动 Ubuntu 时,您可能会看到这种情况。
    • Linux 内核-- 自 3.3.0 版本以来,Linux 内核提供了一项称为EFI 存根加载器,它将 Linux 内核变成自己的 EFI 引导加载程序——它可以像 EFI 程序一样运行。因此,rEFInd 会查找常见的 Linux 内核文件名(vmlinuz-*在 Ubuntu 的情况下),如果粗略检查发现它们看起来像可执行的 EFI 程序,则将它们添加到其菜单中。rEFInd 还可以找到匹配的初始 RAM 磁盘 (initrd) 文件,并可以传递内核启动所需的选项,方法是从 Linux 等文件中提取数据/etc/fstab或使用专用配置文件,refind_linux.conf rEFInd 的安装脚本会生成该文件以与内核一起使用。至关重要的是,rEFInd 只能在它可以读取的文件系统上找到 Linux 内核。大多数 EFI 只能读取 FAT 文件系统,但 Linux 内核通常运行在 ext2/3/4fs、Btrfs 或其他 Linux 原生文件系统上。因此,只有将内核复制到 FAT 文件系统时,您才会在 rEFInd 的菜单中看到 Linux 内核启动选项或者如果你添加EFI 文件系统驱动程序到 rEFInd 安装。

当您将 rEFInd 与 BIOS 模式引导加载程序或传统 EFI 模式引导加载程序(如 GRUB)一起使用时,rEFInd 会将控制权传递给该引导加载程序,后者可能会与用户交互。特别是 GRUB,两个都引导加载程序启动管理器,因此在 rEFInd 启动后,您很可能会看到 GRUB 菜单。大多数其他操作系统的启动加载程序都比 GRUB 简单得多;这些启动加载程序启动操作系统时不会显示选项菜单,除非出现问题。

EFI 存根加载器是一个比 GRUB 简单得多的引导加载器;它不提供自己的引导管理器菜单。因此,当您使用 rEFInd 通过其 EFI 存根加载器启动 Linux 内核时,您将看不到后续菜单。

如果您的 rEFInd 菜单只有一个 Ubuntu 选项,并且它启动了 GRUB,那么您将使用 BIOS 模式 GRUB 或 EFI 模式 GRUB 进行启动。(您可以通过检查描述来判断是哪种情况,描述要么指定传统模式启动,要么标识 EFI 模式引导加载程序的文件名。)

相关内容