WSL2(Windows Subsystem for Linux)導入手順

# WSL2(Windows Subsystem for Linux)導入手順

## Windowsアップデート手順

[公式ページ](https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-index)よると、下記のバージョン以降である必要があるみたい。

>WSL 2 は、Windows 10、バージョン 2004、ビルド 19041 以上でのみ使用できます。 Windows のバージョンを更新しなければならない場合があります。

とりあえず、自身のWindowバージョンを確認してみた。

![WindowsUpdate.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266508/2b93392e-4dd0-3b9e-f09d-9d955f9f1b32.png)

![winver1903.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266508/5d1e9f48-f11a-3a9c-c39b-7130717ac578.png)

Windows Update画面上では「最新の状態です」と表示されているが、何故かバージョンが足りていない。下記ページからWindowsのバージョン更新を実施した。

[Windows 10 のダウンロード](https://www.microsoft.com/ja-jp/software-download/windows10)

バージョン更新が完了すると、下記のように表示される。

![winver2004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266508/e3880768-657a-cbe1-e8d2-ff21f493144c.png)

## WSL2(Windows Subsystem for Linux)導入手順

[公式手順ページ](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10) を参考に、以下導入を進めた。

### "Linux用Windowsサブシステム"オプション機能を有効化

>Windows 上に Linux ディストリビューションをインストールする前に、"Linux 用 Windows サブシステム" オプション機能を有効にする必要があります。管理者として PowerShell を開き、以下を実行します。

```bash
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.18362.900

イメージのバージョン: 10.0.18362.1016

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
```

### "仮想マシンプラットフォーム"のオプションコンポーネントを有効化

>WSL 2 をインストールする前に、"仮想マシン プラットフォーム" オプション機能を有効にする必要があります。管理者として PowerShell を開き、以下を実行します。

```bash
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.18362.900

イメージのバージョン: 10.0.18362.1016

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
```

>お使いのマシンを再起動して WSL のインストールを完了し、WSL 2 に更新します。

### WSL2を既定のバージョンとして設定する

> 管理者として PowerShell を開いて次のコマンドを実行し、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定します。

```bash
PS C:\WINDOWS\system32> wsl --set-default-version 2
エラー: 0x1bc
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
```

「0x1bc」エラーが出力された。公式に以下の記述があったため、別件のエラーだと思ったがカーネルの更新を試してみた。[カーネル更新ダウンロードリンク](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)

>このメッセージは、コマンド WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel を実行した後に表示されることがあります。 リンク (https://aka.ms/wsl2kernel) に従って、WSL 2 で使用する Linux カーネルをコンピューターにインストールするためのドキュメントのこのページから MSI をインストールしてください。 カーネルをインストールしたら、コマンドを再度実行すると、メッセージが表示されることなく正常に完了します。

カーネル更新後、再度実行したところエラーは出力されなくなった。

```bash
PS C:\WINDOWS\system32> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
```

### Linuxディストリビューションをインストールする

> Microsoft Store を開き、希望する Linux ディストリビューションを選択します。

今回は「Ubuntu 20.04 LTS」を導入した。

![MicrosoftStore_Ubuntu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266508/ff75221a-1d6e-d519-ff03-6bada4c572b1.png)

上記のインストール完了後、Ubuntuを初めて起動すると数分待つように求められる。その後、下記のようにUbuntuのユーザ及びパスワードの設定を求められるため、設定する。

![ubuntuinstall.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266508/e14eadfc-c997-9956-ca81-a1d4a21b19fe.png)


### ディストリビューションで使用されるWSLのバージョンを設定する

インストールしたUbuntuに割り当てられているWSLバージョンを確認したところ、バージョン１が割り当てられている。

```bash
PS C:\WINDOWS\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Stopped         1
```

バージョン２を割り当てるためには、以下のコマンドで設定する。

```bash
PS C:\WINDOWS\system32> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
仮想ディスク システムの制限により、要求された操作を完了できませんでした。仮想ハード ディスク ファイルの圧縮と暗号化が解 除されている必要があります。また、仮想ハード ディスク ファイルをスパースに設定することはできません。
```

「仮想ディスク システムの制限により、要求された操作を完了できませんでした。」とエラーが表示された。ファイルの圧縮と暗号化を解除すると良いとのことなので、以下を実施した。

URLバーから%localappdata%\Packagesに移動すると、「CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc」のようなフォルダ名で、Ubuntuのディストリビューション実体が見つけれる。プロパティ＞詳細設定＞内容を圧縮してディスク領域を節約するのチェックを外す。

上記を実施した後、再度実行してみた。

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

設定が完了したようなので、改めてUbuntuに割り当てられているWSLバージョンを確認すると、バージョンが２へ更新されている。

```bash
PS C:\WINDOWS\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Stopped         2
```

これで設定完了！