Більшість дистрибутивів встановлюють додатковий завантажувач у системі 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?
Посилання:
EDIT: Я не говорю про повне видалення підтримки grub, а про те, щоб запропонувати вибір тим, хто хоче використовувати її з різних причин. Розподіл може забезпечити пакет grub-efi
для тих, хто хоче зв’язати UEFI і grub, і пакет, efistub-boot
який містить сценарії, про які я згадував вище.