GRUB2:如何记住 grub 上次的选择

GRUB2:如何记住 grub 上次的选择

我目前正在尝试各种发行版,因此当我启动笔记本电脑时,我有多个操作系统可供选择。通常,所有这些发行版都会安装grub2并位于列表顶部,因此它们是安装完成后默认启动的发行版。

但 Manjaro 做了一些不同的事情。grub2它安装了一些版本记住我上次启动的是哪个发行版,并一直启动该发行版(重新启动后),直到我选择了另一个发行版(然后它将启动该发行版,依此类推)。

这是我想象的吗? Manjaro 真的这么做了吗?如果是的话我该如何安装那个版本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"

答案1

根据GRUB手册:

'GRUB_DEFAULT'

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

如果将此设置为“已保存”,则默认菜单项将是由“GRUB_SAVEDEFAULT”、grub-set-default 或 grub-reboot 保存的菜单项。


'GRUB_SAVEDEFAULT'

如果此选项设置为“true”,则在选择某个条目时,将其保存为新的默认条目,以供将来运行 GRUB 时使用。这仅在 'GRUB_DEFAULT=saved' 时才有用;它是一个单独的选项,因为“GRUB_DEFAULT=saved”在没有此选项的情况下与 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。

答案2

我在使用 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”(请参阅​​简单配置)。

相关内容