WSL2をインストールして使うときの注意点

[WSL Advent Calendar 2020](https://qiita.com/advent-calendar/2020/wsl)の1日目です。軽い記事。

基本的な手順は、公式ドキュメント「[Windows 10 用 Windows Subsystem for Linux のインストール ガイド](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)」に従います。

## BIOSで仮想化支援技術 （VT-xなど） を有効化しましょう

有効化されてるかどうかわからない人は、タスクマネージャー （Ctrl+Shift+Esc） を確認しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2079/a76147c6-690a-dacb-1c6f-bd1d8a239afe.png)

「パフォーマンス」タブの「CPU」を見ると、「仮想化」という項目があり、有効になっているか無効になっているかがわかります。

新しいマシンを購入した時などは無効になっていることもあるかと思います。そんなときはPCを再起動してBIOSメニューを開いてください。
多くの場合は、起動時に特定のファンクションキーを押す（連打する）ことで起動しますが、Windows 10をUEFIモードでブートしている場合は以下のどれかの方法で確実にUEFI BIOSメニューを表示させられます。

- コマンドライン (PowerShellまたはコマンドプロンプト) で `shutdown /r /fw`を実行する （`/fw`オプションが重要）
- 「設定」アプリを起動して、「更新とセキュリティ」→「回復」→「今すぐ再起動する」ボタンを押す  
   「オプションの選択」という青い画面が開いたら「トラブルシューティング」→「詳細オプション」→「UEFIファームウェアの設定」を押す

どちらの場合でもPCが再起動して、UEFI BIOS設定画面が開きます。

BIOS設定画面の内容はマシン（マザーボード）によって違いますが、キーワードとしては「Advanced」「Security」「Chipset」「Processor」「Virtualization」などのメニューを開いていくと、「Intel Virtualization Technology (VT-x)」や「Intel VT-d」などが見つかるでしょう。
WSL2を動かすためには、最低でも「Virtualization Technology (VT-x)」を「Enabled」にする必要があります。

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2079/59c91097-7b26-b913-2965-c6f6ce885ca2.png)](https://support.hp.com/jp-ja/document/c04773368)

## 「仮想マシンプラットフォーム」を有効にしましょう

[公式ドキュメントにある通り、管理者権限のコマンドライン一発](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#step-3---enable-virtual-machine-feature)でもいいですが、GUIで設定する場合は、以下のどれかの方法で「Windows の機能の有効化または無効化」を開きます。

- コントロールパネルを表示して、「プログラム」→「Windows の機能の有効化または無効化」と辿る
- 「ファイル名を指定して実行(Windows + rキー)」のダイアログに「OptionalFeatures.exe」と入力する
- 設定アプリの検索ボックスに「Windows の機能[^1]」と入力する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2079/40844b7b-5059-3ba7-c5b9-cd23822879f9.png)

[^1]: 「Windows 」の後ろに半角スペースを入れる

「Windows の機能の有効化または無効化」が開いたら、たぶん下の方にスクロールしていくと「仮想マシンプラットフォーム」のチェックボックスがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2079/46f51583-6c69-f500-f867-c110228eeba9.png)

ちなみに、Insider Preview Build 20246からは `wsl --install` コマンドを使うと、仮想マシンプラットフォームの有効化も同時にしてくれるようです。

[“wsl --install”で「WSL」を一発セットアップ ～Dev版「Windows 10」Build 20246 - 窓の杜](https://forest.watch.impress.co.jp/docs/news/1286230.html)

## 仮想化技術を使った他のアプリと同居するには「Windows ハイパーバイザー プラットフォーム」も有効にしましょう

「Windows ハイパーバイザー プラットフォーム」とは何か、が知りたい人は[2019年のアドベントカレンダーに記事を書いた](https://qiita.com/matarillo/items/ca1eecf8f9a3cd76f9ce#windows-%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%90%E3%82%A4%E3%82%B6%E3%83%BC-%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0)のでそちらを見てください。

以下のどれかの方法で有効にします。

- 管理者権限のコマンドラインで `dism.exe /online /enable-feature /featurename:HypervisorPlatform /all /norestart`
- 「Windows の機能の有効化または無効化」で「Windows ハイパーバイザー プラットフォーム」にチェック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2079/015e86b1-4487-269a-20ac-6493a83ce119.png)

### Android Emulator

HAXMやAMDプロセッサー用Hypervisor Driverは使えませんので注意。

[Windows Hypervisor Platform を使用する VM アクセラレーションを設定する](https://developer.android.com/studio/run/emulator-acceleration?hl=ja#vm-windows-whpx)

### Oracle VirtualBox

VirtualBox 6.1以降からは、特に設定変更しなくても「Windows ハイパーバイザー プラットフォーム」を利用して動作するらしいです。~~明示的に設定する場合は「システム」→「アクセラレーション」で、「準仮想化インターフェース」を「Hyper-V」にしましょう。~~

ただ、私の環境だとLinux仮想マシンが上手く起動しません。

どうやら、CPUが古いとか、Windows 10 Insider Previewを使っているとか、そういったことによってうまく動かないことはあるようです。

（2021/9/2　追記）VirtualBox 6.1.26 と Windows 10 21H1 の組み合わせでは動きました。

### VMware Workstation Player

VMware Workstation Player/Pro 15.5.5以降からWindows ハイパーバイザー プラットフォームに対応したようです。こちらも特に設定変更しなくても動作するらしいのですが、もし動かない場合は「Intel VT-x/EPT または AMD-V/RVI を仮想化」「CPU パフォーマンス カウンタを仮想化」のチェックを外してみてください。

### BlueStacks Androidアプリプレイヤー

(2021/8追記)

[How to use BlueStacks 4 on Windows 10 with Hyper-V enabled &ndash; BlueStacks Support](https://support.bluestacks.com/hc/en-us/articles/360041390952-How-to-run-BlueStacks-with-Hyper-V-enabled) というページはあるものの、こちらはおそらくフル機能のHyper-Vを必要とするだろうと思われます。WSL2との共存もできるでしょうけど、Windows 10 Home版ではこの方法はとれなさそう。