Embedding a configuration file into GRUB

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

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

GNU GRUB Manual


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.