Embedding a configuration file into GRUB: Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) |
||
Rad 37: | Rad 37: | ||
https://www.linux.se/kontaka-linux-se/ | https://www.linux.se/kontaka-linux-se/ | ||
<BR><BR>Tack till [https://datorhjalp.se Datorhjälp Stockholm] som har sponsrat Linux.se med webserver. | <BR><BR>Tack till [https://datorhjalp.se Datorhjälp Stockholm] som har sponsrat Linux.se med webserver. | ||
[[Kategori:GRUB]] |
Nuvarande version från 23 september 2024 kl. 10.26
Inbäddning av en konfigurationsfil i GRUB
GRUB stöder inbäddning av en konfigurationsfil direkt i kärnbilden, så att den laddas innan GRUB går in i normalt läge. Detta är användbart, till exempel när det inte är enkelt att hitta den verkliga konfigurationsfilen, eller när du behöver felsöka problem med att ladda den filen. `grub-install` använder den här funktionen när den inte använder BIOS-diskfunktioner eller när den installeras på en annan disk än den som innehåller `/boot/grub`, i vilket fall den behöver använda kommandot `search` (se search) för att hitta `/boot/grub`.
För att bädda in en konfigurationsfil, använd `-c`-alternativet med `grub-mkimage`. Filen kopieras in i kärnbilden, så den kan finnas var som helst i filsystemet och kan tas bort efter att `grub-mkimage` har körts.
Efter att den inbäddade konfigurationsfilen (om någon) har körts, kommer GRUB att ladda modulen `normal` (se normal), som sedan kommer att läsa den verkliga konfigurationsfilen från `$prefix/grub.cfg`. Vid den tidpunkten kommer även variabeln `root` att ha satts till rotnamnet för enheten. Till exempel kan `prefix` vara inställt på ‘(hd0,1)/boot/grub’, och `root` kan vara inställt på ‘hd0,1’. Så i de flesta fall behöver den inbäddade konfigurationsfilen bara ställa in variablerna `prefix` och `root`, och sedan gå vidare till GRUB:s normala process. Ett typiskt exempel kan se ut så här:
search.fs_uuid 01234567-89ab-cdef-0123-456789abcdef root set prefix=($root)/boot/grub
(Modulen `search_fs_uuid` måste inkluderas i kärnbilden för att detta exempel ska fungera.)
I mer komplexa fall kan det vara användbart att läsa andra konfigurationsfiler direkt från den inbäddade konfigurationsfilen. Detta tillåter att läsa filer som inte heter `grub.cfg`, eller att läsa filer från en annan katalog än där GRUB:s laddningsbara moduler är installerade. För att göra detta, inkludera modulerna `configfile` och `normal` i kärnbilden, och bädda in en konfigurationsfil som använder kommandot `configfile` för att ladda en annan fil. Följande exempel på detta kräver också att modulerna `echo`, `search_label` och `test` inkluderas i kärnbilden:
search.fs_label grub root if [ -e /boot/grub/example/test1.cfg ]; then set prefix=($root)/boot/grub configfile /boot/grub/example/test1.cfg else if [ -e /boot/grub/example/test2.cfg ]; then set prefix=($root)/boot/grub configfile /boot/grub/example/test2.cfg else echo "Kunde inte hitta en exempelfil för konfiguration!" fi fi
Den inbäddade konfigurationsfilen får inte innehålla menyposter direkt, utan kan bara läsa dem från andra platser med hjälp av `configfile`.
Sidslut
Orginalhemsidan på Engelska :https://www.gnu.org/software/grub/manual/grub/html_node/Embedded-configuration.html#Embedded-configuration
Det här är en maskinöversättning av GNU-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp Stockholm som har sponsrat Linux.se med webserver.