Früher gab es für die Aktualisierung von GRUB2 in Fedora zwei unterschiedliche Befehle. Für BIOS-Systeme war es:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg und für EFi-Systeme:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg.
Inzwischen hat jedoch Fedora die durchaus begrüßenswerte und vernünftige Entscheidung getroffen, für beide Systeme nur noch ein Kommando zu verwenden, nämlich das für BIOS-Systeme. Im EFI-Verzeichnis wird neuerdings nur noch auf eine einheitliche grub.cfg gesourced, und diese tatsächliche grub.cfg liegt für beide Systeme in /boot/grub2/grub.cfg.
Daraus ergibt sich jedoch eine tückische Falle. Denn auf vielen Webseiten finden sich noch immer, so wie eingangs beschrieben, zwei verschiedene Befehle je nach System. Aber wenn man in einem neueren Fedora nur einmal den EFI-Befehl eingibt, ist der Update-Mechanismus danach kaputt. Wenn dann z.B. in dnf eine neue Kernel-Version installiert wird, wird der danach ausgeführte implizite Update für GRUB2 zwar die /boot/grub2/grub.cfg bearbeiten, aber nicht die /boot/efi/EFI/fedora/grub.cfg. Diese zweite Datei hat jedoch beim Booten in GRUB Vorrang, und deshalb wird der neue Kernel dann nicht gestartet. Und wie es mit späteren größeren Updates aussieht, z.B. Update auf eine höhere Fedora-Version, ist sowieso ungewiss.
Abhilfe ist wie folgt:
sudo rm /boot/efi/EFI/fedora/grub.cfg sudo dnf reinstall grub2-efi-x64 shim-x64 grub2-tools sudo dnf reinstall grub2-common sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Die EFI grub.cfg sieht danach so aus:
search --no-floppy --fs-uuid --set=dev 9baexxxx-xxxx-xxxx-xxxx-xxxxxxxxcd35 set prefix=($dev)/grub2 export $prefix configfile $prefix/grub.cfg
und verweist bzw. sourced auf die grub.cfg in /boot/grub2. Und danach funktioniert auch wieder der dnf-Mechanismus, z.B. in dnfdragora.
Ergänzung 13.08.2023: Es ist möglich, dass durch den fehlgegangenen efi-update-grub außerdem die Variable GRUB_ENABLE_BLSCFG in /etc/default/grub verstellt wurde. Diese Variable sollte unter Fedora auf „true“ stehen, könnte aber durch den veralteten efi-update-grub auf „false“ gegangen sein (GRUB_ENABLE_BLSCFG=false). Dies könnte wiederum mit anderen Update-Mechanismen von Fedora kollidieren und zu weiteren Problemen führen. Als Abhilfe den Wert auf „true“ setzen (GRUB_ENABLE_BLSCFG=true) und anschließend
„sudo grub2-mkconfig -o /boot/grub2/grub.cfg“. Mehr Info zu diesem Problem hier: https://forums.fedoraforum.org/showthread.php?331019-Fedora-38-not-booting-with-kernel-version-gt-6-4-6