除非按住 Shift 键,否则隐藏 GRUB2 菜单:如何实现?

Bez*_*oso 34 boot grub2 dual-boot

我有一个 Ubuntu - Windows 7 双启动设置,我希望我的笔记本电脑可以启动 Windows 7,除非我在启动后立即按下 Shift 键并调出 Grub2 菜单,我可以从中选择乌班图。

我研究了 Grub2 和选项,etc/default/grub并尝试使用GRUB_TIMEOUTGRUB_HIDDEN_TIMEOUT值的组合,但无济于事。我尝试设置GRUB_HIDDEN_TIMEOUT高于GRUB_TIMEOUT两个倒计时同时开始的想法,但没有 -GRUB_TIMEOUT只有在另一个完成后才开始。

这种行为可以实现吗?

如果是这样,如何?

小智 16

我想我找到了一个更简单的解决方案。修改文件 /etc/default/grub 中的以下几行:

GRUB_HIDDEN_TIMEOUT= 0.0

GRUB_TIMEOUT = 0.0

当然,我们最终运行了一个 update-grub。它适用于我的电脑。

  • 抓那个。这不会给我 grub 菜单,但我也无法通过按 shift 来获得它。 (7认同)

tux*_*x1c 10

这适用于 Ubuntu 16.04。

我通过上面找到的一些答案的一些组合解决了这个问题,所以没有必要修改 30_os-prober,避免在 grub 包更新时将来合并......

希望能帮助到你。

更改了 /etc/default/grub 中的一些变量以反映我想要的内容;

GRUB_DEFAULT=4
GRUB_HIDDEN_TIMEOUT=5
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

GRUB_FORCE_HIDDEN_MENU="true"
export GRUB_FORCE_HIDDEN_MENU
Run Code Online (Sandbox Code Playgroud)

然后创建了一个新文件;

sudo touch /etc/grub.d/50_hidemenu
sudo chmod +x /etc/grub.d/50_hidemenu
Run Code Online (Sandbox Code Playgroud)

用这个内容填充它;

#!/bin/sh
cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
      set timeout=0
    fi
  fi
fi
EOF
Run Code Online (Sandbox Code Playgroud)

并更新了 grub;

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

干杯。


小智 7

在 Kubuntu 14.04 中,这不起作用,如果您设置GRUB_TIMEOUT= 0,奇怪的是,在应用此设置并重新启动后,grub 菜单仍然可见 10 秒。

这样做的原因是在另一个 grub 脚本中,有一段代码将 grub_timeout 设置为 10,如果它的值为 0。

所以这就是我让它工作的方式:

复制grub30_osprober文件!!!当出现问题时,您可以放回原始文件

/etc/default/grub

GRUB_DEFAULT=4    #set this value to the OS you want to boot
GRUB_HIDDEN_TIMEOUT=0

GRUB_TIMEOUT=0
Run Code Online (Sandbox Code Playgroud)

在 中/etc/grub.d/30_os-prober,有一段代码将 grub 超时设置为 10 秒,如果在 中将其设置为零/etc/default/grub,我不知道开发人员为什么将其放在那里,但它可以防止隐藏 grub 菜单。

set timeout_style=menu

if [ "\${timeout}" = 0 ]; then    
  set timeout=10  # I changed this from 10 to 0
Run Code Online (Sandbox Code Playgroud)

在这些更改之后,运行sudo update-grub以生成新的 grub 引导序列。

我在https://sites.google.com/site/marcshomesite/Home/linux-tuning上记录了我所有的 linux 修复/修改


Tak*_*kat 4

要自动启动 Windows 而无需从 GRUB 菜单中进行选择,我们需要使用/etc/default/grub类似于以下的值编辑该文件:

GRUB_DEFAULT= <number of default entry starting from 0>
GRUB_TIMEOUT= 0 # time in seconds to boot default
# GRUB_HIDDEN_TIMEOUT=0 # warning: activating this may lock you out from GRUB menu
Run Code Online (Sandbox Code Playgroud)

在编辑这些文件之前,最好对其进行备份。进行更改后,我们需要激活它们

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

GRUB_DEFAULT 的值取决于我们各自的系统。为了始终启动 Windows,我们也可以输入与 Grub 菜单中显示的条目名称完全相同的名称(例如"Microsoft Windows XP Professional"),而不是条目号。


重要提示:Shift在某些机器上,在启动时按住左键无法显示 GRUB 菜单(请参阅bug #425979)。因此,首先将 Ubuntu(而不是 Windows)设置为默认操作系统进行测试可能是个好主意。然后,如果您受到影响,您将能够轻松撤消 GRUB 设置。


pan*_*rma 2

安装grub优化器

sudo add-apt-repository ppa:danielrichter2007/grub-customizer

sudo apt-get update
sudo apt-get install grub-customizer
Run Code Online (Sandbox Code Playgroud)

Grub 定制器现在将显示在“应用程序”>“系统工具”菜单中。

或者您可以从命令行打开它。

gksudo grub 定制器

grub 选项中的图像

在此输入图像描述

  • 这能做什么而不能通过编辑 `etc/default/grub` 来完成? (3认同)
  • @Shasteriskt:它对于非英语人士、不熟悉命令行的人或只想使用计算机而不是乱搞配置文件的人来说可能很有用。 (3认同)