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 dergrub-set-default
-Hilfegrub-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 danngrub2-mkconfig
. Aber beim Booten ist der Standardeintrag immer nochvmlinuz-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.