La maggior parte delle distribuzioni installa un caricatore di avvio aggiuntivo su un sistema UEFI. Lo stesso UEFI è un caricatore di avvio, offre un menu per selezionare diversi sistemi operativi o singoli kernel. Inoltre, le impostazioni UEFI possono essere facilmente modificate con strumenti come userspace efibootmgr
.
I kernel dalla 3.3 supportano EFI_STUB, il che significa che il kernel può essere caricato direttamente dall'UEFI. Qual è il motivo per cui le distribuzioni decidono di utilizzare un boot loader aggiuntivo? La maggior parte dei tutorial su Linux / UEFI si concentra principalmente su come impostare il boot loader aggiuntivo (rEFInd, grub2, ELILO, ecc.) Invece di avviare Linux con EFI_STUB.
L'unica cosa che manca nelle distribuzioni è il supporto. Poiché la maggior parte delle distribuzioni concatenano un secondo caricatore di avvio, il kernel non viene aggiunto al menu di avvio UEFI, né viene copiato nella partizione di sistema EFI.
Tre script sono sufficienti per fare tutta la magia. Uno che copia gli initramfs su ESP. Un secondo copia il kernel su ESP e crea una nuova voce nel menu di avvio UEFI. Il terzo script rimuove il vecchio kernel e initramfs dall'ESP ed elimina la voce del menu di avvio UEFI. Ciò consente aggiornamenti / eliminazioni completamente automatici del kernel / initramfs senza l'interazione dell'utente. Sto usando questo approccio da più di un anno e ha funzionato perfettamente.
Perché la maggior parte delle distribuzioni utilizza grub invece di EFI_STUB?
link:
EDIT: Non sto parlando di rimuovere completamente il supporto grub, ma di offrire una scelta a coloro che vogliono usarlo per vari motivi. Le distribuzioni potrebbero fornire un pacchetto grub-efi
per coloro che vogliono concatenare UEFI e grub e un pacchetto efistub-boot
che contiene gli script che ho menzionato sopra.