GRUB2: Wie man sich an Grubs letzte Wahl erinnert


11

Ich probiere gerade verschiedene Distributionen aus. Wenn ich meinen Laptop hochfahre, habe ich mehrere Betriebssysteme zur Auswahl. Normalerweise installieren grub2sich alle diese Distributionen und befinden sich ganz oben in der Liste, sodass sie die Standard- Distributionen sind, die nach Abschluss der Installation gestartet werden .

Aber Manjaro hat etwas anderes gemacht. Es wurde eine Version davon installiert grub2, die sich daran erinnerte, welche Distribution ich das letzte Mal gestartet hatte, und diese (beim Neustart) weiter bootete, bis ich eine andere auswählte (und dann diese bootete und so weiter).

Habe ich mir das vorgestellt? Tut Manjaro das tatsächlich? Wenn ja, wie kann ich installiere diese Version von grubmeinem System? Prost.


Das ist meine /etc/grub.d/40_customDatei:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

und das ist meine /etc/default/grubDatei:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Ich habe die Anweisungen in dieser Frage befolgt (hauptsächlich diese beiden Zeilen zu meiner hinzugefügt grub), aber es hat nicht funktioniert. Die Top-Distribution startet beim Neustart, obwohl ich zuvor eine andere ausgewählt hatte.
Gabriel

Ich folgte den Anweisungen in der akzeptierten Antwort. Ich bearbeitete /etc/default/grubund ich änderte die Zeile GRUB_DEFAULT=0an GRUB_DEFAULT=savedund fügte hinzu , die Linie , GRUB_SAVEDEFAULT=truedie dort wan't. Dann ich sudo update-grub. Neustart und Auswahl einer Distribution zum Booten, die sich von der obersten unterscheidet. Erneut neu gestartet und die oberste (nicht die zuvor ausgewählte) Distribution wurde standardmäßig ausgewählt und gestartet.
Gabriel

Ich habe meine Frage mit den Inhalten dieser beiden Dateien aktualisiert. Was soll ich ändern?
Gabriel

Antworten:


11

Gemäß dem GRUB Handbuch :

'GRUB_DEFAULT'

.................

Wenn Sie dies auf 'gespeichert' setzen, ist der Standardmenüeintrag derjenige, der durch 'GRUB_SAVEDEFAULT', grub-set-default oder grub-reboot gespeichert wurde.


'GRUB_SAVEDEFAULT'

Wenn diese Option auf "true" gesetzt ist, speichern Sie einen ausgewählten Eintrag als neuen Standardeintrag für zukünftige GRUB-Läufe. Dies ist nur nützlich, wenn 'GRUB_DEFAULT = gespeichert'; Dies ist eine separate Option, da 'GRUB_DEFAULT = gespeichert' ohne diese Option in Verbindung mit grub-set-default oder grub-reboot nützlich ist. Standardmäßig deaktiviert. Diese Option basiert auf dem Umgebungsblock, der möglicherweise nicht in allen Situationen verfügbar ist (siehe Umgebungsblock).

Sie müssen hinzufügen:

GRUB_DEFAULT=saved

und

GRUB_SAVEDEFAULT=true

zu deinem /etc/default/grub. Wenn Sie benutzerdefinierte Menüdateien verwenden /etc/grub.d/40_custom, müssen Sie die Option hinzufügen

savedefault

zu den Menüeinträgen / Menüeinträgen in dieser Datei. Nach diesem Update GRUB:

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

oder

update-grub

Wenn Sie mehrere Distributionen installiert haben, stellen Sie sicher, dass Sie den aktiven GRUB konfigurieren und aktualisieren .


1

Ich hatte Probleme damit, Arch als VirtualBox-Gast zu verwenden. Es stellte sich heraus, dass ich LVM verwendete.

Nochmals aus dem GRUB-Handbuch :

13.2 Der GRUB-Umgebungsblock

Es ist oft nützlich, sich von einem Start zum nächsten eine kleine Menge an Informationen merken zu können. Beispielsweise möchten Sie möglicherweise den Standardmenüeintrag basierend auf der zuletzt ausgewählten Option festlegen. GRUB unterstützt absichtlich keine Unterstützung für das Schreiben von Dateien, um die Möglichkeit zu minimieren, dass der Bootloader für die Beschädigung des Dateisystems verantwortlich ist. Daher kann eine GRUB-Konfigurationsdatei nicht einfach eine Datei auf normale Weise erstellen. GRUB bietet jedoch einen „Umgebungsblock“, mit dem eine kleine Menge an Status gespeichert werden kann.

Der Umgebungsblock ist eine vorab zugewiesene 1024-Byte-Datei, die normalerweise in / boot / grub / grubenv gespeichert ist (obwohl Sie dies nicht annehmen sollten). Beim Booten lädt der Befehl load_env (siehe load_env) Umgebungsvariablen daraus, und der Befehl save_env (siehe save_env) speichert Umgebungsvariablen darin. Auf einem laufenden System kann das Dienstprogramm grub-editenv zum Bearbeiten des Umgebungsblocks verwendet werden.

Aus Sicherheitsgründen ist dieser Speicher nur verfügbar, wenn er auf einer einfachen Festplatte (kein LVM oder RAID) installiert ist, ein Dateisystem ohne Prüfsumme (kein ZFS) verwendet und BIOS- oder EFI-Funktionen (kein ATA, USB oder IEEE1275) verwendet.

grub-mkconfig verwendet diese Funktion, um 'GRUB_SAVEDEFAULT' zu implementieren (siehe Einfache Konfiguration).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.