如何更改GRUB引导顺序?


336

我在共享计算机上同时安装了Windows 7和Ubuntu。因为许多非开发人员都使用Windows,所以我想更改引导顺序以使其更容易使用。

当前,引导顺序如下所示:

  • Ubuntu 11.10通用* 86
  • Ubuntu 11.10通用* 86(安全启动)
  • 记忆测试
  • 记忆测试
  • Windows 7开启 /dev/sda6

如何更改默认顺序,使Windows 7在列表的顶部?

  • Windows 7开启 /dev/sda6
  • Ubuntu 11.10通用* 86
  • Ubuntu 11.10通用* 86(安全启动)
  • 记忆测试
  • 记忆测试


更改grub文件后,您是否做了“ sudo update-grub”?
Tinellus 2012年

是的,我想我可能已经忘记这样做了,谢谢!我将尝试并更新结果。
jeffery_the_wind 2012年

kubuntu 14.04,sudo apt-get install kde-config-grub2然后在系统配置中转到启动关闭
n611x007,2015年

Answers:


295

您可以使用一个易于使用的GUI应用程序,称为Grub Customizer,使您的生活更加轻松。顾名思义,您不仅可以对GRUB菜单项进行重新排序,还可以做更多的事情。

您可以通过以下方式安装它:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

(请参阅询问Ubuntu问题PPA可以安全地添加到我的系统中,需要注意哪些“危险信号”吗?

有一篇关于它的How-To Geek文章,如何以简单的方式配置Linux GRUB 2引导菜单。如果有兴趣,请看一下。另外,Ubuntu论坛上有一个已解决的线程,提到此工具的GRUB 2中的更改启动顺序

以下是一些屏幕截图:

屏幕_1

屏幕_2

screen_3


一些故障排除:

Grub Customizer设置只能在最新的Linux / Ubuntu安装(安装了Grub的安装)中起作用。

例如,如果有人安装了两个操作系统(Windows和Ubuntu),然后安装了第三个操作系统(Manjaro等),然后尝试按照上述答案进行操作,则从第二个操作系统进行Grub自定义程序更改后将无法正常工作(在示例中为Ubuntu)。该程序必须安装在其操作系统中,因为Grub Customizer似乎只能编辑由安装了自身的系统的安装创建的Grub文件。

大多数情况下,确定Grub引导菜单的文件都已在计算机上安装了最新系统,因此必须从 Linux系统安装和使用Grub Customizer 。


4
最受欢迎:)屏幕截图来自上面链接的博客文章:P
Nitin Venkatesh 2012年

2
这不适用于最新的Ubuntu。我们可以在这里获得更新的帖子吗?
2012年

7
我认为您的回答很好并且很有帮助,所以请不要误解我的意思。虽然GUI工具既简洁又方便,但它们掩盖了事实。Marve在下面的回答中讨论了正在使用的文件以及如何手动更新它们,从而提供了有关Grub工作原理的见解。当GUI失败时,至少会窥视一下基础-毕竟它们并不难,从长远来看,手动操作可能会更容易。
barrypicker 2014年

1
使用该工具也遇到了问题。似乎它会更新/ etc / default / grub的正确性,但随后会显示核心转储并中止。
Mauricio Gracia Gutierrez

1
这需要与当前grub菜单的双重级别相关的更新。
汉奴

243

您也可以从命令行更改grub默认启动项,而不必安装任何其他工具。这不会更改列表中的顺序,但是默认情况下它将允许其他操作系统启动,这听起来还是您可能想要的。

首先,制作的备份副本/etc/default/grub。万一出了问题,您可以轻松地恢复到已知良好的副本:

sudo cp /etc/default/grub /etc/default/grub.bak

然后使用vim或您选择的文本编辑器编辑文件:

sudo vim /etc/default/grub

查找包含的行

GRUB_DEFAULT=0

并将其设置为

GRUB_DEFAULT=x

其中x是默认情况下您要引导至的grub菜单项的索引。请注意,菜单项是零索引的。这意味着列表中的第一项是0,而第六项实际上是5。因此,要启动到列表中的第六项,该行应为:

GRUB_DEFAULT=5

如果您忘了订购商品,请查看/boot/grub/grub.cfg。每个菜单项都由一行类型指定:

menuentry 'Ubuntu' [options] {

您还可以通过名称而不是索引来选择默认值,例如:

GRUB_DEFAULT='Ubuntu'

如果有一条menuentry 'Ubuntu'线/boot/grub/grub.cfg。这可能是更好的方法,因为它不依赖于条目的顺序,后者可能会发生变化。

要在“以前的Linux版本”子菜单中使用内核,请使用:

GRUB_DEFAULT="Previous Linux Versions>x"

(请确保包含引号),其中x子菜单中旧内核的索引是,还是出现在中的内核名称/boot/grub/grub.cfg。例如,

GRUB_DEFAULT="Previous Linux Versions>4.13.0-43-generic"

然后构建更新的grub菜单:

sudo update-grub

5
最后我看了看grub2在运行中生成了这么多条目,以至于很难弄清楚该条目使用什么数字。
2012年

52
使用索引可能会很混乱-更新后,操作系统列表可能会更改。但是您可以查看/boot/grub/grub.cfg并搜索所需的默认操作系统的名称。然后使用引号而不是索引。示例:GRUB_DEFAULT="Microsoft Windows XP Professional (on /dev/sda1)"代替GRUB_DEFAULT=7
geekQ

1
这需要与当前grub菜单的双重级别相关的更新。
汉奴

5
在当前版本的Ubuntu 16.04中,如果要选择要引导的特定内核,则需要添加到Advanced options for Ubuntu子菜单,如下所示:GRUB_DEFAULT='Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-34-generic'
Geoff Williams

1
@BandaMuhammadAlHelal它将尝试启动列表中的第七项-这就是您想要的吗?如果要在列表上显示第6个项目,请使用GRUB_DEFAULT=5
尼克

39

tombuntu网站Tom的文章):

可以使用该/etc/default/grub文件配置GRUB 。在对其进行任何更改之前,最好通过创建副本来备份它:

sudo cp /etc/default/grub /etc/default/grub.bak

您可以还原将备份复制到原始副本上:

sudo cp /etc/default/grub.bak /etc/default/grub

使用具有root用户特权的文本编辑器打开文件:

gksu gedit /etc/default/grub

该行GRUB_DEFAULT=0表示GRUB将选择要引导的第一个菜单项。将此更改为GRUB_DEFAULT=saved。此更改将使以后更容易更改默认项目。

保存并关闭文件。运行以下命令以将更改应用于GRUB的配置:

sudo update-grub

我们所做的配置更改允许随时使用grub-set-default和grub-reboot命令。这些允许您分别永久更改默认引导项,或仅用于下一次引导。

grub-set-default或引导菜单项的编号grub-reboot(带有sudo)运行(第一项为0)。此命令会将默认值更改为第二项:

sudo grub-set-default 1

15
这个答案几乎是从tombuntu.com/index.php/2011/09/25/…上逐字逐句地获取的。请在信用到期的地方给予信用。
詹姆斯·麦克马洪

这个答案似乎并没有改变引导项目的顺序。
Sparhawk

我正在使用Linux Mint Debian Edition。我没有/ etc / default / grub,但是发现要修改的GRUB_DEFAULT值位于/etc/grub.d/00_header中。用所需的启动项名称修改00_header中的GRUB_DEFAULT之后,我简单地运行了“ sudo update-grub”,结果成功。
模糊分析

我在tiponubuntu.com/2016/07/20/grub2-boot-order-ubuntu-16-04中看到了相同的命令,我意识到这些命令仅在它们首先从系统以引导顺序0发出时才起作用。
太阳熊

-2

我尝试了以下方法,并获得了良好的结果。

打开一个终端窗口(Ctrl+ Alt+ T),

键入sudo gksu nautilus,然后按Enter。输入您的用户密码。

导航到文件/boot/grub/grub.cfg。复制该文件并将其粘贴到同一目录中,应创建grub.cfg文件的副本以用于备份。然后双击grub.cfg以在文本编辑器中打开文件。

在文件中,您将找到行(set default="0")。编辑0到要加载的Grub中的行号。我的是第六行,所以我用了5,因为第一行被认为是0。保存文件。重新启动电脑,如果您选择了正确的线路,则在加载Grub时它将突出显示。

祝好运


10
如您在文件开头所看到的,它表明您不应这样做。而是编辑/etc/default/grub然后运行update-grub
sazary

7
而且我也不建议gksu nautilus。从那里向系统中投下炸弹太容易了。
sylvainulg

检查这篇文章:psychocats.net/ubuntu/bootmenu
tqjustc

出于某种原因,当搜索“ grub change boot order”时,该答案在Google中显示为“自动答案”。
lepe 2015年

@lepe,请放心,对我来说默认值为linuxandubuntu.com/home/…–
vladkras

-5

打开一个终端窗口(Ctrl+ Alt+ T),或按Alt+ F2

输入gksu nautilus并按Enter

这将打开文件浏览器Nautilus,并有权更改root拥有的文件。

导航到该文件/boot/grub/grub.cfg,然后双击以在文本编辑器中打开该文件。

在属于不同操作系统的文件中剪切,移动和粘贴这些部分。这样做时必须非常小心,因为如果做错了,则将无法启动。始终可以使用Windows安装光盘(FIXMBR)中的工具修复Windows启动,该光盘会用典型的Windows-MBR覆盖GRUB-MBR。

我已经从Ubuntu 9.04到12.04对其进行了测试,并且每次都运行良好。

但是我只是试图将Windows启动部分移到列表的顶部,以使其成为默认值。

如果我的记忆正确,则文件中的每个引导菜单部分begin均以... 开头,并以...结束end。并跨越多个文本行。

该文件中的文本变得更加复杂,在上一个Ubuntu版本中与以前的版本看起来并不相同。因此,请使用大脑来避免犯错。


4
您不必sudo update-grub在某个时候跑步吗?
伊利亚·卡根

4
/boot/grub/grub.cfg在每次安装/更新的软件包时都会覆盖,从而触发Grub的更新,从而有效地调用update-grub。这产生了一个新的grub.cfg。因此,/etc如其他答案所述,在目录中的文件中完成对Grub的配置,以确保其持久性。
gertvdijk 2012年
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.