Portál AbcLinuxu, 7. května 2025 22:17
Řešení dotazu:
search.fs_uuid 7084c04a-0922-4d0a-925d-8d0cac9f3dfa root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
Tj. EFI grub načte vše potřebné, aby se dostal k /boot/grub/grub.cfg, např. xfs.mod, a pak načte tento konfigurační soubor, jehož obsah se snadno mění pomocí právě zmiňovaného /etc/default/grub a případně soubory v /etc/grub.d/ či /etc/default/grub.d/*.cfg.
Říkal jsem si, že EFI grub.cfg možná generuje instalační skript některého balíčku, ale v žádném jsem to nenašel. Tak mě napadlo podívat se do zdrojáků balíčku grub2-common.
V grub-install.c jsem opravdu našel, že /boot/efi/EFI/ubuntu/grub.cfg generuje právě tento program a jako podklad pro tento soubor využívá např. /boot/grub/x86_64-efi/load.cfg, dohledám tedy ještě podrobnosti a dám vědět jak to tedy je...
insmod (hd0,gpt1)/EFI/ubuntu/xfs.mod
Pokud si tedy tento soubor ručně zeditujete, tak vám ho dříve či později grub-install přepíše. Zdá se tedy, že i když není problém natáhnout xfs.mod a načíst tak z EFI Grubu /boot/grub/grub.cfg, tak to není podporované řešení.
grub efi doesn't install fs module needed to access root
/etc/default/grub
a /etc/grub.d
. tam se vkládá co potřebuješ do výsledných souborů.
/boot/grub/grub.cfg
o téhle věci ani neví a neřeší to. Pokud budeš bootovat z MBR, tak ti tenhle kousek bude chybět a místo toho budeš mít právě to stařičké MBR.
grub.cfg
. Binárce stačí pouze relativní cesta, ze které si má natáhnout konfiguraci. Jestli pak jejím prostřednictvím natáhne další konfigurák odjinud, je šumák. Rozhodně to ale snižuje pravděpodobnost, že by se tím při nějaké aktualizaci rozbilo zavádění.
Teda, pokud někdo nerýpe do diskových oddílů.
Jak píši níže, problém právě je, že i běžná aktualizace znovu generuje /boot/efi/EFI/ubuntu/grub.cfg, tj. volá grub-install, a ten funguje tak, že celý /boot/efi/EFI/ubuntu/grub.cfg generuje znovu,To se mi moc nezdá, tohle by měla dělat maximálně aktualizace grubu. A tak to dává smysl, protože se mění binární soubor zavaděče, který je na té UEFI particii. Jinak grub-install není vůbec chytrý. Volá si jiné nástroje, které se starají o detekci a ty rovněž nejsou bůhví jak chytré, takže se občas stává, že je nutný manuální zásah, pokud máš nějakou netypickou instalaci. Pokud jde o moduly, jo kdysi jsem to taky řešíval, aby core.img načetl všechny potřebné moduly. Ovšem od té doby co používám Btrfs v raid1 už to nepotřebuji.
insmod (hd0,gpt1)/EFI/ubuntu/xfs.mod
Tudíž se EFI Grub nedostal k /boot/grub/grub.cfg, protože bez modulu xfs.mod neumí číst z oddílu XFS.
Takže se mi zatím jako nejjednodušší obezlička zdá:
# dpkg-divert --divert /usr/sbin/grub-install.orig --rename /usr/sbin/grub-install
A z /usr/sbin/grub-install udělat wrapper, který zavolá /usr/sbin/grub-install.orig a na konci přidá do /boot/efi/EFI/ubuntu/grub.cfg načtení modulu xfs.mod.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.