с введением UEFI многие прошивки UEFI поставляются с приличным менеджером загрузки и загрузчиком
Это только наполовину правда. (Менее половины, в зависимости от вашего определения «приличный».) Существует два типа программ, названия которых часто используются взаимозаменяемо, но которые на самом деле совершенно разные:
- Менеджеры загрузки - эти инструменты представляют меню или какой-либо другой тип пользовательского интерфейса, который позволяет пользователям выбирать параметр загрузки, который затем выполняет менеджер загрузки. Это в основном инструменты пользовательского интерфейса. Что-то, что является только менеджером загрузки, не подходит для запуска ОС; для этого нужно что-то еще ....
- Загрузчики - эти инструменты загружают ядро ОС (и часто дополнительные вещи, такие как файл [initrd] RAM-диска Linux)) в память и дают ядру контроль над ОС. Загрузчик не должен иметь никаких элементов пользовательского интерфейса; это просто чисто техническая передача управления ОС.
GRUB и многие другие программы, работающие в режиме BIOS (LILO, SYSLINUX и т.д.), Предоставляют функции менеджера загрузки и загрузчика. Однако в мире EFI эти функции чаще разделяются. Встроенный в прошивку менеджер загрузки - это менеджер загрузки . Он не может запустить ядро ОС самостоятельно. Существуют также дополнительные программы диспетчера загрузки, такие как rEFIt, rEFInd и gummiboot/systemd-boot, которые проще в настройке, более привлекательные или более полнофункциональные, чем типичный встроенный диспетчер загрузки EFI. Инструменты, которые являются чисто загрузчиками, также существуют. В некотором смысле это верно для ELILO и версии EFI SYSLINUX; хотя они могут представлять меню, позволяющие вам выбрать ядро Linux, они не могут загружать цепочку в другую программу EFI, которая необходима для запуска Windows или macOS. EFI-версия GRUB, как и его аналог в BIOS, выполняет функции менеджера загрузки и загрузчика. Смотрите мою страницу по теме для получения дополнительной информации о загрузчиках EFI и менеджерах загрузки для Linux.
В этой истории есть еще один поворот: начиная с версии 3.3.0 ядро Linux включает функцию, называемую загрузчиком заглушек EFI. Эта функция эффективно превращает ядро Linux в собственный загрузчик - ядро может запускаться как любое другое приложение EFI, поэтому менеджер загрузки EFI может напрямую запускать ядро Linux. (Эта функция позволяет rEFInd и gummiboot/systemd-boot работать так же, как GRUB, в процессе загрузки.) Запуск ядра непосредственно из менеджера загрузки EFI имеет несколько недостатков по сравнению с использованием GRUB, rEFInd или другого менеджера загрузки / загрузчика:
- Расположение ядра - ядро должно жить где-то, что EFI может прочитать. На большинстве ПК это означает раздел FAT. (На Mac также будет работать HFS+.) Немногие дистрибутивы настраивают этот способ по умолчанию, а некоторые полагаются на функции файловой системы, такие как символические ссылки в каталоге ядра для той или иной функции, поэтому использование FAT, вероятно, будет плохим выбором. Есть драйверы файловой системы EFI для других файловых систем, но их автоматическая загрузка, вероятно, будет проблемой, которая еще больше усложнит ситуацию. (rEFInd делает это простым, поэтому rEFInd может запускать ядра из нескольких родных файловых систем Linux, даже если он использует те же самые вызовы EFI за кулисами.)
- Отсутствие поддержки ОС. Лишь немногие дистрибутивы предоставляют установочные сценарии или другие инструменты, помогающие управлять ядром, установленным таким образом. Таким образом, вам, вероятно, придется копировать ядра и, возможно, изменять записи менеджера загрузки EFI на основе NVRAM при каждом обновлении ядра.
- Простота конфигурирования - программа
efibootmgr
и способ передачи опций ядрам являются хитрыми; одиночная опечатка может привести к невозможности загрузки системы. В отличие от этого, установки GRUB включают в себя сценарии, которые обычно корректируют эти детали, а rEFInd включает в себя код, который обычно получает такие детали именно тогда, когда он сканирует ваши ядра. Другие загрузчики и менеджеры загрузки обычно полагаются на файлы конфигурации в текстовом режиме, которые, если их нелегко настроить, по крайней мере менее хитры, чем команды efibootmgr
вы должны использовать для непосредственной настройки загрузки ваших ядер.
- Деликатность - записи NVRAM на многих компьютерах деликатны; они могут быть повреждены или удалены случайно. Поскольку эти записи должны включать не только имя файла ядра (в большинстве дистрибутивов требуются такие параметры, как идентификатор корневой файловой системы), воссоздание записи после ее утери может быть более болезненным, чем если бы вы использовали GRUB или какой-то другой загрузочная программа.
- Отсутствие параметров времени загрузки - GRUB, rEFInd, gummiboot/systemd-boot и большинство других подобных инструментов предоставляют параметры времени загрузки, которых нет в обычном менеджере загрузки EFI. Например, могут быть варианты перезагрузить компьютер в утилиту настройки прошивки; и вы обычно можете редактировать параметры, передаваемые ядру, на разовой основе. В некотором смысле, это еще один способ сказать, что встроенные менеджеры загрузки большинства EFI не являются «приличными», хотя, конечно, это субъективный вопрос, и встроенные менеджеры загрузки EFI некоторых компьютеров лучше, чем другие. Если вы хотите что-то голое, вы можете быть довольны встроенным менеджером загрузки; но вы также можете настроить другие загрузчики и менеджеры для предоставления минимального пользовательского интерфейса или для загрузки прямо в ваш выбор по умолчанию с небольшой задержкой или без задержки.
- Поддержка Secure Boot. Большинство дистрибутивов поставляются с программой Shim EFI, которая делает дистрибутив совместимым с Secure Boot. Вы можете добавить эту программу в путь загрузки, включающий другие загрузчики, с небольшими дополнительными усилиями. Уровень усилий, необходимых для загрузки ядра напрямую с помощью Secure Boot, немного выше, если вы используете Shim, и намного больше, если вы хотите загружаться действительно напрямую, без Shim.
Преимущества загрузки таким способом можно суммировать следующим образом:
- Более короткий путь загрузки. Обойдя GRUB или другие загрузочные программы, вы действительно сокращаете путь загрузки. Технически, однако, вы не удаляете загрузчик - загрузчик ядра EFI ядра является загрузчиком. Просто так происходит в ядре. Это преимущество довольно слабое. Это приводит к чуть более короткому времени загрузки, но это все с практической точки зрения.
В целом, можно загрузить компьютер на базе EFI в в Linux непосредственно из менеджера загрузки EFI, минуя GRUB, rEFInd, SYSLINUX или другие загрузчик или менеджер загрузки. Это, IMHO, скорее выражение мастерства над вашим компьютером, чем практический вариант; Недостатки и дополнительные усилия, необходимые для настройки системы таким образом, значительно перевешивают любые преимущества, которые она может предложить.