如何配置 grub(或不同的引导加载程序)以使用修饰键?

如何配置 grub(或不同的引导加载程序)以使用修饰键?

澄清一下,我想要双启动 Windows 和 Linux 发行版。我已经知道如何设置我的笔记本电脑来做到这一点。但是,我不希望在启动时显示 grub 菜单。我希望它默认自动启动 Windows,除非在启动时按下修饰键(例如 ctrl)。如果按下修饰键,它将启动 Linux 发行版。

这可能吗?

答案1

AskUbuntu 上的这个帖子解决了几乎相同的问题。显然,您可以隐藏 grub 对话框并通过按 来调出它shift,否则让默认操作系统GRUB_TIMEOUT在您通过 grub.cfg 中的条目定义的时间后启动。

GRUB_DEFAULT= 2 #depends on which entry Windows is
hiddenmenu #this hides the menu
GRUB_TIMEOUT=3 #example for 3 seconds

答案2

正如您在评论中所写,这是新安装的,所以我认为它将附带GRUB2

事实上,根据我的经验,始终使用 grub1 启动 Windows 是很困难的。将新内核添加到可供选择的内核版本列表中(例如,在 Linux 内核升级之后),将更改 Windows 条目的位置。这会导致硬编码GRUB_DEFAULT指向其他内容(最常见的是 grub installre 在 Linux 内核列表和列表中的 Windows 条目之间插入的内存测试)。在 grub1 中,我通过一个脚本清除了除最新 3 个内核之外的所有内核,从而解决了这个问题,从而保持 Windows 位置固定。

因此,请确保使用 grub2,因为它具有以下两个功能,使事情变得更容易:

  • grub2 允许子菜单,以便GRUB_DEFAULT内核升级后(将旧内核推送到子菜单中)后 的值不会变得无效
  • grub2 通过以下方式生成菜单项脚本(在/etc/grub.dUbuntu 上)

我建议进行更改脚本强制 Windows 成为菜单中的第一个选项:在/etc/grub.d重命名30_os-prober(生成 Windows 条目)中将其命名为09_os-prober.然后先执行此脚本,10_linux因为脚本是按文件名排序执行的,并且 Windows 条目将始终位于顶部。如果没有指定其他内容,顶部就是默认值。

运行update-grub以在 中创建菜单/boot/grub,以便始终启动 Windows。

至于没有不显示的菜单你想使用GRUB_HIDDEN_TIMEOUT和其他一些/etc/grub/default

# wait 5 seconds for a key-press before showing the menu
GRUB_HIDDEN_TIMEOUT=5
# do not show the countdown counter
GRUB_HIDDEN_TIMEOUT_QUIET=true
# after hidden timeout is done wait 0 seconds -> boot without menu
GRUB_TIMEOUT=0

上述组合等待 5 秒,没有输出(倒计时)或菜单,然后启动第一个条目。 (再次:update-grub更改后运行)。

答案3

在 Grub2 中:

set timeout=0
if keystatus --ctrl; then
    set timeout=15
fi

如果按下ctrl,则会显示菜单15秒,然后启动标准条目;如果不按 ctrl,它将立即启动标准条目,而无需任何菜单。

有关详细信息,请info grub参阅 keystatus。有一些警告,它可能不适用于所有平台。除了 --ctrl 之外,它还支持 --alt 和 --shift,因此您可以尝试那些应该 --ctrl 不起作用的选项。

或者,您可以将 Grub 放在 USB 记忆棒上。因此,Windows 在未插入电源时会直接启动。您还可以在 U 盘上放置几张 Live CD 以及 memtest 或 freedos 之类的东西。钱包里非常有用的东西:)

相关内容