考虑以下双启动设置:
- Grub 安装到
/dev/sda
/dev/sda1
安装为/boot
/dev/sda6
安装为/
- Windows 10 安装至
/dev/sdb2
目前,Grub 启动时默认选择 Ubuntu,我可以通过 SSH 远程登录。Grub 启动时也可以选择 Windows,我可以通过 RDP 远程登录。
问题是当我不在场时我无法选择启动哪个操作系统。
这个问题描述了一种让 Grub 自动启动最后选择的操作系统的方法。然而,这行不通。如果我选择 Windows,我就无法远程重启 PC 并启动 Ubuntu。
有没有办法可以远程控制启动哪个操作系统?
答案1
我们可以使用以下命令重新启动到给定的 Grub 菜单启动项grub 重新启动。这也可以通过远程会话(例如通过 SSH)完成。
要启动另一个操作系统,请选择它在 Grub 菜单中所示的位置,从以下位置开始0
:
sudo grub-reboot <num>
在这种情况下,我的 Windows 处于打开状态4
。因此,当发出
sudo grub-reboot 4 && sudo reboot
在我们在 Grub 设置中定义的超时时间过后,机器将重新启动到 Windows。
从 Windows 重新启动后,机器将启动到默认操作系统。这可以使用以下方式定义
sudo grub-set-default <num>
为了使其工作,我们可能必须GRUB_DEFAULT=saved
在我们的系统中定义/etc/default/grub
,但在我的系统中,它也使用默认设置。
遗憾的是,无法通过此方式从 Windows 重新启动 Windows。
答案2
另一个想法感谢takkat 的回答:
- 默认启动是 Ubuntu
grub-reboot N
N
Windows 启动项在哪里- 重新启动 Windows 将带您回到默认启动:Ubuntu。
坏处:要重新启动 Windows,您必须重新启动两次:重新启动 Windows,让 Ubuntu 启动,然后grub-reboot N
再次启动! :-(
答案3
您可以根据时间使用 grub 设置默认操作系统,请参阅GRUB 可以安排吗?这意味着:在定义的时间段内自动更改默认的“条目”(自动登录)?。例如,您可以将 grub 配置为在 $MINUTE 为奇数时启动 Windows,在 $MINUTE 为偶数时启动 Linux。
insmod datehook
if [ $MINUTE -eq 0 -o $MINUTE -eq 2 -o $MINUTE -eq 4 -o $MINUTE -eq 6 -o $MINUTE -eq 8]; then
set default="Ubuntu"
else
set default="Windows"
fi
如果您想要一个特定的操作系统;只需等待它的到来。
使用此方法应考虑到达 Grub 所需的时间。使用 5 分钟的时间范围可能更可靠。
我认为也可以在启动项之间进行切换。例如:
if [ $default = "Ubuntu" ]; then
set default="Windows"
else
set default="Ubuntu"
fi
当 grub 配置为记住上次启动的操作系统时(如何让 grub2 记住最后的选择?)
如果您的电脑没有启动到您想要的操作系统,只需重新启动即可。