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
これは期待値を返しますが、再起動時に最初のメニューエントリが強調表示されたままになります。これが機能しない理由や他のソリューションへの提案はありますか?
最初にGRUBを編集する必要があります。
Sudo gedit /etc/default/grub
GRUB_DEFAULT =の行を検索し、それを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メニューから再起動するOSのメニューエントリ位置です(最初のエントリとして0から開始)。
例:
Sudo grub-reboot 5
そうするための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
ローカルでsshなしで同じことをしたい人のために、より良い方法を見つけたと思います。
ユニティランチャーを通じて選択された特定のシステムに再起動するソリューションがwebupd8に投稿されました。 http://www.webupd8.org/2011/05/custom-unity-launcher-to-reboot-in.html を参照してください
私はこれが質問の正確な意味ではないことを知っていますが、誰かが後で同様の質問をした場合、これは役に立つかもしれません。
私が理解している限り、これはあなたが望むものとは正確に異なりますが、私はかなり近いと思います。リンクをたどるだけ webupdate article 。
だから私にとっては、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