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

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

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

我宁愿这样做而不安装其他软件(例如grub-customizer)。

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

首先,制作/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


注意:有一种方法利用数字来访问内核和菜单,但不建议这样做,因为在发生内核更新时它是不可靠的。

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

设置例如:

 GRUB_DEFAULT="1>7" 

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

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

我在16.04 LTS上测试过。

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

  GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true 

使用此设置,将保留上次选择的值以用于下次引导。 如果您有新内核,则无需编辑配置。

别忘了重新运行sudo update-grub

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

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

要显示菜单条目而不实际启动 ,请尝试以下操作:

 $ lsb_release -s -rdc
 Ubuntu 16.04.4 LTS
 16.04
 xenial

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

 $ grep -Ei'子菜单| menuentry'/ boot/grub/grub.cfg |  sed -re“s /(。?)'([^'] +)'。* / \ 1 \ 2 /”
 menuentry 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系统设置