GRUB 和 SYSLINUX 有什么区别?

GRUB 和 SYSLINUX 有什么区别?

这个问题与我发现 Ubuntu 及其衍生产品同时使用系统LinuxGRUBISO 映像上的引导加载程序桌面发布。

从启动时32 位 ISO 映像,据说系统Linux处理启动过程(启动时显示漂亮的启动画面,带有进度点动画)。

但从启动时64 位 ISO 映像GRUB而是使用黑白屏幕(清晰显示GNU GRUB version...在屏幕顶部)。

因此,重新表述我的问题,差异这使得 Ubuntu 在其 ISO 映像上使用 GRUB 和 SYSLINUX?为什么不直接使用其中之一呢?

为了澄清

由于我缺乏说明和硬件可用性,这个问题有点令人困惑。我添加了这个答案(或向下滚动)以更好地解释 64 位 ISO 映像。

什么答案不是

下面的评论已经给出了一些想法,但我应该在这里说清楚。答案是不是因为两者都正确支持 EFI。这个问题旨在找出更多根本原因,而不仅仅是 EFI 支持。

比如,如果换一种方式问这个问题,即“为什么 ISO 映像中同时使用了 GRUB 和 SYSLINUX?”那么答案可能是“GRUB 是为了支持支持 EFI 的系统而包含的,而 SYSLINUX 一直包含在内,并且只适用于 BIOS 系统”——不是我的意图。

我必须承认 EFI 支持可能是答案的一部分。

然而,我觉得不应该是唯一的事情在答案中。肯定不止有 EFI 支持,这使得 Ubuntu 在其 ISO 映像中包含两个引导加载程序,对吗?或者,EFI 支持真的是唯一的区别吗?如果有的话,请帮我回答这个问题。

答案1

这是我的最终答案,它基于在 2000+ 个页面中匹配关键字找到的信息Ubuntu Wiki 上的此列表。我发现的是 Ubuntu 开发和规范的过时记录(阅读:文字,文字,文字),所以我花了一些时间才找到这个答案。

哎呀,命名错误

首先要明确引导加载程序的命名:

  • 所有字母大写的名称指的是引导加载程序(例如 GRUB、SYSLINUX)

  • 首字母大写的名称指的是项目名称,或者引导加载程序系列的几个或所有变体(例如 Syslinux)

  • 具体来说,“Syslinux”是引导加载程序的集合,包括“SYSLINUX”、“ISOLINUX”、“EXTLINUX”和“PXELINUX”

下列的命名约定,问题实际上是指“El Torito 无模拟”引导加载程序的“ISOLINUX”,不是“SYSLINUX”。也许后者在过去可以与前者互换使用。那就没关系了。

历史简介

2005:ISOLINUX被选为Ubuntu CD引导加载程序,而不是GRUB。

之前曾有人建议将 GRUB 作为可能的替代引导加载程序,但这种方法是在 Warty Live CD 中尝试的,我们发现与使用 ISOLINUX 的安装 CD 相比,其引导能力明显下降。我们认为,坚持使用基于 ISOLINUX 的解决方案是长期支持版本最合适的方法。

- 从CdBootloader - Ubuntu 维基百科

2006:添加了 gfxboot;这支持 2010 年引用的信息。

在 Dapper 中,我们将 gfxboot 添加到了 amd64 和 i386 CD 映像中,提供了一个友好的图形启动菜单,这是用户在这些架构上启动 Ubuntu CD 映像时首先看到的内容 [...]

- 从便携式 Gfxboot - Ubuntu 维基

2009:ISOLINUX(记为SYSLINUX)仍用于启动Ubuntu CD。

Ubuntu Live CD 仍使用 SYSLINUX 启动,不支持以图形模式启动内核。这意味着 Live CD 会显示图形启动菜单,然后切换回文本模式以启动内核,然后通常会稍后切换回图形模式。因此,Live CD 在启动时闪烁的次数目前会比正常安装的系统多。

- 从启动图形架构 - Ubuntu Wiki

2010:已经使用 ISOLINUX,但需要 GRUB 2 才能支持 UEFI。

当前的 Ubuntu CD 使用 ISOLINUX,并利用 SuSE 的 gfxboot 扩展实现图形菜单。

事实证明,这相当难以维护,Ubuntu 中只有一个人了解所涉及的主题代码 [...]

[因为] GRUB 2 最近在上游添加了图形菜单支持,因此转向该功能可能会减少我们的维护工作量。看来我们无论如何都需要使用 GRUB 2 来支持 EFI,而在我们的 CD 上配置两个不同的引导加载程序是不可取的。

- 从FoundationsTeam/规格/MaverickCDBoot - Ubuntu 维基百科

根据 foundations-m-grub2-boot-framebuffer,我们需要研究在 EFI 中支持图形启动菜单的能力。GRUB 对 UGA 和 GOP 图形有一定程度的支持。

这需要使用 GRUB 进行 CD 启动,或者至少具有最低限度的配置来支持它 [...]

- 从FoundationsTeam/规格/MaverickUefi 支持 - Ubuntu Wiki

是否发现差异

通过简要的历史,我们现在了解到:

  • 由于 GRUB 当时存在问题(2005 年),因此 ISOLINUX 受到青睐

  • 尽管缺乏对以图形模式启动内核的支持(导致启动过渡期间出现闪烁),ISOLINUX仍然受到青睐(2009)

  • ISOLINUX 已与 gfxboot 一起使用来提供图形菜单,这在当时 (2010) 的 GRUB 中尚未实现或不可能实现

  • 自 Maverick 以来(2010 年后),添加了 GRUB 以支持 UEFI 启动

然后我意识到这是不是GRUB 和 SYSLINUX 之间的差异使得 Ubuntu live CD 包含两个引导加载程序。

根本原因

据我阅读,这些支持事实实际上暗示:

  1. Ubuntu Live CD 一直使用特定的引导加载程序,该加载程序对提供图形菜单和主题以及显示启动画面的平滑过渡有更好的支持。在这种情况下,SYSLINUX(准确地说是 ISOLINUX)。

  2. 当 UEFI 系统变得越来越普遍时,只有 Ubuntu 在 Ubuntu Live CD 中包含了 GRUB(准确地说是 GRUB 2)以实现 UEFI 支持启动。

最重要的是,我相信这回答了我一年多来的问题,并且这个答案终于让我的好奇心得到了平息。

总结GRUB 和 ISOLINUX 都因特殊原因而用于 Ubuntu Live CD;两者都包含在 Live CD 中以获得更好的启动体验和硬件支持。

答案2

这是我的初步回答,它使我的问题的某些部分得到更好的理解,但仍然没有回答问题本身。

以下是一些澄清:

  • 与 32 位 ISO 映像不同,64 位 ISO 映像实际上包含 GRUB 和 SYSLINUX(这已得到证实,/boot/grub并且/isolinuxISO 映像中都有目录)
  • 当 ISO 映像在支持 EFI 的机器上启动时会显示 GRUB。
  • 当 ISO 映像在仅有 BIOS 的机器上启动时,会显示 SYSLINUX。
  • 无论显示的是 GRUB 还是 SYSLINUX,Plymouth 都会处理进度点动画(@muru 在第一条评论中正确暗示了这一点)

启动体验:我写了“支持 EFI”,因为即使我的机器已经实现了 EFI,我还是关闭了“安全启动”功能(1,2),以便从 Live USB 启动 Ubuntu(在我的情况下是 Xubuntu 14.04)。

  1. Xubuntu 14.04 64 位版本能够在安全启动开启的情况下启动,它已安装到本地磁盘(不是 Live USB)。

  2. 当安全启动开启时,Xubuntu 16.04 64 位版本能够启动。

尝试过的方法:我没有尝试使用物理 DVD 介质并从外部光驱启动,而是使用虚拟化软件(在我的情况下是 VirtualBox 4.3)来证明上述情况。

  • VirtualBox 4.3 已经有一个在 EFI 和 BIOS 系统之间切换的选项,可以在机器 > 设置 > 系统 > 主板 - 扩展功能:启用 EFI(仅限特殊操作系统)默认情况下,该选项未选中(3)。

  • 必须使用 64 位版本的 VirtualBox 创建虚拟机,并在 64 位主机系统上运行。我在接下来的尝试中使用 Xubuntu 14.04 64 位 ISO 映像。

  • 第一次尝试:我使用默认设置运行 ISO 映像(假设是 BIOS 系统)。虚拟机将显示紫色背景,底部有图标。这是系统Linux

  • 第二次尝试:我关闭了机器,进入设置,选中选项 (3) 以启用 EFI。使用相同的 ISO 映像,我再次启动了虚拟机。这一次,它花了一些时间才显示GNU GRUB version...单色文本。这是GRUB

  • 在这两种尝试中,正在进行的启动过程将在启动时显示进度点动画。

  • 此部分页面Ubuntu Wiki 上已经包含了截图来描述上述两种情况。

免责声明:这个答案旨在澄清启动体验和尝试的方法。然而,这是不是我的问题的最终答案。如果我能自己回答这个问题,最终答案将单独发布。

相关内容