Большинство дистрибутивов устанавливают дополнительный загрузчик в системе UEFI. UEFI сам по себе является загрузчиком, он предлагает меню для выбора различных операционных систем или отдельных ядер. Кроме того, настройки UEFI можно легко изменить с помощью таких инструментов, как пользовательское пространство efibootmgr
.
Ядра начиная с версии 3.3 поддерживают EFI_STUB, что означает, что ядро может быть загружено непосредственно из UEFI. По какой причине дистрибутивы решают использовать дополнительный загрузчик? В большинстве руководств по Linux / UEFI основное внимание уделяется настройке дополнительного загрузчика (rEFInd, grub2, ELILO и т. Д.) Вместо загрузки Linux с EFI_STUB.
Единственное, чего не хватает в дистрибутивах - это поддержка. Поскольку в большинстве дистрибутивов имеется второй загрузчик, ядро не добавляется в меню загрузки UEFI и не копируется в системный раздел EFI.
Три сценария достаточно, чтобы сделать всю магию. Тот, который копирует initramfs в ESP. Второй копирует ядро в ESP и создает новую запись в меню загрузки UEFI. Третий сценарий удаляет старое ядро и initramfs из ESP и удаляет пункт меню загрузки UEFI. Это позволяет полностью автоматизировать обновления / очистки ядра / initramfs без участия пользователя. Я использую этот подход более года, и он работал безупречно.
Почему большинство дистрибутивов используют grub вместо EFI_STUB?
Ссылки:
РЕДАКТИРОВАТЬ: Я не говорю об удалении поддержки Grub полностью, но предложить выбор для тех, кто хочет использовать его по разным причинам. Дистрибутивы могут предоставить пакет grub-efi
для тех, кто хочет связать UEFI и grub, и пакет, efistub-boot
содержащий скрипты, которые я упомянул выше.