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


93

我安装了主线内核以进行测试。我想将grub设置为默认从旧内核启动。

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

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

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


3
@belacqua:不是重复的。这个问题是关于将grub选项第一页中没有的旧内核设置为默认内核。
为了做

好像这种情况下,应在前面的问题所覆盖,即使该方法需要为12.10更新,老的内核,等等。
belacqua

3
问题的用例不同,答案非常具体,不适用于其他要求保护的重复项。我来这里是为了解决这个特殊问题。不更改启动顺序;也不启动Windows。为“不是重复项” +1。
罗比·巴萨克

Answers:


128

首先,制作的备份副本/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或更具体的关于设置default的15.1.0节


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


24
更新发生时,使用数字值可能会出现问题。这是更好地使用文本默认情况下,即:GRUB_DEFAULT = “以前的Linux版本>的Ubuntu,Linux的3.2.0-18-通用”
Bealer

26
一个人可以sudo grub-mkconfig | less用来查看所有可能的选项
Nitz

9
这是一个很好的解决方案,但更重要的是打开/boot/grub/grub.cfg在那里你会看到所有的manuentry和所有的submenus。如果编辑它们,则可以轻松设置默认值,甚至在重新启动计算机时甚至可以更改grub列表中选项的标题。
Aleks

7
检查/boot/grub/grub.cfg确定要使用的确切名称绝对有用。但请勿更改此文件,因为它将由进行自动重新生成update-grub,包括在更新程序包时。
罗比·巴萨克

18
GRUB_DEFAULT的格式略有过时(至少从Ubuntu 14.04.2起)。运行时,update-grub我遇到了一个警告:请不要Previous Linux versions>Ubuntu, with Linux 3.13.0-53-generic对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-184c-453b-af59-419b56a2584f(对于2.00或更高版本)
Wumms 2015年

22

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

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

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

别忘了重新运行 sudo update-grub

解决方案是从阅读: info grub-mkconfig


4
这太棒了
Mephisto

您确定;行尾的分号()吗?!?
DJCrashdummy18年

我目前无法在我使用计算机的地方查看它,但是您说对了;似乎是错误的或不必要的!
Martin T.

21

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

设置例如:

GRUB_DEFAULT="1>7"

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

重要的是要注意,对于GRUB菜单条目,编号以开头0。因此,1以上内容指向Advanced菜单。作为预防措施,您可能需要初始设置GRUB_TIMEOUT=5。在启动时,某些键可能无法通过访问键来访问GRUB。这是一个安全网,以防您意外指向类似的东西Memory test。还必须在引号中包含以上数字。否则它将无法正常工作。

我在16.04 LTS上进行了测试。


也可以在Debian中使用。
劳伦斯·奥利维罗

我发现这个答案非常有用,因为在内核更新之后,它仍然指向最新的内核。例如,在我的设置中,它是1> 0,表示:高级优先列表(始终是最新的内核)。我的系统有时会停止使用最新的内核自动更新grub的0条目,所以我使用了这种方法。
彼得·弗莱克斯

8

为了能够设置使用哪个引导选项作为默认选项,您需要了解其中的内容...因此:

要显示菜单项而无需实际引导,请尝试以下操作:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
氙气

$ update-grub-版本
grub-mkconfig(GRUB)2.02〜beta2-36ubuntu3.17

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.