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

13

Этот вопрос связан с моим выводом о том, что 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 будет единственной разницей? Помогите мне ответить, если таковые имеются.

clearkimura
источник
Анимация точки прогресса должна присутствовать в любом случае, предполагая, что с графикой все в порядке. И почему вы говорите, что Live CD и Live USB выделены жирным шрифтом, если разница между 64-битным образом UEFI и другими образами? Вы пробовали образ UEFI на компакт-диске и получили Syslinux?
Муру
Это увеличит путаницу, поскольку GRUB используется только 64-битным UEFI-поддерживающим образом, а не остальными. Я бы предложил другой способ: отбросьте формулировку «live CD / USB» и просто придерживайтесь изображений, которые вы использовали, потому что именно в этом и заключаются различия.
Муру
1
Хорошо, заменил ключевые слова соответственно: Live CD -> 32-битный ISO образ; Live USB -> 64-битный образ ISO.
Clearkimura
Syslinux - это загрузчик BIOS. Используется как для 32-, так и для 64-битных версий на разделах, отформатированных в FAT32. Это загрузчик типа Windows только для BIOS. Grub2 используется только с загрузкой UEFI. Вероятно, они могли бы использовать grub2 с BIOS, но теперь он всегда был больше, и исторически они использовали syslinux. Не уверен, почему конкретно. Некоторые незначительные преимущества для разных загрузчиков, чтобы вы знали, в какую сторону загружаются, UEFI или BIOS.
oldfred
@oldfred Файловая система ISO-образа - ISO9660, а не FAT32. Syslinux, очевидно, работает и на машинах, поддерживающих EFI, так почему же до сих пор используются Syslinux и Grub?
Clearkimura

Ответы:

14

Это мой окончательный ответ, основанный на информации, найденной по подходящему ключевому слову на более чем 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 оба используются в Ubuntu live CD по исключительным причинам; Оба были включены в live CD для лучшего опыта загрузки и поддержки оборудования.

clearkimura
источник
Хорошее исследование. Информация о grub до 2009/10 с Ubuntu была устаревшей. Затем Ubuntu перешел на grub2 по умолчанию. Я не думаю, что grub legacy тогда работал с UEFI, хотя многие функции, позволяющие grub legacy работать с более новыми системами, часто выполнялись дистрибутивом.
oldfred
6

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

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

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

Опыт загрузки : я написал «EFI-способен», потому что даже на моей машине была реализована EFI, я отключил функцию «Secure Boot» (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 содержит скриншоты для описания двух вышеописанных случаев.

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

оборота клиаркимура
источник
Спасибо за эту информацию! Мне удалось запустить загрузку с usb только при использовании rufos образа .iso, который создал syslinux при загрузке, но не с помощью команды «dd <iso>» - которую я заметил, что она не создает syslinux. Дело в том, что в Ubuntu из hdd есть grub. Так что я не понимаю, почему Grub работает с HDD, но не с USB.
17
@ransh Возможно, вы захотите понять, «какой метод установить, какой загрузчик», и этот QA не решает эту проблему. Вы должны задать свой как новый вопрос , так как комментарий не для обсуждения.
clearkimura