将“旧”内核设置为默认的 grub 条目

To *_* Do 117 grub2

我安装了一个主线内核用于测试目的。我想设置 grub 默认从旧内核启动。

我知道我可以GRUB_DEFAULT=0为 grub 的第一页设置设置,但是如何将它设置为默认情况下从第二页(高级页面)中的一个内核启动?

我宁愿在不安装其他软件(例如 grub-customizer)的情况下执行此操作。

相关问题:
如何在引导加载程序中将 Windows 设置为默认引导?
如何更改 grub 启动顺序?

ana*_*aso 154

首先,制作一个备份副本/etc/default/grub。如果出现问题,您可以轻松恢复到已知良好的副本。

sudo cp /etc/default/grub /etc/default/grub.bak
Run Code Online (Sandbox Code Playgroud)

然后使用您选择的文本编辑器(例如 gedit 等)编辑文件。

sudo -H gedit /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

找到包含的行GRUB_DEFAULT- 这是您要编辑以设置默认值的行。你必须知道你想要的内核的全名 - 例如Ubuntu, with Linux 3.13.0-53-generic- 以及“高级菜单”的全名 - 例如Advanced options for Ubuntu

然后将这两个字符串组合起来>,并将GRUB_DEFAULT它们设置为:(GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"包括引号)。

保存它,然后构建更新的 grub 菜单。

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

另请参阅:GNU GRUB 手册 2.02或更具体的第 15.1.0 节关于设置默认.


注意:有一种利用数字访问内核和菜单的方法,但不推荐这种方法,因为它在内核更新时不可靠。

  • 可以使用`sudo grub-mkconfig | less` 以查看所有可能的选项 (31认同)
  • 发生更新时,使用数值可能会出现问题。最好使用文本默认值,即: GRUB_DEFAULT="Previous Linux versions>Ubuntu, with Linux 3.2.0-18-generic" (24认同)
  • GRUB_DEFAULT 的格式有点过时(至少从 Ubuntu 14.04.2 开始)。运行 `update-grub` 我遇到一个警告:请不要使用旧标题 `Previous Linux versions>Ubuntu, with Linux 3.13.0-53-generic` for GRUB_DEFAULT,使用 `Advanced options for Ubuntu>Ubuntu, with Linux 3.13 .0-53-generic`(适用于 2.00 之前的版本)或 `gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-b0ce60c3-184c-453b-184c59-184c `(适用于 2.00 或更高版本) (21认同)
  • 这是一个很好的解决方案,但更好的是打开一个`/boot/grub/grub.cfg`,在那里你会看到所有的`manuentry` 和所有的`submenus`。如果编辑它们,您可以轻松设置默认值,甚至可以在重新启动计算机时更改 grub 列表中选项的标题。 (9认同)
  • 检查 `/boot/grub/grub.cfg` 以确定要使用的确切名称绝对有用。但是不要更改这个文件,因为它会被 `update-grub` 自动重新生成,包括更新包。 (9认同)
  • 如果作者能权威地指出哪种方法是首选方法:数字、文本或数字+文本(如@Bane 所做的那样),那就太好了。一个好的答案不应该是这样的:“让我用数字来解释,但实际上你应该使用文本。” (4认同)
  • 这些说明效果很好,但有点令人困惑...为了向我后面的人澄清...我必须使用以下内容 -> GRUB_DEFAULT="1>Ubuntu, with Linux 4.2.0-27-generic" '1 ' 是选择“高级”菜单;使用它的文本等效项似乎不起作用。(顺便说一句,这是几个月来我第二次允许 Ubuntu 的自动更新功能完成它的任务,但最后却出现了一个无法运行的盒子;WTF?) (2认同)

Mar*_* T. 59

对我来说最好的解决方案是设置 (in /etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true
Run Code Online (Sandbox Code Playgroud)

使用此设置,将保留上次选择的值以供下次启动使用。如果您有新内核,则不必编辑配置。

不要忘记重新运行 sudo update-grub

解决方案来自阅读: info grub-mkconfig

  • 这太棒了 (8认同)

sar*_*old 31

既然Advanced菜单是 Ubuntu 中的默认菜单,您需要在要使用该>字符的内核之前选择它。

设置例如:

GRUB_DEFAULT="1>7"
Run Code Online (Sandbox Code Playgroud)

/etc/default/grub并重新运行sudo update-grub

请务必注意,对于 GRUB 菜单条目编号以0. 因此1以上指向Advanced菜单。作为预防措施,您可能希望最初设置GRUB_TIMEOUT=5. 有些人可能无法通过在启动时按一个键来访问 GRUB。这是一个安全网,以防您不小心指向类似的东西Memory test。还需要在引号中包含上述数字。否则它不会工作。

我在 16.04 LTS 上测试过。


Han*_*nnu 16

为了能够将哪个引导选项设置为默认使用,您需要知道有什么......所以:

要在不实际启动的情况下显示菜单项,请尝试以下操作:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
谢尼尔

$ 更新-grub --version
grub-mkconfig (GRUB) 2.02~beta2-36ubuntu3.17

$ grep -Ei '子菜单|菜单项' /boot/grub/grub.cfg | sed -re "s/(.? )'([^']+)'.*/\1 \2/"
菜单项 Ubuntu
子菜单 Ubuntu 的高级选项
    menuentry Ubuntu,使用 Linux 4.4.0-34-generic
    menuentry Ubuntu,使用 Linux 4.4.0-34-generic(新贵)
    menuentry Ubuntu,使用 Linux 4.4.0-34-generic(恢复模式)
menuentry 系统设置

  • `sed -nre "/submenu|menuentry/s/(.? )'([^']+)'.*/\1 \2/p" < /boot/grub/grub.cfg` - 使用效果相同只有`sed` (4认同)

cip*_*cus 5

当我最初发布此内容时,我没有注意到OP的具体要求不建议grub-customizer......抱歉。

\n

对于它的价值,我将把它留在这里,但也要确认最好的解决方案确实是这里得票最多的解决方案,可以找到如THIS中所示的变量补充答案中所示的变量。

\n
\n

为了使用 GUI 来完成此操作,我使用Grub 定制器(我使用的是 Mint,但这里不算)。

\n

最简单最直接的方法(感谢@eMKi在评论中的建议) \xe2\x80\x94 最适合永久设置,在常规设置>默认条目>预定义中,只需在下拉列表中选择所需的内核即可。

\n

在此输入图像描述

\n
\n

或者,如果需要选择“上一个启动项”(例如,在执行需要重新启动的 Windows 更新时,在 Windows 双重启动中可能有用) \xe2\x80\x94 保留高级选项在grub 列表,以防默认列表在 Grub 定制器中更改:

\n

在此输入图像描述

\n

“常规设置”下选择默认条目:“先前启动的条目”

\n

在此输入图像描述

\n

然后,重新启动,并在启动过程中选择 grub 列表中的“高级选项”条目:

\n

在此输入图像描述

\n

并选择较旧的内核

\n

在此输入图像描述

\n

下次重新启动时,“高级选项”项目将是 grub 列表中默认选择的项目,并且将启动其中最后选择的内核(无需打开完整的内核列表)。

\n

如果使用 Windows 或 grub 列表中的其他选项,请记住重新执行前面的过程。

\n