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


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


Хорошее исследование. Информация о 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.