Windows起動時にHyper-Vの動作モードを選択できるようにした

# はじめに
仮想化基盤としてHyper-VをインストールしたWindows10マシンで、AndroidテストにBlueStackも使ってみたいと思ったのだが、どうも競合するらしくどちらかを無効にしないといけない...らしい。

どちらも再インストールするのは面倒なので、うまく切り替える方法はないかと模索したところ、ブートメニューで実現する方法があるらしいとのこと。バッチファイルで再起動を伴う切り替えも可能らしいのだが、今回はこのパターンでいいかな。


# 手順
<font color="red">※本操作はコマンドプロンプト(管理者)で行ってください。</font>

1.現在のブート構成データを確認する

```console:
C:\WINDOWS\system32>bcdedit

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
path                    \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {current}
resumeobject            {794a0188-6f30-11e8-933d-b1afbf92b104}
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        {794a018b-6f30-11e8-933d-b1afbf92b104}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {794a0188-6f30-11e8-933d-b1afbf92b104}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto
```

2.ブート構成データにHyper-V無効モードメニューを追加する

```console:
C:\WINDOWS\system32>bcdedit /copy {current} /d "Windows 10 (Hyper-v disabled)"
エントリは {794a018d-6f30-11e8-933d-b1afbf92b104} に正常にコピーされました。
```

3.ブート構成データ上で選択できる起動モードを確認する

```console:
C:\WINDOWS\system32>bcdedit

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
path                    \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {current}
resumeobject            {794a0188-6f30-11e8-933d-b1afbf92b104}
displayorder            {current}
                        {794a018d-6f30-11e8-933d-b1afbf92b104}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {794a018b-6f30-11e8-933d-b1afbf92b104}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {794a0188-6f30-11e8-933d-b1afbf92b104}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

Windows ブート ローダー
--------------------------------
identifier              {794a018d-6f30-11e8-933d-b1afbf92b104}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10 (Hyper-v disabled)
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {794a018b-6f30-11e8-933d-b1afbf92b104}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {794a0188-6f30-11e8-933d-b1afbf92b104}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Off

```


# 結果
再起動するとブートメニューが表示されるようになった。表示されるブートメニューにて起動モードを選択すると、Windows10がそのモードで起動しなおすようになった。

<font color="red">※ブート選択メニューにて、タイムアウト時間が超過すると"Windows boot manager"の"default"値に設定されているブートメニューが選択されます。とデフォルトのブートオーダーが実行される。</font>


# 参考
- Windows10でマルチブート/デュアルブート起動時のオペレーティングシステム(OS)名称を変更する https://www.billionwallet.com/goods/windows10/win10_boot_name.html
- ブートメニューでHyper-Vの有効化のON/OFFを簡単に切り替える http://fly1tkg.hatenablog.jp/entry/2017/09/06/084121
- Microsoft BCDEditのコマンドラインオプション https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/bcdedit-command-line-options