Grub2 Fedora31

Ahoj, dnes jsem si na Zotac NANO nainstaloval posledni Fedoru. Pred tim jsem tam mel LibreELEC, ktery jsem si chtel ponechat. Alokoval jsem disky a instalace dobehla. Akorat v tuto chvili mi grub po nabootovani nenabizi zadnou nabidku na vyber OS, a rovnou nastartuje do Fedory kdyz jsem se koukal kde a co nastavit, tak ve standardnim umisteni jsem grub.cfg nenasel. Je zde: /boot/efi/EFI/BOOT/grub.cfg kde je tento text:

set timeout=“0”
set default=“LibreELEC”

menuentry “LibreELEC” {

  •          search --set -f /KERNEL*
    
  •          linux /KERNEL boot...*
    

}

v /boot/grub2/ je jen odkaz z grubenv na …/efi/EFI/fedora/grubenv

bohuzel jsem ted nemel fedoru nainstalovanou uz nejaky ten patek. takze jsem marny v tom co se zmenilo od posledka :slight_smile: mohl bych poprosit o pomoc jak nastavit grub tak abych se mohl dostat i na LibreELEC?

Dekuji moc :slight_smile:

Ahoj,

na strojích, které bootují v režimu (U)EFI, se bootloader instaluje jako soubor s koncovkou .efi na oddíl ESP (EFI System Partition). Jeho souborový systém je vždy FAT, na disku pak může být tento oddíl vždy jen jeden. V případě více OS tak tyto OS oddíl ESP sdílí. Každý OS má zpravidla v NVRAM stroje uloženou bootovací položku která odkazuje na konkrétní soubor s koncovkou .efi. Většina (U)EFI firmwarů pak umožňuje změnu jejich pořadí, případně výběr konkrétní položky.

Na Fedoře bývá oddíl ESP připojený ve složce /boot/efi. Všechny potřebné soubory jsou pak ve složce /boot/efi/EFI/fedora. Od Fedory 29 je ve výchozím stavu nabídka GRUBu skrytá. V případě více OS nebo nějakého problému s bootováním by se ale měla automaticky zobrazit. Existují taky způsoby, jak nabídku vyvolat ručně, případně je zde i možnost, jak tuto novou funkcionalitu kompletně vypnout [0].

Složka /boot/efi/EFI/BOOT, kterou používá LibreELEC, není při více OS zrovna dobré řešení. Používá se totiž pro fallback mechanismus v případě, že v NVRAM stroje nejsou uložené žádné bootovací položky nebo v případě, že všechny selhaly. Na x86_64 slouží jako fallback soubor /boot/efi/EFI/BOOT/BOOTX64.EFI. Tento soubor má většina OS svůj vlastní, v případě více OS se tak může běžně stát, že si ho budou při každé aktualizaci vzájemně přepisovat. Problém je v tom, že LibreELEC podle všeho bootovací položku vůbec neřeší a spoléhá se jen na tento soubor. Řešením by mělo být zkopírování obsahu složky /boot/efi/EFI/BOOT například do složky /boot/efi/EFI/LibreELEC. Protože je soubor /boot/efi/EFI/BOOT/BOOTX64.EFI už nejspíš přepsaný tím z Fedory, měl by se soubor /boot/efi/EFI/LibreELEC/BOOTX64.EFI nahradit původním z LibreELEC. Teoreticky by pak mohlo stačit příkazem:

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

vygenerovat nový grub.cfg. Nejsem si ale jistý, že os-prober, který se v rámci toho volá, LibreELEC rozpozná. Další variantou je vytvořit soubor /boot/efi/EFI/fedora/custom.cfg:

menuentry "LibreELEC" {
  chainloader ($boot)/EFI/LibreELEC/BOOTX64.EFI
}

a znova vygenerovat nový grub.cfg. Tohle už by fungovat opravdu mělo.

Omlouvám se za trošku delší text, osobně si ale myslím, že je užitečné, když má člověk možnost pochopit v čem je problém a proč se řeší zrovna takhle :slight_smile:

Snad se mi podařilo do téhle problematiky vnést aspoň trošku světla. Pokud ne, případně pokud se objevily nějaké jiné problémy, dej vědět :wink:

Honza

[0] https://fedoraproject.org/wiki/Changes/HiddenGrubMenu

1 Like