我安装了一个主线内核用于测试。我想将 grub 设置为默认从旧内核启动。
我知道我可以设置GRUB_DEFAULT=0
grub 第一页的设置,但是如何设置它从第二页(高级页面)中的一个内核默认启动?
我更愿意在不安装其他软件(例如 grub-customizer)的情况下执行此操作。
答案1
首先,备份/etc/default/grub
。如果出现问题,您可以轻松恢复到已知良好的副本。
sudo cp /etc/default/grub /etc/default/grub.bak
然后使用您选择的文本编辑器(例如 gedit 等)编辑该文件。
sudo -H gedit /etc/default/grub
找到包含以下内容的行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
也可以看看:GNU GRUB 手册 2.02或者更具体地说15.1.0 节关于设置默认值。
注意:有一种方法可以利用数字来访问内核和菜单,但不建议这样做,因为在内核更新时这种方法不可靠。
答案2
对我来说最好的解决方案是设置(在/etc/default/grub
):
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
使用此设置,上次选择的值将保留用于下次启动。如果您有新内核,则无需编辑配置。
不要忘记重新运行sudo update-grub
解决方案来自阅读:info grub-mkconfig
答案3
现在,Advanced
Ubuntu 中菜单是默认的,您需要在使用字符选择所需内核之前选择它>
。
设置例如:
GRUB_DEFAULT="1>7"
并/etc/default/grub
重新运行sudo update-grub
。
需要注意的是,GRUB 菜单项的编号以 开头0
。因此,1
上面的数字指向Advanced
菜单。作为预防措施,您可能需要首先设置GRUB_TIMEOUT=5
。有些人可能无法在启动时通过按键来访问 GRUB。这是一个安全网,以防您不小心指向了类似的东西Memory test
。还需要将上面的数字放在引号中。否则它将不起作用。
我在 16.04 LTS 上进行了测试。
答案4
当我最初发布这篇文章时,我没有注意到 OP 的具体要求,不要求婚grub-customizer
......抱歉。
不管怎样,我会把它留在这里,但也要确认最好的解决方案确实是获得最多赞成票的解决方案这里,其中的变量可以在这补充答案。
为了使用 GUI 来实现,我使用Grub 定制器(我在 Mint,但这不算在这里)。
最简单、最直接的方式(感谢@eMKi 在评论中的建议)——最适合永久设置,常规设置 > 默认条目 > 预定义,只需在下拉列表中选择所需的内核。
或者,如果需要将“上一次启动的条目”作为选定的条目(例如,在进行需要重新启动的 Windows 更新时,在双启动 Windows 中可能会很有用)— 保留高级选项如果在 Grub Customizer 中更改了默认列表,则在 grub 列表中:
在下面常规设置选择默认条目:上一个引导项。
然后,重新启动,并在启动过程中选择 grub 列表中的“高级选项”条目:
并选择较旧的内核
下次重启时,“高级选项”项将成为 grub 列表中默认选择的项,并将启动其中最后选择的内核(无需打开完整的内核列表)。
如果使用 Windows,或者 grub 列表中有其他选项,请记住重新执行前面的步骤。