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
」と入力してシステム構成ツールを開く
2. [ブート]タブにて、作成した「no Hyper-V」を選択し、[既定値に設定する]をクリックして[OK]で保存
これでデフォルトのブートモードが変更できました。
いずれのやり方でも一瞬。簡単。