Większość dystrybucji instaluje dodatkowy moduł ładujący w systemie UEFI. Sam UEFI jest programem ładującym, oferuje menu do wyboru różnych systemów operacyjnych lub poszczególnych jąder. Ponadto ustawienia UEFI można łatwo zmienić za pomocą narzędzi przestrzeni użytkownika, takich jak efibootmgr
.
Jądra od wersji 3.3 obsługują EFI_STUB, co oznacza, że jądro można załadować bezpośrednio z UEFI. Z jakiego powodu dystrybucje decydują się na użycie dodatkowego modułu ładującego? Większość samouczków na temat Linux / UEFI koncentruje się głównie na tym, jak skonfigurować dodatkowy moduł ładujący (rEFInd, grub2, ELILO itp.) Zamiast uruchamiania Linuksa za pomocą EFI_STUB.
Jedyne, czego brakuje w dystrybucjach, to wsparcie. Ponieważ większość dystrybucji zawiera drugi moduł ładujący, jądro nie jest dodawane do menu rozruchowego UEFI ani kopiowane na partycję systemową EFI.
Trzy skrypty są wystarczające, aby wykonać całą magię. Jeden, który kopiuje initramfs do ESP. Drugi kopiuje jądro do ESP i tworzy nowy wpis w menu rozruchowym UEFI. Trzeci skrypt usuwa stare jądro i initramfs z ESP i usuwa pozycję menu rozruchowego UEFI. Umożliwia to w pełni zautomatyzowane aktualizacje / czyszczenie jądra / initramfs bez interakcji użytkownika. Korzystam z tego podejścia od ponad roku i zadziałało bezbłędnie.
Dlaczego większość dystrybucji używa grub zamiast EFI_STUB?
Spinki do mankietów:
EDYCJA: Nie mówię o całkowitym usunięciu obsługi gruba, ale aby zaoferować wybór dla tych, którzy chcą go używać z różnych powodów. Dystrybucje mogłyby dostarczyć pakiet grub-efi
dla tych, którzy chcą połączyć UEFI i Grub oraz pakiet efistub-boot
zawierający skrypty, o których wspomniałem powyżej.