В чем разница между 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 является наиболее подходящим подходом для долгосрочной поддерживаемой версии.
2006: добавлен gfxboot; Это поддерживает информацию, указанную в 2010 году.
В Dapper мы добавили gfxboot в наши образы компакт-дисков amd64 и i386, предоставив удобное графическое меню загрузки, как первое, что пользователи видят при загрузке образов Ubuntu CD на этих архитектурах [...]
2009: ISOLINUX (отмечен как SYSLINUX) по-прежнему используется для загрузки Ubuntu CD.
Живые компакт-диски Ubuntu по-прежнему загружаются с использованием SYSLINUX, который не включает поддержку запуска ядра в графическом режиме. Это означает, что живые компакт-диски отображают графическое меню загрузки, затем переключаются обратно в текстовый режим, чтобы запустить ядро, а затем обычно переключаются обратно в графический режим. В результате, живые компакт-диски в настоящее время будут мигать больше, чем обычные установленные системы во время загрузки.
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 включающим два загрузчика.
Фундаментальные причины
Из моего прочтения эти подтверждающие факты намекают на то, что:
Ubuntu live CD использует определенный загрузчик, который лучше поддерживает графическое меню и тему, а также плавный переход к отображению заставки. В данном случае SYSLINUX (именно ISOLINUX).
Когда системы 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 содержит скриншоты для описания двух вышеописанных случаев.
отказ
Этот ответ предназначен для объяснения расхождений в опыте загрузки и для уточнения метода. Однако это не окончательный ответ на мой вопрос. Окончательный ответ будет опубликован отдельно, если мне удалось самостоятельно ответить на вопрос.