10

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.

  • The progress dot animation should come in either case, assuming nothing's wrong with the graphics. And why do you say Live CD and Live USB in bold, when the difference is between the 64-bit UEFI image and other images? Did you try the UEFI image in a CD and get Syslinux? – muru Jul 23 '15 at 19:43
  • That would increase confusion, since GRUB is only used by the 64-bit UEFI-supporting image, and not by the others. I would suggest the other way: drop the "live CD/USB" wording and just stick with the images you used, because that's where the differences lie. – muru Jul 23 '15 at 20:31
  • 1
    Okay, replaced the keywords accordingly: Live CD -> 32-bit ISO image; Live USB -> 64-bit ISO image. – clearkimura Jul 23 '15 at 20:41
  • Syslinux is a BIOS boot loader. Used for both 32 & 64 bit versions on FAT32 formatted partitions. It is a Windows type boot loader for BIOS only. Grub2 is only used with the UEFI boot. They probably could use grub2 with BIOS but it always has been larger now, and historically they have used syslinux. Not sure specifically why. Some minor advantages to different boot loaders so you know which way your are booting, UEFI or BIOS. – oldfred Jul 23 '15 at 21:11
  • @oldfred The filesystem of ISO image is ISO9660 and isn't FAT32. Syslinux apparently works on EFI-supported machine also, so why still use both Syslinux and Grub? – clearkimura Jul 24 '15 at 9:17
10

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.

  • Good research. Info on grub before about 2009/10 with Ubuntu was grub legacy. Ubuntu then switched to grub2 as its default. I do not think grub legacy then worked with UEFI, although many features to get grub legacy to work with newer systems were often done by a distribution. – oldfred Oct 21 '16 at 13:36
4

This is my preliminary answer, that makes some part of my question be understood better but still doesn't answer the question itself.

Some clarifications below:

  • Unlike 32-bit ISO image, the 64-bit ISO image actually includes both GRUB and SYSLINUX (this is confirmed by /boot/grub and /isolinux directories are both found in the ISO image)
  • GRUB is shown when the ISO image is booted on EFI-capable machine.
  • SYSLINUX is shown when the ISO image is booted on BIOS-only machine.
  • Plymouth handles the progress dot animation, regardless of GRUB or SYSLINUX is shown (this was correctly hinted by @muru in the first comment)

Boot experience discrepancy

I wrote "EFI-capable" because even my machine has implemented EFI, I had turned off Secure Boot feature [*1][*2] in order to boot Ubuntu (Xubuntu 14.04 in my case) from Live USB.

[*1] Xubuntu 14.04 64-bit release is able to boot while Secure Boot is turned on, after it has been installed to the local disk (not Live USB).

[*2] Xubuntu 16.04 64-bit release is able to boot while Secure Boot is turned on.

Clarification method

Instead of trying with physical DVD media and boot from an external optical drive, I had used virtualization software (VirtualBox 4.3 in my case) instead to prove above cases.

  • VirtualBox 4.3 already has an option to switch between EFI and BIOS system, can be found under Machine > Settings > System > Motherboard. Under the tab, look for Extended features: [ ] Enable EFI (special OSes only). By default, it is unchecked [*3].

  • A virtual machine must be created using 64-bit version of VirtualBox, running on 64-bit host system. An Xubuntu 14.04 64-bit ISO image is used in my following attempts.

  • First attempt: I ran the ISO image with default settings (this assumes a BIOS system). The virtual machine will show purple background with icons at bottom. This is SYSLINUX.

  • Second attempt: I closed the machine and went to the settings, checked the option [*3] to enable EFI. Using the same ISO image, I started the virtual machine again. This time, it took some time until it shows GNU GRUB version... with monochrome text. This is GRUB.

  • In both attempts, proceeding boot process will show progress dot animation while booting.

  • This section of page on Ubuntu Wiki has included screenshots to describe the two cases above.

Disclaimer

This answer is intended to provide explanations for boot experience discrepancy and clarification method. However, this is not the final answer to my question. The final answer will be posted separately, if I managed to self-answer the question.

  • Thanks for this information! I have managed to start boot from usb only when using rufos the .iso image which created syslinux in boot, but not with "dd <iso>" command - which I noticed that it doesn't create syslinux. The thing is that ubuntu from hdd does have grub. So I don't understand, why grub works with hdd, but doesn't with usb. – ransh Feb 23 '17 at 11:38
  • @ransh You may want to understand "which method install which bootloader" and this QA doesn't address that. You should ask yours as new question, since comment is not for discussion. – clearkimura Feb 26 '17 at 8:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.