问题描述
我正在寻找一种在10.10 /Vista双启动系统上从Ubuntu重启进入Windows的方法。具体的用例是,我希望能够通过ssh进入正在运行的Ubuntu实例,并发出将直接启动重新启动到Windows的命令。
我找到了a promising blog post,但是它建议的脚本不起作用:
#!/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
并没有多大帮助,但似乎可以将我引向正确的方向:
set the default boot entry for GRUB, for the next boot only
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 = saved
-
使用以下命令更新您的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。
次佳回答
有一个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而不使用SSH的用户来说,我找到了一种更好的方法。
重新启动到通过统一启动器选择的特定系统的解决方案刚刚发布在webupd8上。参见http://www.webupd8.org/2011/05/custom-unity-launcher-to-reboot-in.html
我知道这并不是问题的实质,但是如果以后有人遇到类似的问题,这可能会有所帮助。
第四种回答
据我了解,这不是您想要的,但我想还很接近。只需点击链接webupdate article。