В чем разница между GRUB и SYSLINUX?

Этот вопрос связан с моим выводом о том, что Ubuntu и его производные используют загрузчики SYSLINUX и GRUB для образов ISO для выпусков Desktop.

При загрузке с 32-битного ISO-образа говорят, что SYSLINUX управляет процессом загрузки (загрузка, которая показывает красивый экран-заставку с анимацией прогрессивной точки).

Но при загрузке с 64-битного ISO-образа вместо него используется GRUB (черно-белый экран, четко показывающий GNU GRUB version... в верхней части экрана).

Поэтому, перефразируя мой вопрос, какие различия заставили Ubuntu использовать GRUB и SYSLINUX на своих ISO-образах? Почему бы просто не использовать один из них вместо этого?

В целях разъяснения

Этот вопрос несколько сбивал с толку из-за отсутствия разъяснений и доступности оборудования. Я добавил этот ответ (или прокрутите вниз), чтобы лучше объяснить 64-битный образ ISO.

Какой ответ не

Поток комментариев ниже уже дал некоторую идею, но я должен пояснить здесь. Ответ не в том, что любой из них поддерживает EFI должным образом. Этот вопрос был направлен на то, чтобы узнать больше о фундаментальных причинах, а не просто о поддержке EFI.

Скажем, если бы это было задано по-другому, например, "Почему GRUB и SYSLINUX используются в ISO-изображениях?" тогда это может дать ответ типа "GRUB включен для поддержки EFI-совместимых систем, а SYSLINUX всегда включен и работает на системах только с BIOS", - это не мое намерение.

Я должен признать, что поддержка EFI, вероятно, является частью ответа.

Однако я чувствую, что это не должно быть единственным в ответе. Должна быть не только поддержка EFI, благодаря которой Ubuntu включил два загрузчика в свои образы ISO, да? Или действительно ли поддержка EFI будет единственной разницей? Помогите мне ответить, если таковые имеются.

2 ответа

Решение

Это мой окончательный ответ, основанный на информации, найденной по подходящему ключевому слову на более чем 2000 страницах в этом списке в Ubuntu Wiki. Я обнаружил датированные заметки о разработке и спецификациях Ubuntu (читай: слова, слова, слова), поэтому мне понадобилось некоторое время, чтобы найти этот ответ.

Опс, неправильное наименование

Начнем с того, что необходимо указать имена загрузчиков:

  • Имя со всеми заглавными буквами относится к загрузчику (например, GRUB, SYSLINUX)

  • Имя с заглавной буквой относится к имени проекта или нескольким или всем вариантам семейства загрузчиков (например, Syslinux).

  • В частности, "Syslinux" представляет собой набор загрузчиков, который включает в себя "SYSLINUX", "ISOLINUX", "EXTLINUX" и "PXELINUX".

Следуя соглашению об именах, вопрос фактически относится к "ISOLINUX" для загрузчика "El Torito no-emulation", а не к "SYSLINUX". Возможно, последний используется взаимозаменяемо с первым в старые времена. Тогда не беспокойся.

Краткая история

2005: ISOLINUX выбран для загрузчика компакт-дисков Ubuntu вместо GRUB.

GRUB предлагался ранее в качестве возможной замены начального загрузчика, но этот подход был опробован на живом компакт-диске Warty, где мы наблюдали значительные регрессии в загрузке по сравнению с установочным компакт-диском, использующим ISOLINUX. Мы считаем, что использование решений на основе ISOLINUX является наиболее подходящим подходом для долгосрочной поддерживаемой версии.

- из CdBootloader - Ubuntu Wiki

2006: добавлен gfxboot; Это поддерживает информацию, указанную в 2010 году.

В Dapper мы добавили gfxboot в наши образы компакт-дисков amd64 и i386, предоставив удобное графическое меню загрузки, как первое, что пользователи видят при загрузке образов Ubuntu CD на этих архитектурах [...]

- от PortableGfxboot - Ubuntu Wiki

2009: ISOLINUX (отмечен как SYSLINUX) по-прежнему используется для загрузки Ubuntu CD.

Живые компакт-диски Ubuntu по-прежнему загружаются с использованием SYSLINUX, который не включает поддержку запуска ядра в графическом режиме. Это означает, что живые компакт-диски отображают графическое меню загрузки, затем переключаются обратно в текстовый режим, чтобы запустить ядро, а затем обычно переключаются обратно в графический режим. В результате, живые компакт-диски в настоящее время будут мигать больше, чем обычные установленные системы во время загрузки.

- от BootGraphicsArchitecture - Ubuntu Wiki

2010: ISOLINUX был использован, но GRUB 2 необходим для поддержки UEFI.

Текущие компакт-диски с Ubuntu используют ISOLINUX, а расширения gfxboot от SuSE реализуют графические меню.

Оказалось, что это довольно сложно поддерживать, так как в Ubuntu есть только один человек, который понимает, что такое тематический код [...]

[Поскольку] GRUB 2 недавно добавила поддержку графического меню в восходящем направлении, переход к этому может снизить нагрузку на обслуживание. Вполне вероятно, что нам все равно потребуется GRUB 2 для поддержки EFI, и было бы нежелательно настраивать два разных загрузчика на наших компакт-дисках.

- от FoundationsTeam / Спецификации /MaverickCDBoot - Ubuntu Wiki

В соответствии с foundations-m-grub2-boot-framebuffer, нам нужно изучить нашу способность поддерживать графические меню загрузки в EFI. GRUB имеет некоторый уровень поддержки графики UGA и GOP.

Это требует использования GRUB для загрузки с CD или, по крайней мере, наличия минимального количества настроек для его поддержки [...]

- от FoundationsTeam / Спецификации /MaverickUefiSupport - Ubuntu Wiki

Различия найдены или нет

Следуя краткой истории, мы теперь понимаем, что:

  • ISOLINUX был предпочтительным из-за регрессии GRUB тогда (2005)

  • ISOLINUX по-прежнему предпочитали, несмотря на отсутствие поддержки запуска ядра в графическом режиме, что вызывало мерцание при загрузке (2009)

  • ISOLINUX использовался с gfxboot для предоставления графического меню, которое не было реализовано или невозможно в GRUB тогда (2010)

  • GRUB был добавлен позже для загрузки с поддержкой UEFI начиная с Maverick (после 2010 года)

Затем я понял, что нет разницы между GRUB и SYSLINUX, которые сделали Ubuntu live CD включающим два загрузчика.

Фундаментальные причины

Из моего прочтения эти подтверждающие факты намекают на то, что:

  1. Ubuntu live CD использует определенный загрузчик, который лучше поддерживает графическое меню и тему, а также плавный переход к отображению заставки. В данном случае SYSLINUX (именно ISOLINUX).

  2. Когда системы UEFI становились все более распространенными, тогда только Ubuntu включил GRUB (точнее GRUB 2) в Live CD Ubuntu для загрузки с поддержкой UEFI.

Прежде всего, я считаю, что это отвечает на вопрос, который у меня был больше года, и этот ответ, наконец, успокоил мое любопытство.

TL; DR GRUB и ISOLINUX оба используются в live CD Ubuntu по исключительным причинам; Оба были включены в live CD для лучшего опыта загрузки и поддержки оборудования.

Это мой предварительный ответ, который позволяет лучше понять некоторую часть моего вопроса, но все же не отвечает на сам вопрос.

Некоторые пояснения ниже:

  • В отличие от 32-битного ISO-образа, 64-битный ISO-образ включает в себя как GRUB, так и SYSLINUX (это подтверждается /boot/grub а также /isolinux оба каталога находятся в образе ISO)
  • GRUB отображается при загрузке ISO-образа на EFI-совместимом компьютере.
  • SYSLINUX отображается при загрузке ISO-образа на компьютере с BIOS.
  • Плимут обрабатывает анимацию точки прогресса, независимо от того, отображается GRUB или SYSLINUX (это было правильно указано @muru в первом комментарии)

Расхождение опыта загрузки

Я написал "EFI-способен", потому что даже на моей машине была реализована EFI, я отключил функцию безопасной загрузки [*1][*2], чтобы загрузить Ubuntu (Xubuntu 14.04 в моем случае) с Live USB.

[* 1] 64-разрядная версия Xubuntu 14.04 может загружаться при включенной безопасной загрузке после ее установки на локальный диск (не Live USB).

[* 2] 64-разрядная версия Xubuntu 16.04 может загружаться при включенной безопасной загрузке.

Метод уточнения

Вместо того, чтобы пытаться использовать физический DVD-носитель и загружаться с внешнего оптического привода, я использовал программное обеспечение для виртуализации (VirtualBox 4.3 в моем случае) вместо этого, чтобы доказать вышеуказанные случаи.

  • VirtualBox 4.3 уже имеет возможность переключаться между EFI и системой BIOS, ее можно найти в разделе " Машина" > " Настройки" > " Система" > " Материнская плата". На вкладке найдите Расширенные функции: [ ] Включить EFI (только специальные ОС). По умолчанию он не отмечен [*3].

  • Виртуальная машина должна быть создана с использованием 64-разрядной версии VirtualBox, работающей на 64-разрядной хост-системе. 64-битный ISO-образ Xubuntu 14.04 используется в моих следующих попытках.

  • Первая попытка: я запустил образ ISO с настройками по умолчанию (это предполагает систему BIOS). Виртуальная машина покажет фиолетовый фон с иконками внизу. Это SYSLINUX.

  • Вторая попытка: я закрыл машину и зашел в настройки, проверил опцию [* 3], чтобы включить EFI. Используя тот же ISO-образ, я снова запустил виртуальную машину. На этот раз прошло некоторое время, пока он показывает GNU GRUB version... с монохромным текстом. Это GRUB.

  • В обеих попытках продолжающийся процесс загрузки покажет анимацию прогресса при загрузке.

  • Этот раздел страницы в Ubuntu Wiki содержит скриншоты для описания двух вышеописанных случаев.

отказ

Этот ответ предназначен для объяснения расхождений в опыте загрузки и для уточнения метода. Однако это не окончательный ответ на мой вопрос. Окончательный ответ будет опубликован отдельно, если мне удалось самостоятельно ответить на вопрос.

Другие вопросы по тегам