В чем разница между 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 содержит скриншоты для описания двух вышеописанных случаев.
отказ
Этот ответ предназначен для объяснения расхождений в опыте загрузки и для уточнения метода. Однако это не окончательный ответ на мой вопрос. Окончательный ответ будет опубликован отдельно, если мне удалось самостоятельно ответить на вопрос.