Jag kör GRUB 2.00 på ett Gentoo Linux-system.

Jag kompilerar mina egna kärnor manuellt och sedan installerar jag dem i /boot med make install. Jag har följande kärnor i /boot just nu:

# ls -1 /boot/vmlinuz* /boot/vmlinuz-3.7.4-gentoo-5 /boot/vmlinuz-3.7.4-gentoo-first /boot/vmlinuz-3.7.4-gentoo-fourth /boot/vmlinuz-3.7.4-gentoo-third 

Körning grub2-mkconfig resulterar i följande utdata:

# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.7.4-gentoo-third Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth Found linux image: /boot/vmlinuz-3.7.4-gentoo-first Found linux image: /boot/vmlinuz-3.7.4-gentoo-5 done 

Om jag nu läser den resulterande /boot/grub2/grub.cfg -filen märker jag att följande poster har skapats:

  • En huvudinställning som startar vmlinuz-3.7.4-gentoo-third
  • En undermeny med alla andra poster (inklusive återställningsposter), i samma ordning som grub2-mkconfig command

Problemet är att jag vid starttid vill ladda som standard den femte versionen av min kärna (vmlinuz-3.7.4-gentoo-5), inte den tredje (vmlinuz-3.7.4-gentoo-third). Jag föredrar också att inte komma åt undermenyn för att välja rätt kärna att ladda.

Hur kan jag ändra detta beteende? Hur kan jag säga till GRUB att jag vill köra den femte versionen av min kärna som standard och inte den äldre tredje versionen? I allmänhet, hur kan jag ändra standardinmatningsraden så att den matchar kärnan jag vill ha och inte en till synes slumpmässig plockad av GRUB?

Jag försökte också lägga följande rader i /etc/default/grub:

GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true 

Detta löser inte problemet som jag önskar. Men GRUB verkar åtminstone komma ihåg den senaste kärnan jag startade från och väljer det automatiskt från undermenyn. Det är bara att jag inte vill komma åt undermenyn.

Kommentarer

  • Jag märkte att du angav -o /boot/grub2/grub.cfg som utdatafil. Finns katalogen /boot/grub/ fortfarande?

Svar

För att välja en menypost under undermenyn ”Avancerade alternativ” ställer du in GRUB_DEFAULT = ”1> 3”. Du kan nu köra grub2-mkconfig för att generera grub-konfigurationsfilen Vid nästa omstart ska vmlinuz-3.7.4-gentoo-5 starta.

Obs : Detta ändrar inte standardposten i grubmenyn, dvs. standardposten anger fortfarande samma post som du har just nu. Men bilden som startas som standard blir den fjärde bilden under ”Avancerade alternativ”. För att göra vmlinuz-3.7.4-gentoo-5 som standardpost i grub-menyn, bör ordningen av bilder vara sådan att vmlinuz-3.7.4-gentoo-5 ska vara den första bilden när du kör grub2-mkconfig .

Kommentarer

  • Observera att citattecken är viktiga. Dvs GRUB_DEFAULT = 1 > 3 vann ’ t fungerar.

Svar

Om du har en undermeny i din grub.cfg bör du använda två siffror så här:

grub-reboot "1>3" 

första är menyindex och andra är undermenyindex .

Till exempel, för att starta den senaste posten från config så här:

grep menu /boot/grub/grub.cfg menuentry "Debian GNU/Linux" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-simple-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { submenu "Advanced options for Debian GNU/Linux" $menuentry_id_option "gnulinux-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (sysvinit)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (recovery mode)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64 (sysvinit)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { 

ska du använda:

grub-reboot "1>5" 

och starta om.

Kommentarer

  • Konstigt. undermenyindex börjar med 0, medan huvudmenyn från 1

Svar

du kan lika gärna använda GRUB_DEFAULT=saved. I det här fallet skulle du använda

$ grub2-set-default -h Usage: grub2-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. -h, --help print this message and exit -v, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub2 instead of the /boot/grub2 directory MENU_ENTRY is a number, a menu item title or a menu item identifier. 

eller om det bara är för nästa start:

$ grub2-reboot -h Usage: grub2-reboot [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB, for the next boot only. -h, --help print this message and exit -v, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub2 instead of the /boot/grub2 directory MENU_ENTRY is a number, a menu item title or a menu item identifier. 

Svar

Med centos7 (eller RHEL7) och grub2:

grub använder posten ”sparad_entry” från grubenv som standard för att starta, klipp från /boot/grub2/grub.cfg:

if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="${saved_entry}" fi 

för att kontrollera vad som är ”sparad_uppgift” är nu min byggnad:

grub2-editenv list 

saved_entry=CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)

för att ändra det till exempel till min felsökningsbyggnad:

grub2-editenv - set saved_entry="CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)" 

Svar

Försök

mkdir -p /boot/grub/backup mv -v /boot/grub/vmlinuz-3.7.4-gentoo-{first,third,fourth} /boot/grub/backup 

Detta flyttar alla dina oanvända kärnor till en reservkatalog, nu:

grub2-mkconfig -o /boot/grub/grub.cfg 

Detta lägger bara till valet r5 i din meny. När du har gjort det läser du den här den här länken och läser sedan igen alla kärnorna i säkerhetskopian något annat än vmlinuz om du insisterar på att behålla dem

Svar

Vad jag gjorde för att uppnå det önskade resultatet hade varit:

  • ställ in GRUB_DEFAULT=saved som beskrivs i grub-set-default hjälp

    grub-set-default Menu entry not specified. Usage: grub-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. This requires setting GRUB_DEFAULT=saved in /etc/default/grub. -h, --help print this message and exit -V, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub instead of the /boot/grub directory MENU_ENTRY is a number, a menu item title or a menu item identifier.

  • Ställ in standardvärdet

    grub-set-default "1>2"

    Det skapar en ny fil i / boot / grub kallad grubenv med den information som krävs.

  • Efter det återskapar jag konfigurationsfilen

    grub-mkconfig > /boot/grub/grub.cfg

Och jag har sett att konfigurationen ändrades för att använda det sparade tillståndet:

if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="${saved_entry}" fi

Svar

Du kan ställa in standardvalet med numeriskt värde. Om du ställer in

`GRUB_DEFAULT=3` 

i /etc/default/grub
Du ställer in standardvärdet för gentoo-5-posten.
GRUB_DEFAULT är nollförskjutning, så 3 väljer den fjärde posten som du vill.

Kommentarer

  • Jag vet inte ’ vet inte varför, men det verkar att det inte fungerar ’. Jag ställde in GRUB_DEFAULT=3 som du sa, kör sedan igen grub2-mkconfig. Men vid starttiden är standardposten fortfarande vmlinuz-3.7.4-gentoo-third.
  • Försök kommentera GRUB_SAVEDEFAULT=true Det borde inte ’ betyder inte, men det ’ behövs inte med nume rical.
  • Jag har inte ’ t det alternativet i min /etc/default/grub -fil.

Svar

Jag misstänker att grub2-mkconfig sorterar kärnorna i omvänd ordning, förutsatt att de främst innehålla monotoniskt ökande versionsnummer. Så börja välja dina taggar för att passa den konventionen.

Svara

i ubuntu:

sudo grub-pc 

grub-pc låter dig välja vilken meny.

sudo update-grub 

se: https://askubuntu.com/questions/384388/how-to-select-option-in-configuration-grub-pc-menu

Svar

mv de nya / ej använda versionfilerna i /boot till en reservkatalog till exempel /boot/back

initrd.img-3.13.0-xx-generic vmlinuz-3.13.0-xx-generic config-3.13.0-xx-generic System.map-3.13.0-xx-generic 

Starta om systemet till räddningsläge, välj sedan grub i räddningsdialogrutan, då blir allt okej.

Det är den mest lämpliga metoden tror jag. Jag använder ubuntu 14.04.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *