问题描述
我为测试目的安装了一个主线内核。我想在默认情况下将grub设置为从较旧的内核启动。
我知道我可以为grub的第一页设置GRUB_DEFAULT=0
设置,但是如何将它设置为默认从第二页(高级页面)中的一个内核启动?
如果不安装其他软件(例如grub-customizer),我宁愿这样做。
Related Questions:
如何将Windows设置为引导加载程序中的默认引导?
我如何更改GRUB引导顺序?
最佳解决方案
首先,制作/etc/default/grub
的备份副本。如果出现问题,您可以轻松恢复到known-good副本。
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 menu”的全名 – 例如Advanced options for Ubuntu
。
然后,您将这两个字符串与>并将GRUB_DEFAULT设置为:GRUB_DEFAULT =“Ubuntu> Ubuntu的高级选项,Linux 3.13.0-53-generic”(包括引号)。
保存它,然后建立更新的grub菜单。
sudo update-grub
注意:有一种利用数字访问内核和菜单的方法,但不推荐这样做,因为内核更新发生时它不可靠。
次佳解决方案
现在Advanced
菜单在Ubuntu中是默认的,您需要在使用>
字符的内核之前选择它。
例如:
GRUB_DEFAULT="1>7"
在/etc/default/grub
和re-run 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
通过这个设置,最后一次选择的值将保留下次启动。如果你有一个新的内核,你不必编辑你的配置。
别忘了re-run sudo update-grub
解决方案来自:info grub-mkconfig
参考资料