web-dev-qa-db-ja.com

電源を切るのではなく、休止状態のときにWindows 7を再起動するように説得するにはどうすればよいですか?

PCにLinuxとWindows7のデュアルブートセットアップがあり、1つのOSで作業しているときに、休止状態(状態をディスクに保存)、再起動、他のOSの使用、再起動ができるようにOSを構成したいと思います。完了したら、中断したところから最初のOSの使用を再開します。ここで重要な要素は、電源を切るのではなく、状態をディスクに保存した後、各OSを再起動することです。それ以外の場合は、その間にコンピュータの電源を入れ直す必要があり、非常に面倒です。これを行うようにLinuxを構成するのは簡単であることを私はよく知っています( この質問 を参照)。ただし、Windows 7に同じことを実行するように指示する方法がわかりません。つまり、電源を入れる代わりに、メモリの内容をディスクに保存し終えた後にPCを再起動します。通常の休止状態の場合と同じようにオフにします。

これを行う方法はありますか?

4
jgottula

私もこれを行うためのクリーンな方法を探していましたが、まだ見つけていません。他の人が興味を持っているかもしれませんが、私は少しハックを見つけました...

ハッキングの鍵は、Microsoftのxbootmgrツールです。このツールは、主に開発者がタイミング情報を収集して、起動が遅くなっている原因を特定するために設計されています。追加のボーナスとして、休止状態になると自動的に再起動するようにシステムを接続します。このツールは、 Windows SDK を介してインストールするWindowsパフォーマンスツールの一部です。少なくとも私のシステムでは、システムがサスペンド状態から復帰するのに約1分かかります。これは少し面倒ですが、機能します。 YMMV。

他の人が言及しているように、休止状態になったら、LinuxにNTFS R/Wをマウントしようとしないでください。

私の経験は、UEFIベースの起動です。これは理論的にはMBR/BIOSベースのブートローダーで機能するはずですが、そのブートローダーの「自動再開」機能を回避するには、MBRでGRUBまたはその他のWindows以外のブートローダーを使用する必要があります(休止状態のシステムを検出すると、Linux用に追加した他のブートオプションはすべて無視されます。)grub/MBRルートを使用する場合は、grub-rebootコマンドを確認して、1回のブートサイクルでWindowsにポップオーバーします。

Windowsプライマリを使用したUEFI

ほとんどの時間をWindowsで過ごし、それをデフォルトの起動オプションとして設定している場合は、Linuxインストールを「1回起動」に切り替えるためのWindows側のツールが必要になります EasyUEFI 。 Linuxを休止状態にして再起動する場合は、一度起動するように切り替えます。

Boot-onceフラグを切り替えた後、管理者として次のコマンドを実行します。

xbootmgr -trace hibernate

正しく配線した場合は、Linux環境で1回だけ終了する必要があります。もう一度再起動すると、以前の休止状態から再開されたウィンドウに戻ります。

Linuxプライマリを使用したUEFI

ほとんどの時間をLinuxで過ごし、それをプライマリブートオプションとして配線している場合は、上記のWindows側のUEFIツールをスキップできます。代わりに、efibootmgrのようなものを使用します。まず、どのブートエントリがWindowsにマップされているかを把握する必要があります。ただ走れ

Sudo efibootmgr

そして、あなたはこのようなものを見るでしょう:

BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001
Boot0000* ubuntu
Boot0001* Windows Boot Manager

次に、Windowsを1回起動するように設定するには、次のものと一致する番号(私の例では0001)を使用します。

Sudo efibootmgr --bootnext 0001

次に、先に進んでLinuxから休止状態/再起動すると、Windowsに一度着陸します。Linuxに戻る準備ができたら、Windows側でxbootmgrを実行してそこで休止状態にします。これにより、二。

1
dhiltgen

Windowsは、マシン上にWindows以外のオペレーティングシステムが他にないと常に想定しているため、やりたいことができません。

Windowsブートローダー(NTLDRまたはBOOTMGRに関係なく)がMBRにインストールされている限り、休止状態の後にマシンを(再)起動すると、常にディスク上の休止状態データから再開され、起動するOSを選択するように求められません。これは、休止状態のOSにマウントされたボリュームを他のOSまたは環境からマウントすることは未定義の動作であるためです。最良の場合、Linuxまたは別のWindowsインストールでボリュームの1つをマウントした後に休止状態のOSを起動しようとすると、休止状態データが無効であると検出され、起動を拒否します。最悪のシナリオでは、休止状態ストアから起動し、メモリとディスクのファイルシステムデータに一貫性がなく、ボリュームが修復できないほど破損している可能性があります(これに関する経験から話します)。

そのため、Windowsは(ある程度正しく)休止状態の後に(シャットダウンする代わりに)再起動しても意味がないと想定します。これは、マシンが休止状態の前と同じ状態になり、何も達成されず、5分の時間が失われるためです。 。

もちろん、非BOOTMGR/NTLDRブートローダーがMBRにインストールされている場合は、Windowsの休止状態と別のOSの起動を実行できます(ただし、休止状態のOSまたは現在休止状態のOSでマウントされたボリュームを変更することはできません。そうしないと、重大なデータ損失のリスクがあります)。しかし、Windowsはこれについて何も知りません(これが意図的に無視されているかどうかは別の日のトピックです)。つまり、私たちがやろうとしていることは、ある種の(準)仮想化環境なしでは不可能であるということです。

OSを頻繁に切り替えて元の場所に戻ろうとしている場合は、VMwareワークステーションまたはES(I | X)を使用して、一度に複数のOSを起動することを検討してください。それ以外の場合、@ WillGunnが提案したようなKVMソリューションは悪いオプションではありません。

1

ほとんどの場合Linuxを使用しているが、Linuxで行っている作業が集中的でない場合は、KVMスイッチを備えたセカンダリコンピューターを使用して、2つを切り替えることができます。

ハイバネーション(S4)は、メモリの内容をハードドライブに書き込みます。電源が失われた場合、休止状態ファイルから自身を復元できます。いつでも強制的に電力損失を発生させることができます。つまり、休止状態へのシャットダウンが終了したら切断し、起動時にLinuxを選択します。

0
Will Gunn

この質問が出されてから何年も経ちましたが、それでも「複雑な」解決策を書き留めたかったのです。私の設定は次のとおりです。

  1. コンピューターはgrub2を介して起動しており、デフォルトでFedoraを起動しています。
  2. Fedoraでは、grubメニューのエントリを一度変更して、次回Windowsでコンピュータを再起動することができます。
  3. WindowsとLinuxの両方に、休止状態にするコマンドを与えることができます。
  4. コンピューターの電源を入れるために、コンピューターの電源ボタンと並列に接続されたESP8266回路があります。 ESP8266は、電源の+ 5Vスタンバイから電力を取得します。ローカルネットワークに接続されたRaspberryPiは、電源ボタンを押すWi-Fi信号を送信します。これは、ウェイクアップの場合は短く押すか、ハードリセットの場合は長押しします。

このインフラストラクチャが整っているので、オペレーティングシステムを切り替えて、ローカルとリモートの両方で起動できます。

0
Dov Grobgeld