GRUB和SYSLINUX有什么区别?


13

这个问题与我的发现有关,Ubuntu及其衍生版本在用于桌面发行版的ISO映像上同时使用SYSLINUXGRUB引导加载程序。

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

但是,当从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支持?如果有的话,请帮我回答。


假定图形没有问题,则无论哪种情况都应显示进度点动画。当64位UEFI映像与其他映像之间有区别时,为什么还要以粗体显示Live CD和Live USB?您是否尝试过CD中的UEFI映像并获得Syslinux?
muru

这将增加混乱,因为GRUB仅由支持64位UEFI的映像使用,而不由其他映像使用。我建议采用另一种方式:删除“ live CD / USB”文字,并坚持使用您使用的图像,因为这就是区别所在。
muru

1
好的,相应地替换了关键字:Live CD-> 32位ISO映像;实时USB-> 64位ISO映像。
clearkimura

Syslinux是BIOS引导加载程序。用于FAT32格式分区上的32位和64位版本。它是Windows类型的引导加载程序,仅用于BIOS。Grub2仅与UEFI引导一起使用。他们可能会在BIOS中使用grub2,但现在它总是更大,并且从历史上看,他们使用syslinux。不确定具体为什么。不同的引导加载程序有一些次要的优点,因此您可以知道以哪种方式引导UEFI或BIOS。
oldfred 2015年

@oldfred ISO映像的文件系统为ISO9660,不是FAT32。Syslinux显然也可以在EFI支持的计算机上运行,​​那么为什么仍同时使用Syslinux和Grub?
clearkimura

Answers:


14

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

操作,命名错误

首先,应阐明引导加载程序的命名:

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

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

  • 特别是,“ Syslinux”是引导加载程序的集合,其中包括“ SYSLINUX”,“ ISOLINUX”,“ EXTLINUX”和“ PXELINUX”

按照命名约定,问题实际上是针对“ El Torito no-emulation”引导程序而不是 “ SYSLINUX”的“ ISOLINUX ”。也许后者在过去可以与前者互换使用。没关系。

历史简介

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

以前曾建议使用GRUB作为替代的引导加载程序,但是在Warty live CD中尝试了这种方法,在该CD中,我们观察到与使用ISOLINUX的安装CD相比,引导性显着下降。我们认为坚持使用基于ISOLINUX的解决方案是长期支持版本的最合适方法。

-来自CdBootloader-Ubuntu Wiki

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

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

-来自PortableGfxboot-Ubuntu Wiki

2009年:ISOLINUX(表示为SYSLINUX)仍用于引导Ubuntu CD。

Ubuntu live CD仍使用SYSLINUX引导,该系统不支持以图形方式启动内核。这意味着实时CD将显示图形引导菜单,然后切换回文本模式以启动内核,然后通常在以后再切换回图形模式。结果,在启动时,实时CD当前将比正常安装的系统闪烁更多。

-来自BootGraphicsArchitecture-Ubuntu Wiki

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

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

事实证明,这很难维护,在Ubuntu中只有一个了解主题代码的人[...]

[因为] GRUB 2最近在上游添加了图形菜单支持,因此移至该菜单可能会减少我们的维护负担。似乎我们无论如何都需要使用GRUB 2来支持EFI,并且在CD上配置两个不同的引导加载程序是不希望的。

-来自FoundationsTeam / Specs / MaverickCDBoot-Ubuntu Wiki

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

这要求使用GRUB进行CD引导,或者至少具有最低限度的配置来支持它。

-来自FoundationsTeam / Specs / MaverickUefiSupport-Ubuntu Wiki

是否发现差异

根据简短的历史,我们现在了解到:

  • 首选ISOLINUX,因为GRUB可以追溯到2005年

  • 尽管缺少对在图形模式下启动内核的支持(在启动过渡期间导致闪烁),但仍首选ISOLINUX。

  • ISOLINUX已与gfxboot一起使用,以提供图形菜单,而GRUB当时(2010)尚未实现或无法实现

  • 自Maverick(2010年后)开始,GRUB已在以后添加,以通过UEFI支持进行引导。

然后,我意识到让Ubuntu live CD包含两个引导加载程序并不是 GRUB和SYSLINUX之间的区别。

根本原因

从我的阅读中,这些支持事实实际上暗示:

  1. Ubuntu live CD一直在使用特定的启动加载程序,该加载程序对提供图形菜单和主题以及平滑过渡以显示启动飞溅提供了更好的支持。在这种情况下,为SYSLINUX(精确地为ISOLINUX)。

  2. 当UEFI系统变得越来越普遍时,只有Ubuntu才在Ubuntu live CD中包含GRUB(精确来说是GRUB 2)以通过UEFI支持进行引导。

最重要的是,我相信这可以回答我一年多来的问题,并且这个答案终于使我的好奇心得到了缓解。

TL; DR GRUB和ISOLINUX都在Ubuntu live CD中使用是出于排他性的原因。两者都包含在Live CD中,以提供更好的启动体验和硬件支持。


好的研究。关于grub的信息大约在2009/10之前与Ubuntu一起使用是grub的遗留物。然后,Ubuntu切换为默认的grub2。我认为grub legacy不能与UEFI一起使用,尽管使grub legacy与较新系统配合使用的许多功能通常是由发行版完成的。
oldfred

6

这是我的初步答案,可以使我的问题的某些部分更好地理解,但仍然无法回答问题本身。

以下是一些说明:

  • 与32位ISO映像不同,64位ISO映像实际上包括GRUB和SYSLINUX(这已通过确认,/boot/grub并且/isolinux在ISO映像中都找到目录)
  • 在支持EFI的计算机上引导ISO映像时,将显示GRUB。
  • 在仅BIOS的计算机上引导ISO映像时,将显示SYSLINUX。
  • 不管显示的是GRUB还是SYSLINUX,Plymouth都会处理进度点动画(这在第一条注释中由@muru正确提示了)

引导经验:我写了“具有EFI功能”,因为即使我的机器已经实现了EFI,我都关闭了“安全引导”功能(1,2),以便从Live USB引导Ubuntu(在我的情况下为Xubuntu 14.04)。

  1. 安装到本地磁盘(而非Live USB)后,只要打开安全启动,即可启动Xubuntu 14.04 64位发行版。

  2. 启用安全启动后,即可启动Xubuntu 16.04 64位版本。

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

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

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

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

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

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

  • Ubuntu Wiki上的页面的这一部分包含了描述上述两种情况的屏幕截图。

免责声明:此答案旨在阐明启动体验和尝试过的方法。但是,这不是我的问题的最终答案。如果我能够自行回答问题,那么最终答案将单独发布。


感谢您提供此信息!仅在使用rufos在启动时创建syslinux的.iso映像时,我设法从usb启动启动,但是没有使用“ dd <iso>”命令-我注意到它不会创建syslinux。事实是,来自硬盘的ubuntu确实有grub。所以我不明白为什么grub可以与hdd一起工作,却不能与usb一起工作。
ransh

@ransh您可能想了解“哪种方法安装哪种引导程序”,并且此QA不能解决该问题。您应该将其作为新问题提出,因为评论用于讨论。
clearkimura
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.