如何从 Ubuntu 重新启动到 Windows?

and*_*ing 36 reboot grub2 dual-boot

我正在寻找一种在 10.10/Vista 双引导系统上从 Ubuntu 重新启动到 Windows 的方法。具体用例是我希望能够通过 ssh 进入我正在运行的 Ubuntu 实例并发出一个命令,该命令将直接启动到 Windows 的重启。

我找到了一篇有前途的博客文章,但它建议的脚本不起作用:

#!/bin/bash

WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
sudo grub-reboot $MENU_NUMBER
sudo reboot
Run Code Online (Sandbox Code Playgroud)

man grub-reboot 没有多大帮助,但它似乎引导我朝着正确的方向前进:

为 GRUB 设置默认引导项,仅用于下次引导

WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
echo $MENU_NUMBER
Run Code Online (Sandbox Code Playgroud)

这将返回预期值,但在重新启动时,第一个菜单条目仍然突出显示。任何想法为什么这不起作用或其他解决方案的建议?

kar*_*k87 46

例如:

  • 如果这是您的 grub 菜单,并且您想启动到 Windows,您应该将 X 的值设置为 5。
  • sudo grub-reboot 5

    替代文字

  • 您还可以为上述命令创建一个启动器,以便双击启动器将重新启动到 Windows。

  • 你是怎么让 grub 变成这个样子的? (7认同)
  • 解决方案真的很棒,但是因为我有 14 个菜单条目,条目之前带有制表符,菜单条目编号的标题 insthead 效果更好。因此,您可以使用 #!/bin/bash WINDOWS_TITLE=`grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2` sudo grub-reboot "$WINDOWS_TITLE" sudo reboot 更改代码 (5认同)

enz*_*tib 12

有一个 grub 命令可以这样做,它是grub-reboot.

它似乎只在您将 grub 配置为从最后保存的条目开始时才有效。因此,如果您还没有这样做,请修改/etc/default/grub并设置

GRUB_DEFAULT=saved
Run Code Online (Sandbox Code Playgroud)

然后更新 grub 配置文件:

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

从现在开始,在每次启动时,grub 将启动最后使用的条目。

现在,如果您想预先设置下次启动的系统应该是什么,请使用

sudo grub-reboot ENTRY
Run Code Online (Sandbox Code Playgroud)

例如, whereENTRY可以是相对于菜单项的数字(从 0 开始编号),或确切的菜单项标题

sudo grub-reboot "Microsoft Windows XP Professional (on /dev/sda1)"
Run Code Online (Sandbox Code Playgroud)

此命令可以轻松用作启动器

#!/usr/bin/env xdg-open
#
# save as ~/Desktop/reboot-into-windows.desktop
#

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=sh -c 'gksu "grub-reboot 2" && gnome-session-save --shutdown-dialog'
Name=Reboot into Windows
Icon=gnome-panel-launcher
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将其集成到系统菜单中。

您可以使用以下命令获取可用的菜单项标题

sed -n '/menuentry/s/.*\(["'\''].*["'\'']\).*/\1/p' /boot/grub/grub.cfg 
Run Code Online (Sandbox Code Playgroud)