Ubuntu – the difference between GRUB and SYSLINUX

bootloadergrub2syslinux

This question is related to my finding that Ubuntu and its derivative uses both SYSLINUX and GRUB bootloaders on ISO images for Desktop releases.

When booting from 32-bit ISO image, it is said that SYSLINUX handles the boot process (the boot which shows beautiful splash screen, with progress dot animation).

But when booting from 64-bit ISO image, GRUB is used instead (the black and white screen, clearly showing GNU GRUB version... on top of screen).

Hence, to rephrase my question, what are the differences which made Ubuntu to use GRUB and SYSLINUX on its ISO images? Why not just use either one instead?

For clarification

This question has been somehow confusing due to my lack of clarification and hardware availability. I have added this answer (or scroll down) to explain better on 64-bit ISO image.

What answer is not

The comment thread below already gave some idea, but I ought to make clear here. The answer is not because either one supports EFI properly. This question aimed to find out more toward fundamental reasons, rather than just EFI support.

Say, if this were to be asked in other way i.e. "Why both GRUB and SYSLINUX are used in the ISO images?" then this might give answer like, "GRUB is included to support EFI-capable systems and SYSLINUX has been always included and works on BIOS-only systems" — which is not my intention.

I must admit that the EFI support is likely part of the answer.

However, I feel that it should not be the only thing in the answer. There must be more than just EFI support, which made Ubuntu to include two bootloaders in their ISO images, yes? Or, is it really the EFI support be the only difference? Help me answer this, if any.

Best Answer

This is my final answer, which is based on information found by matching keyword within 2000+ pages in this listing on Ubuntu Wiki. What I found were dated notes of Ubuntu development and specifications (read: words, words, words), so that took me some time to reach this answer.

Ops, wrong naming

To begin with, the naming of boot loaders shall be clarified:

  • Name with all letters capitalized refers to the boot loader (e.g. GRUB, SYSLINUX)

  • Name with initial letter capitalized refers to the project name or, several or all variants of the boot loader family (e.g. Syslinux)

  • In particular, 'Syslinux' is a collection of boot loaders that includes 'SYSLINUX', 'ISOLINUX', 'EXTLINUX' and 'PXELINUX'

Following the naming convention, the question is actually referring to "ISOLINUX" for "El Torito no-emulation" bootloader, not "SYSLINUX". Perhaps the latter is used interchangeably with the former in old days. Nevermind, then.

Brief history

2005: ISOLINUX is choosen for Ubuntu CD boot loader, instead of GRUB.

GRUB has been suggested before as a possible replacement boot loader, but this approach was tried in the Warty live CD where we observed significant regressions in bootability versus the ISOLINUX-using install CD. We feel that sticking with solutions based on ISOLINUX is the most appropriate approach for a long-term-supported release.

-- from CdBootloader - Ubuntu Wiki

2006: gfxboot has been added; This supports information quoted in 2010.

In Dapper, we added gfxboot to our amd64 and i386 CD images, providing a friendly graphical boot menu as the first thing users see when booting Ubuntu CD images on those architectures [...]

-- from PortableGfxboot - Ubuntu Wiki

2009: ISOLINUX (noted as SYSLINUX) is still used for booting Ubuntu CD.

Ubuntu live CDs still boot using SYSLINUX, which does not include support for starting the kernel in graphics mode. This means that live CDs display a graphical boot menu, then switch back to text mode to start the kernel, and will then normally switch back to graphics mode later. As a result, live CDs will currently flicker more than normal installed systems at boot time.

-- from BootGraphicsArchitecture - Ubuntu Wiki

2010: ISOLINUX has been used, but GRUB 2 is needed for UEFI support.

Current Ubuntu CDs use ISOLINUX, with the gfxboot extensions from SuSE implementing graphical menus.

This has proven to be rather difficult to maintain, with only one person in Ubuntu who understands the theming code involved [...]

[Since] GRUB 2 recently had graphical menu support added to it upstream, moving to that has the potential to reduce our maintenance load. It seems likely that we will need to use GRUB 2 anyway in order to support EFI, and having to configure two different boot loaders on our CDs would be undesirable.

-- from FoundationsTeam/Specs/MaverickCDBoot - Ubuntu Wiki

Pursuant to foundations-m-grub2-boot-framebuffer, we will need to look into our ability to support graphical boot menus in EFI. GRUB has some level of support for UGA and GOP graphics.

This requires using GRUB for CD booting, or at least having the bare minimum of configuration to support it [...]

-- from FoundationsTeam/Specs/MaverickUefiSupport - Ubuntu Wiki

Differences found or not

Following brief history, we now understand that:

  • ISOLINUX was preferred due to GRUB had regressions back then (2005)

  • ISOLINUX was still preferred despite lack of support for starting the kernel in graphics mode that cause flickering during boot transition (2009)

  • ISOLINUX has been used with gfxboot to provide graphical menu, which was not implemented or not possible with GRUB back then (2010)

  • GRUB has been added later to boot with UEFI support since Maverick (post-2010)

Then, I realized that it is not the difference between GRUB and SYSLINUX that made Ubuntu live CD include two boot loaders.

Fundamental reasons

From my reading, these supporting facts actually hinted that:

  1. Ubuntu live CD has been using particular boot loader that had better support for providing graphical menu and theme, and smooth transition to show boot splash. In this case, SYSLINUX (precisely ISOLINUX).

  2. When UEFI systems became increasingly common, then only Ubuntu had included GRUB (precisely GRUB 2) in Ubuntu live CD to boot with UEFI support.

Above all, I believe this answers the question that I had for more than a year and this answer has finally put my curiosity to rest.

TL;DR GRUB and ISOLINUX are both used in Ubuntu live CD for exclusive reasons; Both were included in live CD for better boot experience and hardware support.

Related Question