如何从 Ubuntu 重新启动到 Windows?

如何从 Ubuntu 重新启动到 Windows?

我正在寻找一种在 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

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

这将返回预期值,但重新启动时第一个菜单项仍会突出显示。您知道为什么这不起作用吗?或者有其他解决方案的建议吗?

答案1

  • 您必须先编辑您的 grub。

    sudo gedit /etc/default/grub
    
  • 搜索行GRUB_DEFAULT=0并将其修改为GRUB_DEFAULT=已保存 替代文本

  • 使用以下命令更新您的 grub。

    sudo update-grub  
    
  • 现在创建一个脚本文件,

    sudo gedit switch-to-windows.sh
    
  • 然后添加这些行。

    #!/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
    
  • 使脚本可执行。

    sudo chmod +x switch-to-windows.sh
    
  • 现在您可以从终端运行此脚本来重新启动进入 Windows。

    ./switch-to-windows.sh
    
  • 或者你可以在终端中执行以下命令

    sudo grub-reboot X  
    
  • 其中 X 是您想要从 GRUB 菜单重新启动的操作系统的菜单项位置。(以 0 开始作为第一个条目)

例如:

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

    替代文本

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

答案2

有一个 grub 命令可以做到这一点,它是grub-reboot

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

GRUB_DEFAULT=saved

然后更新 grub 配置文件:

sudo update-grub

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

现在,如果你想提前设置下次启动的系统,请使用

sudo grub-reboot ENTRY

其中ENTRY可以是相对于菜单项的数字(从 0 开始编号),也可以是精确的菜单项标题,例如

sudo grub-reboot "Microsoft Windows XP Professional (on /dev/sda1)"

此命令可轻松用作启动器

#!/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

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

您可以使用以下方式获取可用的菜单项标题

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

答案3

我认为我已经找到了一种更好的方法,适合那些想要在本地 PC 上不使用 ssh 进行相同操作的人。

webupd8 上刚刚发布了一个通过 Unity Launcher 选择重新启动到特定系统的解决方案。请参阅http://www.webupd8.org/2011/05/custom-unity-launcher-to-reboot-in.html

我知道这不是问题的真正含义,但如果以后有人有类似的问题,这可能会有所帮助。

答案4

相关内容