如何从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 

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

  • 你必须先编辑你的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菜单重新启动的OS的菜单对齐位置。(从0开始作为第一个条目)

例如:

  • 如果这是你的grub菜单,如果你想启动到Windows,你应该给X的值为5。
  • sudo grub-reboot 5

    替代文字

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

有一个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 

我想我已经找到了一个更好的方式,让那些想要在没有ssh的情况下在他们的电脑本地使用相同的人。

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

我知道这不是问题所在,但如果有人后来有类似的问题,这可能会有所帮助。

据我所知,这不是你想要的,但我猜的非常接近。 只需点击链接webupdate文章即可 。

所以对我来说最好是用grub-reboot命令创建以下脚本

 #!/bin/bash WINDOWS_TITLE=$(grep -i 'windows' /boot/grub/grub.cfg|grep "^[^#;]"|cut -d"'" -f2) sudo grub-reboot "$WINDOWS_TITLE" echo "Your computer will reboot on ${WINDOWS_TITLE} in 3 seconds, press Ctrl+C if you want to abord it" sleep 3 && sudo reboot 

每个人的信息对我都有帮助,但最后我仍然无法完成更改grub默认值,然后只需单击一下即可重新启动。 经过2个小时的修补后,我发现这个程序与我们都在尝试构建完全相同的东西,在5分钟内我重新启动进入Windows。 谢谢大家,这里也是那些放弃的骗子。 http://www.webupd8.org/2013/01/unity-reboot-launcher-to-quickly-reboot.html

我不确定这100%是否也可以在ubuntu中运行,但我曾经在一台centos机上完成了这项工作

基本上你必须告诉grub grub.conf中哪个id#它应该运行下一个。 id#可以找到

 echo `sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:`-1 

所以在我的情况下,这将输出“4-1”,因为我的grub.conf中的第四个条目包含文本“Windows”。 (将其替换为您要使用的实际条目名称(也部分名称)。然后您可以将其提供给grub,如:

 echo "savedefault --stage2=/boot/grub/stage2 --default=4-1 --once" | sudo /sbin/grub 

并且在下次重新启动时,它应该自动启动您告诉它的条目。

这一切都可以放在如下的脚本中:

 #!/bin/sh let NEWBOOT=`sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:`-1 echo Booting $NEWBOOT - `sudo grep ^title.\*Windows /boot/grub/grub.conf` echo "savedefault --stage2=/boot/grub/stage2 --default=$NEWBOOT --once" | sudo /sbin/grub sudo reboot 

该脚本将自动确定您的grub.conf中的哪个条目对应于文本“Windows”,将其提供给grub以告知下次启动时应该加载什么并重启您的电脑。

对于一个gui你可以例如在你的桌面上添加一个快捷方式图标来实现这个目标。

只需编辑/boot/grub/grub.cfg并将默认条目更改为指向要引导的条目。 该值可以是条目的序数(从第一个的零开始),也可以将所需条目的完整标题放在引号中。