Windows Home + WSL2 + Androidエミュレータ
この環境で色々ハマったので備忘録として書いておきます。
WSL2とHyper-VとAndroidエミュレータ
まず、WSL2とHyper-Vの関係
https://qiita.com/matarillo/items/ca1eecf8f9a3cd76f9ce
ここを見てもらうのがいいのですが、WSL2はHyper-Vハイパーバイザーの上で動いています。Windows Pro にある Hyper-V とは別です。また、Windowsハイパーバイザープラットフォームを有効化することで、他の仮想化技術と共存させることができるようです。似た用語で紛らわしいのですが、「Hyper-Vハイパーバイザー」、「Hyper-V」、「Windowsハイパーバイザープラットフォーム」はそれぞれ別物のようです。
で、WSL2をインストールした状態でAndroidエミュレータを起動しようとするとHyper-Vが有効化されているので起動できないので、Hyper-VをOffにするコマンドを実行してね、というメッセージが表示されます。この時点で何も分かっていなかった、そのコマンドを実行しました。すると、WSL2が起動しないではないですか!「BIOSの仮想化設定を確認してください」のメッセージが表示されていますが、すでに有効済みです。
Hyper-Vの On Off
普通にHyper-Vの有効無効について調べると、PowerShellのコマンドか「Windowsの機能の有効化または無効化」を使った方法が見つかるのですが、Windows Homeだとこれらの方法で有効無効を切り替えられません。(そもそもHomeにはHyper-Vが無いので)
コマンドプロンプトのコマンドだとWindows Homeでも有効無効を切り替えられました。
https://qiita.com/dodonki1223/items/75bd5171e2f2193c9977
Androidエミュレータを起動できなかったときに実行したコマンドと同じです。
WSL2とAndroidエミュレータを共存させるには
Hyper-Vと共存させる方法は公式ドキュメントに書いてありました。
https://developer.android.com/studio/run/emulator-acceleration?hl=ja#vm-windows-whpx
「Windowsハイパーバイザープラットフォーム」を有効にすればいいそうです。
結論
Home、Pro関係なく、WSL2とAndroidエミュレータを共存させる場合は「Windowsハイパーバイザープラットフォーム」を有効にしましょう。
WSL2をインストールした環境はHomeであってもHyper-Vが有効になっているものとみなすみたいです。