如何设置 grub 超时和 grub 默认启动项?

met*_*ors 229 boot grub2 dual-boot

在 Ubuntu 12.04(或更高版本)中,如何设置 GRUB 时间和默认操作系统(我在启动时看到的),因为我是双启动 Windows(7/8)和 Ubuntu(12.04 或更高版本)?

ish*_*ish 279

  • Alt+ F2,键入gksudo gedit /etc/default/grubpressEnter并输入您的密码。
  • 您将看到以下内容:

    GRUB_DEFAULT=0
    GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=真
    GRUB_TIMEOUT=10
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || 回声Debian`
    GRUB_CMDLINE_LINUX_DEFAULT="安静的飞溅"
    GRUB_CMDLINE_LINUX=""
    
  • 您可以将默认值从 0 更改为任意数字,对应于 Grub 启动菜单中的条目(第一个条目为 0,第二个为 1 等)

  • 您可以更改“隐藏超时”(无菜单);并显示倒计时 ( GRUB_HIDDEN_TIMEOUT_QUIET=false)
  • 您可以通过在行的开头GRUB_HIDDEN用 a注释掉两行来强制显示 grub 菜单#
  • 并设置 grub 菜单超时(默认为 10 秒)

  • 进行更改,按Ctrl+S保存和Ctrl+Q退出

  • 重要提示:打开一个终端与Ctrl+ Alt+ T,然后键入sudo update-grub应用你刚才所做的更改
  • 重新启动,您应该会看到超时/默认条目更改

相关问题:

  • 请不要建议任何人通过设置任意索引来更改默认的 grub 选项。这是非常不直观的,可能会导致灾难。用户可能输入错误,或者在升级过程中可能会发生变化,从而导致意外行为。 (3认同)
  • 这需要与当前 grub 菜单的双重级别相关的更新。 (2认同)

小智 33

如果您阅读上面示例中正在编辑的文件 (/etc/default/grub),您会注意到前几行指示您update-grub在进行更改后运行,以便将 grub 读取的实际文件更新为“获取它的说明”(/boot/grub/grub.cfg)。请注意,您必须首先使用sudo命令实际运行它,因为您需要 root 权限才能实际运行命令(这就是为什么上面的海报说 type sudo update-grub)。这将导致您所做的更改写入 /boot/grub/grub.cfg。接下来的几行告诉您,您可以通过键入info -f grub -n 'Simple configuration'.

也就是说,如果要将“grub 时间”设置为无限期,请将 GRUB_TIMEOUT 设置为 -1。换句话说,它永远不会自动启动。您将不得不做出选择。

最后,为了回答您的问题,以下是直接来自上述参考文档的那些“grub 隐藏线”的描述:

GRUB_HIDDEN_TIMEOUT
    Wait this many seconds for a key to be pressed before displaying
    the menu.  If no key is pressed during that time, boot
    immediately.  Unset by default.

GRUB_HIDDEN_TIMEOUT_QUIET
    In conjunction with `GRUB_HIDDEN_TIMEOUT', set this to `true' to
    suppress the verbose countdown while waiting for a key to be
    pressed before displaying the menu.  Unset by default.
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!


Kol*_*n N 19

您可以使用名为Grub Customizer的应用程序。这要容易得多。

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

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer
Run Code Online (Sandbox Code Playgroud)

如果您在添加 ppa 时遇到错误,则可能已经包含了 grub-customizer。尝试在不添加 ppa 的情况下安装。

有一篇关于它的 How-To Geek 文章,How to Configure the Linux GRUB 2 Boot Menu the Easy Way。此外,Ubuntu 论坛上有一个已解决的线程,在 GRUB 2更改引导顺序,其中提到了此工具。

以下是该软件的一些屏幕截图:

屏幕_1

屏幕_2

屏幕_3


小智 8

我遵循了第一个答案,但如果您使用 Windows 7 Pro 和 Ubuntu 16.04 双启动,它似乎需要更新。还要确保在 BIOS 中关闭了安全启动。

a) 首先,当我认为他想用来打开终端窗口时,他说使用Alt+ F2。就我而言,它是Ctrl+ Alt+ T

b) 在第一个条目中,Ubuntu 16.04 中默认未安装gksudo gedit /etc/default/grubgksudo命令。要解决此问题,请在终端中执行以下操作:

sudo -i并按Enter并提供您的密码,然后再按Enter一次。

然后输入:

gedit /etc/default/grub并按Enter

c) 您现在将看到答案 1 中所示的grub更改菜单。按照他的回答,直到他到达Ctrl+S以保存更改。这在 Ubuntu 16.04 中不起作用,但您应该会在屏幕右上角看到一个保存按钮。点击那个。

d) Ctrl+Q退出。

e) 下一个类型sudo update-grubEnter

f) 输入exit。你需要这样做两次。

g) 重启

我发现在我的计算机上登录几次后,启动过程不会在启动时显示grub屏幕,因此我无法进入 Ubuntu,因为我将 Windows 设置为默认启动,延迟 7 秒,以防万一我想得到进入 Ubuntu。

要解决此问题,您需要进入 Windows。

  1. 单击开始菜单并CMD在搜索框中键入。

  2. 右键单击 CMD 行,该行应该位于右键单击生成的屏幕顶部。

  3. 单击以管理员身份运行

  4. 在命令行输入bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi. 此条目具有在 Windows 启动管理器中注册 grub 菜单的效果。(归功于:Windows 8.1 Ubuntu 13.10 双启动时 Grub 未显示

  5. 最后,我重新启动回 Windows。

我希望这有帮助。

  • `Alt+F2` 是在后台运行命令的统一快捷方式。在打开的菜单中,您可以像在终端中一样输入任何命令。但由于它不打开终端,您将看不到任何终端输出,也无法与终端进行交互。这就是为什么您通常会将它用于诸如启动 gedit 之类的 GUI 程序之类的事情。你也不能使用 sudo 因为你需要终端。这就是他们使用`gksudo`(GUI sudo)的原因。如果你在终端中执行命令,你可以像这样使用普通的 `sudo`:`sudo gedit /etc/default/grub` 不需要 `sudo -i`。 (2认同)

小智 6

使用带有数字标识的默认条目让我感到惊讶,因为它是在 GRUB 中引入的。这真是个坏主意。有许多情况会导致编号更改(即使用备份条目进行更新)。

相反,使用SAVED来记住上次选择的条目。更新/etc/default/grub

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
Run Code Online (Sandbox Code Playgroud)

然后应用 GRUB 更新:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

参考:http : //www.gnu.org/software/grub/manual/grub/grub.html#Simple-configuration

  • 不是大问题,但这并不能解释*如何或在何处*进行这些更改。您可能想要链接到另一个答案。 (2认同)

Spm*_*pmP 6

20.10(至少)在基于 EFI 的计算机中,您需要指定GRUB_RECORDFAIL_TIMEOUT超时,因为我认为这是一个错误(https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1918736

因此你/etc/default/grub应该包含:

GRUB_RECORDFAIL_TIMEOUT=10
Run Code Online (Sandbox Code Playgroud)

10 秒超时。

要更新 grub 配置并检查正确的输出:

sudo update-grub && grep -B3 "set timeout=" /boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)

你应该看到:

...
if [ $grub_platform = efi ]; then
  set timeout=10
...
Run Code Online (Sandbox Code Playgroud)