WSL2 を PowerShellで有効にする

# 機能の有効化

まず、`Microsoft-Windows-Subsystem-Linux`の確認

```powershell
❯ Get-WindowsOptionalFeature -Online -FeatureName *linux*

FeatureName      : Microsoft-Windows-Subsystem-Linux
DisplayName      : Linux 用 Windows サブシステム
Description      : ネイティブなユーザー モードの Linux シェルおよびツールを Windows で実行するためのサービスと環境を提供します。
RestartRequired  : Possible
State            : Enabled
CustomProperties :
                   ServerComponent\Description : ネイティブなユーザー モードの Linux シェルおよびツールを Windows で実行するためのサービスと環境を提供します。
                   ServerComponent\DisplayName : Linux 用 Windows サブシステム
                   ServerComponent\Id : 1033
                   ServerComponent\Type : Feature
                   ServerComponent\UniqueName : Microsoft-Windows-Subsystem-Linux
                   ServerComponent\Deploys\Update\Name : Microsoft-Windows-Subsystem-Linux
```

WSL を使っていればおそらくこちらは既に `State            : Enabled`となっていることでしょう。
もう一つ、`VirtualMachinePlatform`の確認

```powershell
❯ Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

FeatureName      : VirtualMachinePlatform
DisplayName      : 仮想マシン プラットフォーム
Description      : 仮想マシンのプラットフォーム サポートを有効にします
RestartRequired  : Possible
State            : Disabled
CustomProperties :
```

こちらは`State            : Disabled`だったので、有効化します。

```powershell
❯ Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All
この操作を完了するために、今すぐコンピューターを再起動しますか?
[Y] Yes  [N] No  [?] Help (default is "Y"):
```

再起動して準備完了

# WSL2 カーネルの更新

[WSL 2 Linux カーネルの更新](https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel) にダウンロードリンクがあります。
こちらから更新プログラムパッケージをダウンロードしてインストールします。
![2020-06-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/835c6c05-b984-07c6-8e36-eb0fe7f66826.png)

# WSL2に切り替える

既定をWSL2にしたい場合はこちら

```powershell
wsl --set-default-version 2
```

まずは既定は従来のWSL、一部ディストリビューションをWSL2に切り替えて使いたかったので、一部だけ切り替えます。

```powershell
❯ wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1
  kali-linux      Running         1
  WLinux          Stopped         1
  Ubuntu          Stopped         1
  openSUSE-42     Stopped         1
```

ここのNAMEに書いてある名前をそのまま間違えずに入力してください。

```powershell
❯ wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
```

しばらく待つと変換が完了します。

```powershell
❯ wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         2
  kali-linux      Running         1
  WLinux          Stopped         1
  Ubuntu          Stopped         1
  openSUSE-42     Stopped         1
```

WSLのバージョンは同様にして**いつでも**切り替えることが出来ます。

# おまけ

ところで、WSL2はHyper-Vが有効でないと動かないと思っていましたし、書いてあるのですが
Hyper-VがDisabledの状態で、WSL2は起動出来ているようですし、VirtualBoxとの共存が出来ました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/09d472e8-b2b1-85e0-b40e-f21ff707c991.png)

また、WSLとWSL2でkernelを使い分けているみたいですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/bc447397-75de-d423-5a00-bde6a9931348.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/eb476050-e161-9eb1-2b9b-508f1c30aca3.png)



# 参考リンク
* [Windows 10 用 Windows Subsystem for Linux のインストール ガイド](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)
* [WSL 2 Linux カーネルの更新](https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel)