如何远程控制 Grub 启动哪个操作系统?

如何远程控制 Grub 启动哪个操作系统?

考虑以下双启动设置:

  • 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 的回答

  1. 默认启动是 Ubuntu
  2. grub-reboot NNWindows 启动项在哪里
  3. 重新启动 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 记住最后的选择?

如果您的电脑没有启动到您想要的操作系统,只需重新启动即可。

相关内容