我正在寻找一种在 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
我知道这不是问题的真正含义,但如果以后有人有类似的问题,这可能会有所帮助。