澄清一下,我想要双启动 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.d
Ubuntu 上)
我建议进行更改脚本强制 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 之类的东西。钱包里非常有用的东西:)