web-dev-qa-db-ja.com

grubがWindowsからWindowsに自動的に再起動する方法はありますか?

デュアルブートセットアップがあります。

  1. Ubuntu 16.04 LTS

現在、UbuntuからrebootをWindowsにしたいときは、grub-rebootを適切な番号を引数として使用します。これはうまく機能します。

ただし、特定のプログラムをインストールまたは更新できるようにWindowsを再起動する必要がある場合があり、適切なgrubブートメニューエントリを手動で選択する必要があります。どのエントリをブートするかをgrubに指示する(Windows UIから)同様の方法はありますか?

grub-rebootコマンドが引数をファイルに渡し、そのファイルがrebootに対してgrubによって読み取られると仮定します。

編集(選択した回答に関して):現在、/ bootを含むext4ドライブのマウントと編集のスクリプト化を検討しています。週に40時間の非技術系の仕事とは別に自由な時間にこれをやっているので、これにはおそらくかなり時間がかかるでしょう。 ^^

11
amon san

grub-rebootの機能を複製できます。最終的に呼び出すスクリプトにすぎません:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Windowsは、grubメニューエントリの名前です。それではないかもしれない

走った。 next_entry=Windows/boot/grub/grubenvに挿入します。 2行目で、もしそれがファイルの場合、ファイルシステムでは、Windowsの中からまったく同じことを行うことができます。解決するのはWindowsの問題ですが、概要は次のとおりです。

  • ブートが存在するディスクをマウントします。これはおそらくext4であるため、おそらく最も難しいビットです。 これ は役立つかもしれませんが、編集するためにWindowsでLinuxを実行する必要があるかもしれません。

    Muruが指摘しているように、それほど難しいことは必要ありません。 /bootを独自のFAT32パーティションに移動できます 。これにより、Windowsでのマウントが簡単になります。

  • next_entry=Windows(または何でも)をコメントの後で、ハッシュの前に挿入します。

  • アンマウントします。
  • リブート。

Windowsでののスクリプティングは、私の快適ゾーンの外にあり、実際にここで行っていることではありません。しかし、あなたがする必要があるのはそれだけです。

8
Oli

最も簡単な方法はGrubを使用することです

Windowsからgrubを制御するのは面倒です。 WindowsからUbuntuにアクセスするためのサードパーティアプリケーションといくつかのハッキングが必要です。ただし、この投稿の上部から: デュアルブートディストリビューションの順序を変更する方法 では、grubをセットアップして、最後のメニューオプションに自動的にリブートできます。したがって、最初にWindowsで起動し、午前2時に起動して更新を実行すると、grubはWindowsをリロードするため、更新を正常に終了できます。

手動で再起動してgrubからUbuntuを選択すると、次回のすべての再起動でUbuntuが自動的にロードされます。現在のカーネルにバグがあり、grubを選択した古いカーネルバージョンに自動的に再起動する場合、この機能は同様に機能します。

Grubに最後のブート選択を繰り返す方法

これはかなり簡単です。 Sudoを使用すると、編集/etc/default/grubが強化され、以下が変更されます。

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

コメントアウトする最初の行とそのすぐ下に、次の2行が挿入されます。

ファイルを保存し、ターミナルに入力します。

Sudo update-grub

Windowsを再起動するUbuntuコマンドライン

現在、次のようなものを使用しています。

Sudo grub-reboot x # Where x is Windows zero-based grub menu number
Sudo reboot now

この変更されたStack Exchangeから answer grubのデフォルトを使用してWindowsを再起動できます。このコードを~/.bashrcファイルにコピーします。

function reboot-to-windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    Sudo grub-set-default "$WINDOWS_TITLE"
    Sudo reboot
}
  • ~/.bashrcファイルを新しいreboot-to-windows関数で保存します。
  • 現在のターミナルセッションを閉じます。
  • ロードされる変更された~/.bashrcの新しいターミナルセッションを開きます。
  • : ~/.bashrcと入力して既存のターミナルセッションにリロードできますが、一部の人はこれをしないことをお勧めします。

コマンドラインからWindowsを再起動するには、次を使用します。

reboot-to-windows

見ていないときにWindowsが自動的に再起動すると、Windowsが再起動されます。これにより、Windowsが時々使用する複数の再起動サイクルでWindowsの自動更新を正常に処理できます。

19

grub-set-defaultはgrub-rebootと同じですが、設定を永続的にする必要があります。これは、あなたが尋ねたように、Windows UIからではありませんが、おそらくあなたのために機能します。

2
Sebastian Stark

Windowsのバージョンや、UEFIを使用しているかどうかについてはまだ言及していません。

適切なUEFIブート(レガシーブートではなく)を使用している場合、Windows UEFIブートエントリから一時的にブートすることができます。 Linuxでは、これはefibootmgrなどのツールを使用して実行できます。 Windowsでは、個人的に EasyUEFI を使用します。個人的なGUIの使用は無料ですが、エンタープライズまたはCLIの使用は無料ではありません。その安全性を保証することはできません。また、やや遅いようですが、動作するようです

Arch Linux(GRUBなしのカーネルEFIシム)とWindows 10を使用する私自身のセットアップでは、開始画面で[Manage EFI Boot Option]を選択すると、次のようになります。

Image showing one-time boot option

UEFIブートを使用している場合、Windowsに似たものに加えて、Ubuntu(GRUBをロードする)の単一のエントリ、およびその他のデバイス固有のオプションが表示されます。ワンタイムブートオプションを使用して、WindowsのUEFIブートエントリを1回ブートし、その後GRUBブートに戻るように設定できます。それを設定した後、通常どおり再起動します。

1
muru