Grub2 - 社区 Ubuntu 文档内容如下:
如果在 /etc/default/grub 中设置了 DEFAULT=saved,则可以通过运行 sudo grub-set-default 来保存操作系统。如果在 /etc/default/grub 中也设置了 GRUB_SAVEDEFAULT=true,也可以保存操作系统。在这种情况下,默认操作系统将保留,直到从 GRUB 2 菜单中手动选择新操作系统或执行 grub-set-default 命令。
我在 中输入了DEFAULT=saved
AND行,然后运行。输出如下:GRUB_SAVEDEFAULT=true
/etc/default/grub
sudo 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:我既不能点赞也不能评论披萨的回答,因为这个论坛缺少积分,所以我决定再给出一个答案:(