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
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 igrub-set-default
hjälpgrub-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 igengrub2-mkconfig
. Men vid starttiden är standardposten fortfarandevmlinuz-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.
-o /boot/grub2/grub.cfg
som utdatafil. Finns katalogen/boot/grub/
fortfarande?