GRUB2: як запам'ятати останнього вибору


11

В даний час я пробую різні дистрибутиви, тому коли я завантажую свій ноутбук, у мене є кілька ОС на вибір. Зазвичай всі ці дистрибутивні програми встановлюються grub2та знаходяться у верхній частині списку, тому вони за замовчуванням завантажуються після завершення встановлення.

Але Манджаро зробив щось інше. Він встановив деяку версію, grub2яка б запам’ятала, який дистрибутив я завантажував останній раз, і продовжував завантажувати цей (після перезавантаження), поки я не вибрав інший (і тоді він завантажив би цей і так далі).

Я це уявляв? Чи справді Манджаро так робить? Якщо так, то як я можу встановити цю версію в grubмоїй системі? Ура.


Це мій /etc/grub.d/40_customфайл:

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

і це мій /etc/default/grubфайл:

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

Я дотримувався вказівок у цьому питанні (в основному додав ці два рядки до свого grub), але це не спрацювало. Верхній дистрибутив завантажується після перезавантаження, хоча я вже обрав інший.
Габріель

Я дотримувався вказівок у прийнятій відповіді. Я редагував , /etc/default/grubі я змінив лінію GRUB_DEFAULT=0до GRUB_DEFAULT=savedі додав рядок , GRUB_SAVEDEFAULT=trueяка wan't там. Тоді я sudo update-grub. Перезавантажив і вибрав дистрибутив для завантаження, відмінний від верхнього. Перезавантажився знову, і верхній (не той, який я вибрав раніше) дистрибутив був обраний за замовчуванням та завантажений.
Габріель

Я оновив своє питання тим, що знаходиться в цих двох файлах. Яку зміну я повинен зробити?
Габріель

Відповіді:


11

Відповідно до посібника GRUB :

'GRUB_DEFAULT'

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

Якщо ви встановите це значення "збережено", то в меню меню за замовчуванням буде записано "GRUB_SAVEDEFAULT", grub-set-default або grub-reboot.


'GRUB_SAVEDEFAULT'

Якщо для цього параметра встановлено значення "true", тоді, коли вибрано запис, збережіть його як новий запис за замовчуванням для використання майбутніми програмами GRUB. Це корисно, лише якщо 'GRUB_DEFAULT = збережено'; це окремий варіант, оскільки "GRUB_DEFAULT = збережений" корисний без цієї опції в поєднанні з grub-set-default або grub-reboot. Не встановлено за замовчуванням. Цей параметр покладається на блок оточення, який може бути недоступним у всіх ситуаціях (див. Блок оточення).

Ви повинні додати:

GRUB_DEFAULT=saved

і

GRUB_SAVEDEFAULT=true

до свого /etc/default/grub. Крім того, якщо ви використовуєте власні файли меню, наприклад, /etc/grub.d/40_customви повинні додати цю опцію

savedefault

до меню / меню в цьому файлі. Після цього оновіть GRUB:

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

або

update-grub

Якщо у вас встановлено кілька дистрибутивів, переконайтеся, що ви налаштували та оновили активний GRUB.


1

У мене виникли проблеми з використанням Arch в якості гостя VirtualBox. Проблема виявилася моїм використанням LVM.

Знову з посібника GRUB :

13.2 Блок середовища GRUB

Часто корисно мати можливість запам’ятовувати невелику кількість інформації від одного завантаження до іншого. Наприклад, ви можете встановити запис меню за замовчуванням на основі того, що було обрано минулого разу. GRUB навмисно не реалізує підтримку для запису файлів, щоб мінімізувати можливість відповідальності завантажувача завантаження файлової системи, тому файл конфігурації GRUB не може просто створити файл звичайним способом. Однак GRUB забезпечує "блок оточення", який можна використовувати для збереження невеликої кількості стану.

Блок навколишнього середовища - це попередньо виділений 1024-байтний файл, який зазвичай живе в / boot / grub / grubenv (хоча цього не слід вважати). Під час завантаження команда load_env (див. Load_env) завантажує з нього змінні середовища, а команда save_env (див. Save_env) зберігає змінні середовища. У запущеній системі утиліта grub-editenv може використовуватися для редагування блоку середовища.

З міркувань безпеки це сховище доступне лише при встановленні на звичайному диску (без LVM чи RAID) , використанні файлової системи, що не перевіряє суми (без ZFS), та використанні функцій BIOS або EFI (без ATA, USB або IEEE1275).

grub-mkconfig використовує цей інструмент для реалізації "GRUB_SAVEDEFAULT" (див. Просте налаштування).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.