Ich verwende GRUB 2.00 auf einem Gentoo Linux-System.

Ich kompiliere meine eigenen Kernel manuell und installiere sie dann in /boot mit make install. Ich habe die folgenden Kernel in /boot im Moment:

# 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 

Das Ausführen von grub2-mkconfig führt zu der folgenden Ausgabe:

# 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 

Wenn ich jetzt die resultierende /boot/grub2/grub.cfg -Datei lese, stelle ich fest, dass die folgenden Einträge erstellt wurden:

  • Ein Hauptstandardeintrag, der startet vmlinuz-3.7.4-gentoo-third
  • Ein Untermenü mit allen anderen Einträgen (einschließlich der Wiederherstellungseinträge) in derselben Reihenfolge wie die grub2-mkconfig Befehl

Das Problem ist, dass ich beim Booten standardmäßig die fünfte Version meines Kernels laden möchte (vmlinuz-3.7.4-gentoo-5). nicht die dritte (vmlinuz-3.7.4-gentoo-third). Ich ziehe es auch vor, nicht auf das Untermenü zuzugreifen, um den richtigen Kernel zum Laden auszuwählen.

Wie kann ich dieses Verhalten ändern? Wie kann ich GRUB mitteilen, dass ich standardmäßig die fünfte Version meines Kernels ausführen möchte und nicht die ältere dritte Version? Wie kann ich im Allgemeinen die Standardeingabezeile so ändern, dass sie dem gewünschten Kernel entspricht und nicht einer scheinbar zufälligen, die von GRUB ausgewählt wurde?

Ich habe auch versucht, die folgenden Zeilen in /etc/default/grub:

GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true 

Dies behebt das Problem nicht so, wie ich es mir wünsche. Aber zumindest scheint sich GRUB an den neuesten Kernel zu erinnern, von dem ich gebootet habe und wählt es automatisch aus dem Untermenü aus. Es ist nur so, dass ich nicht auf das Untermenü zugreifen möchte.

Kommentare

  • Ich habe bemerkt, dass Sie -o /boot/grub2/grub.cfg als Ausgabedatei. Existiert das Verzeichnis /boot/grub/ noch?

Antwort

Um einen Menüeintrag unter dem Untermenü „Erweiterte Optionen“ auszuwählen, setzen Sie GRUB_DEFAULT = „1> 3“. Sie können jetzt grub2-mkconfig ausführen, um die grub-Konfigurationsdatei zu generieren Beim nächsten Neustart sollte vmlinuz-3.7.4-gentoo-5 booten.

Hinweis : Dadurch wird der Standardeintrag in nicht geändert Das Grub-Menü, d. h. der Standardeintrag, zeigt immer noch denselben Eintrag an, den Sie gerade haben. Das Image, das standardmäßig gestartet wird, ist das 4. Image unter „Erweiterte Optionen“. Um vmlinuz-3.7.4-gentoo-5 als Standardeintrag im Grub-Menü festzulegen, sollte die Reihenfolge der Bilder so sein, dass vmlinuz-3.7.4-gentoo-5 das erste Image ist, wenn Sie grub2-mkconfig ausführen

Kommentare

  • Beachten Sie, dass die Anführungszeichen wichtig sind. Das heißt, GRUB_DEFAULT = 1 > 3 funktioniert nicht ‚.

Antwort

Wenn Sie ein Untermenü in Ihrer grub.cfg haben, sollten Sie verwenden Zwei Ziffern wie diese:

grub-reboot "1>3" 

Das erste ist ein Menüindex und das zweite ist ein Untermenüindex

Um beispielsweise den letzten Eintrag aus der Konfiguration wie folgt zu starten:

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" { 

sollten Sie Folgendes verwenden:

grub-reboot "1>5" 

und neu starten.

Kommentare

  • Seltsam. Der Untermenü-Index beginnt mit 0, während das Hauptmenü von 1

Antwort

Sie auch GRUB_DEFAULT=saved. In diesem Fall würden Sie „

$ 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. 

verwenden oder wenn dies nur für den nächsten Start gilt:

$ 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. 

Antwort

Mit centos7 (oder RHEL7) und grub2:

grub verwendet den Eintrag „saved_entry“ von grubenv Standardmäßig wird ein Sniplet von /boot/grub2/grub.cfg gestartet:

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 

, um zu überprüfen, was der „saved_entry“ ist, ist jetzt mein Build:

grub2-editenv list 

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

, um es zu ändern, z. B. in meinen Debug-Build:

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

Antwort

Versuchen Sie

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

Dadurch werden alle nicht verwendeten Kernel in ein Sicherungsverzeichnis verschoben:

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

Dies fügt Ihrem Menü nur die Auswahl r5 hinzu. Lesen Sie anschließend diesen diesen Link und wiederholen Sie alle Kernel im Sicherungsverzeichnis mit etwas anderem als vmlinuz, wenn Sie darauf bestehen, sie beizubehalten

Antwort

Was ich getan habe, um das gewünschte Ergebnis zu erzielen, war:

  • Setzen Sie die GRUB_DEFAULT=saved wie in der grub-set-default -Hilfe

    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.

  • Festlegen des Standardwerts

    grub-set-default "1>2"

    Es wird eine neue Datei in / boot / grub mit dem Namen erstellt grubenv mit den erforderlichen info.

  • Danach erstelle ich die Konfigurationsdatei

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

Und ich habe gesehen, dass die Konfiguration geändert wurde, um den gespeicherten Status zu verwenden:

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

Antwort

Sie können die Standardauswahl anhand eines numerischen Werts festlegen. Wenn Sie

`GRUB_DEFAULT=3` 

in einstellen /etc/default/grub
Sie setzen die Standardeinstellung auf den Gentoo-5-Eintrag.
GRUB_DEFAULT ist Nullpunktverschiebung, daher wird 3 ausgewählt der vierte Eintrag, wie Sie es wünschen.

Kommentare

  • Ich weiß nicht, warum, aber es weiß nicht ‚ Anscheinend funktioniert ‚ nicht. Ich habe GRUB_DEFAULT=3 wie gesagt festgelegt und dann grub2-mkconfig. Aber beim Booten ist der Standardeintrag immer noch vmlinuz-3.7.4-gentoo-third.
  • Versuchen Sie, GRUB_SAVEDEFAULT=true auskommentieren. Es sollte nicht ‚ spielt keine Rolle, aber ‚ wird mit nume nicht benötigt rical.
  • Ich habe ‚ diese Option nicht in meiner /etc/default/grub -Datei.

Antwort

Ich vermute, dass grub2-mkconfig die Kernel in umgekehrter Reihenfolge sortiert, vorausgesetzt, dass sie hauptsächlich sind enthalten monoton ansteigende Versionsnummern. Wählen Sie also Ihre Tags aus, die dieser Konvention entsprechen.

Antwort

in Ubuntu:

sudo grub-pc 

Mit grub-pc können Sie auswählen, welches Menü angezeigt werden soll.

sudo update-grub 

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

Antwort

mv diese neuen / nicht verwendeten Versionsdateien in /boot in ein Sicherungsverzeichnis, zum Beispiel /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 

Starten Sie das System im Rettungsmodus neu, wählen Sie dann grub im Rettungsdialog, dann ist alles in Ordnung.

Es ist meiner Meinung nach die am besten geeignete Methode. Ich benutze Ubuntu 14.04.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.