Win10 Hyper-Vを無効にした起動設定の作り方

VagrantとVirtualBoxでローカルの開発環境を構築している人向けです。

Hyper-V

Win10 Proで使えるようになった仮想化システム「Hyper-V」、つよそうですよね。

Dockerとかと組み合わせると捗りそうな代物です。

ところで、Hyper-Vが有効化されていると、VirtualBoxと競合してうまく動かなかったりしませんか?

VirtualBoxのアプデでHyper-Vとの共存が可能になったという話もありましたが、アプデしたり環境を再び整えるのが面倒くさい(環境が壊れる懸念もある)そこのあなたにこちらの記事をプレゼント。

Hyper-Vを都合よく手軽に無効にしたい

単に有効化と無効化を切り替えるだけであれば、コントロールパネル > プログラム > Windowsの機能の有効化または無効化から切り替えて再起動するだけですが、切り替えの度にいちいち設定画面を出すのがだるい。デフォで無効にしておきたい。PC起動時に選択できるようにしてくれ。というニーズがあるはずです。

できます。

Hyper-Vを無効にした状態で起動するブートモードの作り方

参考: Windowsのbcdeditでブートメニューの項目を追加する:Tech TIPS – @IT
参考: 他の仮想環境を利用するためにHyper-Vを一時的に無効にする:Tech TIPS – @IT

cmd.exeを管理者権限で開き、下記の手順を実施します。

1. 現状の確認

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {current}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

2. 起動設定の複製

新しい起動設定はno Hyper-Vという名前で作成することにしました。

C:\WINDOWS\system32>bcdedit /copy {current} /d "no Hyper-V"
エントリは {e005d750-4ee8-11ea-87f9-c9149b72445e} に正常にコピーされました。

起動設定が複製されていることを確認します。
新しいブートローダーが登録され、ブートマネージャーのdisplayorderの項目にも値が増えています。
説明文(description)以外はすべて元のコピーになっています。

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {c78ef55b-4ee8-11ea-8e1c-a5b3457f836d}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
                        {e005d750-4ee8-11ea-87f9-c9149b72445e}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

Windows ブート ローダー
--------------------------------
identifier              {e005d750-4ee8-11ea-87f9-c9149b72445e}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             no Hyper-V
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

3. Hyper-Vを無効化

C:\WINDOWS\system32>bcdedit /set {e005d750-4ee8-11ea-87f9-c9149b72445e} hypervisorlaunchtype off
この操作を正しく終了しました。

変更の結果を確認

C:\WINDOWS\system32>bcdedit
(略)

Windows ブート ローダー
--------------------------------
identifier              {e005d750-4ee8-11ea-87f9-c9149b72445e}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             no Hyper-V
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    off

hypervisorlaunchtypeの項目がoffに変化していることがわかります。

※ 有効化するときは、onではなくauto

C:\WINDOWS\system32>bcdedit /set {e005d750-4ee8-11ea-87f9-c9149b72445e} hypervisorlaunchtype Auto

これにて、Hyper-Vを無効にした状態で起動するブートモードの作成ができました。

PCを再起動すると、「オペレーティングシステムの選択」画面が出て、どちらのブートモードで起動するか選ぶことができるようになります。

※デフォルトでは、選択せずに30秒経過すると自動的に優先度の高いブートモードで起動します。
※デフォルトのモードを変更したい場合は、ブートモード選択画面下部の「規定の起動設定やその他オプションの変更」から設定することもできますが、このままコマンドライン上で設定することもできます。

ブートモードの優先順位を変更

「出社したら勝手に再起動されてんだけどウケるw」という事故はしばしば発生いたします。

せっかくHyper-Vを無効にしたブートモードを作っておいても、勝手に起動するときにはデフォルトのブートモードで立ち上がってしまいます。厄介ですね。

というわけで、ブートモードの優先順位を変更します。

やり方は大きく2通り

それぞれ手順を説明します。

bcdeditコマンドによる変更

現状の確認

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {current}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
                        {e005d750-4ee8-11ea-87f9-c9149b72445e}
toolsdisplayorder       {memdiag}
timeout                 30

(略)

デフォルトのブートモードを変更

C:\WINDOWS\system32>bcdedit /default {e005d750-4ee8-11ea-87f9-c9149b72445e}
この操作を正しく終了しました。

変更後の確認

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {default}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
                        {default}
toolsdisplayorder       {memdiag}
timeout                 30

(略)

これでデフォルトのブートモードが変更できました。

システム構成ツールによる変更

1. Windowsキーを押し、「msconfig」と入力してシステム構成ツールを開く

「システム構成ツール」とか
「System Configuration」とか

2. [ブート]タブにて、作成した「no Hyper-V」を選択し、[既定値に設定する]をクリックして[OK]で保存

これでデフォルトのブートモードが変更できました。

いずれのやり方でも一瞬。簡単。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です