web-dev-qa-db-ja.com

UbuntuからWindowsを再起動する方法は?

10.10/VistaデュアルブートシステムでUbuntuからWindowsを再起動する方法を探しています。具体的なユースケースは、実行中のUbuntuインスタンスにsshを実行し、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

これは期待値を返しますが、再起動時に最初のメニューエントリが強調表示されたままになります。これが機能しない理由や他のソリューションへの提案はありますか?

34
andrewsomething
  • 最初にGRUBを編集する必要があります。

    Sudo gedit /etc/default/grub
    
  • GRUB_DEFAULT =の行を検索し、それをGRUB_DEFAULT = savedに変更します alt text

  • 次のコマンドを使用して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

    alt text

  • 上記のコマンド用のランチャーを作成して、ランチャーをダブルクリックするとウィンドウが再起動されるようにすることもできます。
43
karthick87

そうするためのgrubコマンドがあります。それはgrub-rebootです。

Grubが最後に保存されたエントリから開始するように設定されている場合にのみ機能するようです。まだ行っていない場合は、/etc/default/grubを変更して設定します

GRUB_DEFAULT=saved

次に、grub構成ファイルを更新します。

Sudo update-grub

これ以降、各ブートgrubで最後に使用されたエントリが開始されます。

次回起動するシステムを事前に設定する場合は、次を使用します。

Sudo grub-reboot ENTRY

ENTRYは、メニューエントリに関連する番号(0から始まる番号)、またはexactメニューエントリのタイトルなどです。

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 
12
enzotib

ローカルでsshなしで同じことをしたい人のために、より良い方法を見つけたと思います。

ユニティランチャーを通じて選択された特定のシステムに再起動するソリューションがwebupd8に投稿されました。 http://www.webupd8.org/2011/05/custom-unity-launcher-to-reboot-in.html を参照してください

私はこれが質問の正確な意味ではないことを知っていますが、誰かが後で同様の質問をした場合、これは役に立つかもしれません。

4
K. Hendrik

私が理解している限り、これはあなたが望むものとは正確に異なりますが、私はかなり近いと思います。リンクをたどるだけ webupdate article

3
dago

だから私にとっては、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
2

みんなの情報は私にとっては役に立ちましたが、結局、grubのデフォルトを変更してワンクリックで再起動することはできませんでした。 2時間いじくり回した後、私たちは全員が構築しようとしているのとまったく同じものであるこのプログラムを発見し、5分後にWindowsを再起動しています。みなさん、ありがとうございます http://www.webupd8.org/2013/01/unity-reboot-launcher-to-quickly-reboot.html

0
Mickey Brown