如何让 grub2 记住最后的选择?

如何让 grub2 记住最后的选择?

Grub2 - 社区 Ubuntu 文档内容如下:

如果在 /etc/default/grub 中设置了 DEFAULT=saved,则可以通过运行 sudo grub-set-default 来保存操作系统。如果在 /etc/default/grub 中也设置了 GRUB_SAVEDEFAULT=true,也可以保存操作系统。在这种情况下,默认操作系统将保留,直到从 GRUB 2 菜单中手动选择新操作系统或执行 grub-set-default 命令。

我在 中输入了DEFAULT=savedAND行,然后运行​​。输出如下:GRUB_SAVEDEFAULT=true/etc/default/grubsudo grub-set-default

$ sudo grub-set-default
entry not specified.
Usage: grub-set-default [OPTION] entry
Set the default boot 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/grub
                          instead of the /boot/grub directory

ENTRY is a number or a menu item title.

Report bugs to <[email protected]>.

我是否没有正确遵循文档?正确的做法是什么?

答案1

本例中的文档是错误的。 中的所有变量都以/etc/default/grub开头GRUB_,因此正确的语法是GRUB_DEFAULT=saved不是 DEFAULT=saved。我已修正 Ubuntu wiki 以反映这一点。

官方 grub 使用手册正确描述了这一点。
将以下内容输入到/etc/default/grub(命令行gedit admin:///etc/default/grub:):

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

然后运行:

sudo update-grub

答案2

就我而言,它不适用于/etc/grub.d/40_custom缺少该savedefault行的定义的条目。

menuentry "Chameleon" {
    savedefault ### <<<< this must be added
    set root="(hd1)"
    chainloader +1
}

答案3

如果自动生成的 grub.cfg 中没有正确的标头,savedefault 将不起作用

要生成正确的标头,您需要在 /etc/default/grub 中进行设置

GRUB_DEFAULT=saved

并制作 grub-mkconfig 来替换 grub.cfg 的副本

grub-mkconfig -o /boot/grub.cfg

Grub 2.02 中的 savedefault 不需要任何附加参数

您可以在 grub.cfg 中看到 savedefault 的来源

答案4

谢谢披萨我发现我的 Windowsmenuentry缺少/etc/grub.d/40_custom以下savedefault属性:

menuentry 'Windows 10' {
    savedefault    # <<<<<<<<<<<< THIS Attribute was missing!
    insmod ntfs
    insmod ntldr
    insmod part_msdos
    insmod search_fs_uuid
    search --fs-uuid --no-floppy --set=root <WINDOWS_SSD_UUID>
    ntldr /bootmgr
}

就我而言(Arch Linux,不是 Ubuntu ;)),我发现pacman -S grub-customizer (来自StackOverflow 上的这篇文章马特) 这是一个用于自定义 GRUB 菜单的不错的 GUI 工具!

PS:我既不能点赞也不能评论披萨的回答,因为这个论坛缺少积分,所以我决定再给出一个答案:(

相关内容