GRUB2: jak zapamiętać gruba ostatni wybór

11

Obecnie próbuję różnych dystrybucji, więc kiedy uruchamiam laptopa, mam kilka systemów operacyjnych do wyboru. Zwykle wszystkie te dystrybucje instalują się grub2i lokalizują na górze listy, więc są to te domyślne, które można uruchomić po zakończeniu instalacji.

Ale Manjaro zrobił coś innego. Zainstalował niektóre wersje tego grub2, które pamiętałyby, którą dystrybucję uruchomiłem ostatnim razem i kontynuowałem uruchamianie tej (po ponownym uruchomieniu), dopóki nie wybrałem innej (a następnie uruchomi tę i tak dalej).

Czy to sobie wyobrażałem? Czy Manjaro faktycznie to robi? Jeśli tak, jak mogę zainstalować tę wersję w grubmoim systemie? Twoje zdrowie.


To jest mój /etc/grub.d/40_customplik:

#!/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.

i to jest mój /etc/default/grubplik:

# 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"
Gabriel
źródło
Postępowałem zgodnie ze wskazówkami w tym pytaniu (głównie dodałem te dwie linie do mojego grub), ale to nie zadziałało. Top Distro uruchamia się po ponownym uruchomieniu, mimo że wcześniej wybrałem inną.
Gabriel
Postępowałem zgodnie ze wskazówkami w przyjętej odpowiedzi. Zredagowałem /etc/default/grubi zmieniłem linię GRUB_DEFAULT=0na GRUB_DEFAULT=savedi dodałem linię, GRUB_SAVEDEFAULT=truektórej tam nie ma. Potem sudo update-grub. Uruchomiono ponownie i wybrał dystrybucję do rozruchu, inną niż pierwsza. Zrestartowano ponownie, a górna (nie ta, którą wcześniej wybrałem) dystrybucja została domyślnie wybrana i uruchomiona.
Gabriel
Zaktualizowałem swoje pytanie o to, co jest w tych dwóch plikach. Jaką zmianę powinienem zrobić?
Gabriel
niech nam kontynuować tę dyskusję w czacie
don_crissti

Odpowiedzi:

11

Zgodnie z instrukcją GRUB :

„GRUB_DEFAULT”

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

Jeśli ustawisz tę opcję na „zapisano”, domyślną pozycją menu będzie zapisana przez „GRUB_SAVEDEFAULT”, grub-set-default lub grub-reboot.


„GRUB_SAVEDEFAULT”

Jeśli ta opcja jest ustawiona na „prawda”, to po wybraniu wpisu zapisz go jako nowy domyślny wpis do wykorzystania w przyszłych wersjach GRUB-a. Jest to przydatne tylko wtedy, gdy „GRUB_DEFAULT = zapisany”; jest to osobna opcja, ponieważ „GRUB_DEFAULT = zapisany” jest użyteczny bez tej opcji, w połączeniu z grub-set-default lub grub-reboot. Domyślnie wyłączone. Ta opcja opiera się na bloku środowiska, który może nie być dostępny we wszystkich sytuacjach (patrz Blok środowiska).

Musisz dodać:

GRUB_DEFAULT=saved

i

GRUB_SAVEDEFAULT=true

do twojego /etc/default/grub. Ponadto, jeśli używasz niestandardowych plików menu, takich jak /etc/grub.d/40_custommusisz dodać opcję

savedefault

do menuentry / menuentries w tym pliku. Po tej aktualizacji GRUB:

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

lub

update-grub

Jeśli masz zainstalowanych kilka dystrybucji, upewnij się, że konfigurujesz i aktualizujesz aktywny GRUB.

don_crissti
źródło
1

Miałem problem z używaniem Archa jako gościa VirtualBox. Problemem okazało się moje użycie LVM.

Ponownie z podręcznika GRUB :

13.2 Blok środowiska GRUB

Często przydaje się zapamiętywanie niewielkiej ilości informacji od jednego rozruchu do drugiego. Na przykład, możesz chcieć ustawić domyślną pozycję menu na podstawie tego, co zostało wybrane ostatnim razem. GRUB celowo nie implementuje obsługi zapisywania plików, aby zminimalizować prawdopodobieństwo, że moduł ładujący jest odpowiedzialny za uszkodzenie systemu plików, więc plik konfiguracyjny GRUB nie może po prostu utworzyć pliku w zwykły sposób. Jednak GRUB zapewnia „blok środowiska”, którego można użyć do zapisania niewielkiej ilości stanu.

Blok środowiska to wstępnie przydzielony 1024-bajtowy plik, który zwykle znajduje się w katalogu / boot / grub / grubenv (choć nie należy tego zakładać). W czasie rozruchu polecenie load_env (patrz load_env) ładuje z niego zmienne środowiskowe, a polecenie save_env (patrz save_env) zapisuje w nim zmienne środowiskowe. Z działającego systemu można użyć narzędzia grub-editenv do edycji bloku środowiska.

Ze względów bezpieczeństwa ta pamięć jest dostępna tylko wtedy, gdy jest instalowana na zwykłym dysku (bez LVM lub RAID) , przy użyciu systemu plików bez sprawdzania sumy kontrolnej (bez ZFS) i przy użyciu funkcji BIOS lub EFI (bez ATA, USB lub IEEE1275).

grub-mkconfig używa tego narzędzia do implementacji „GRUB_SAVEDEFAULT” (patrz Prosta konfiguracja).

Matteus Blanc
źródło