WSL2でWindows 10上でUbuntuを動かす + VSCodeでUbuntuを使う

# 概要
この記事ではWSL2をインストールしてWindows上でUbuntuを動かす方法を解説します。
また、VSCode上でUbuntuを使う方法についても併せて解説します。

# 対象
* Windows PCしか持っていないがUbuntuを触ってみたい人
* cmdに慣れず、bashでの開発を行いたい人 ~~(dirじゃなくてlsのが楽ですよね)~~
* Windows上でDockerを使ってみたい(WSL1でも出来るそうですが個人的にはWSL2の方がオススメ)

# WSL2のインストール
Powershellを**管理者モード**で起動し、下記のコマンドを実行してLinux用Windowsサブシステムを有効にします。

```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```
  
次に、WSL2の実行に関する要件を確認します。
> * x64 システムの場合:バージョン 1903 以降、ビルド 18362 以上。
> * ARM64 システムの場合:バージョン 2004 以降、ビルド 19041 以上。

Windowsの検索ボックスに```winver```と入力することで現在のバージョンを確認することが出来ます。

また、**18362より前のビルドはWSL2に対応していない**ので、Windowsのバージョンを更新する必要があります。
[こちら](https://www.microsoft.com/ja-jp/software-download/windows10)よりWindowsのバージョンを最新のものに更新することが出来ます。

実行の要件を満たしている場合、下記のコマンドをPowershellを**管理者モード**で開いて実行し、仮想マシンの機能を有効にします。

```powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 
```

上記コマンドの実行が完了したらPCを一度再起動します。

再起動が終わったら、**Linuxカーネル更新プログラム パッケージ**をダウンロード・インストールします。
[こちら](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)より最新バージョンをダウンロードします。
パッケージの指示に従えば勝手に色々やってくれます。

最後にPowershellを起動して下記のコマンドを入力してWSLのバージョンを2に指定します。

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

これでWSL2のインストールは完了です。

# Ubuntuのインストール
次にUbuntuのインストールを行います。

Ubuntuのインストールの仕方は何でも良いのですが、特にこだわりが無ければMicrosoft Storeからダウンロードすることをオススメします。

Microsoft Storeを起動し、アプリ右上の検索バーに`ubuntu`と入力すると画像のようにUbuntuの一覧が表示されます。
今回は`Ubuntu 18.04 LTS`をインストールします。
![microstore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268562/14a23e5a-b76f-f778-5d33-9efe788b4b7a.png)

Ubuntuのインストールが終わりましたら、Windowsの検索ボックスに`ubuntu`と入力し該当のUbuntuを起動します。

Ubuntuを起動すると初回時のみ下記のようなメッセージが表示されるので、該当部分を入力します。
ちなみにパスワードはCUI上に表示されません。

```bash
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: <ユーザー名>
Enter new UNIX password: <パスワード>
Retype new UNIX password: <パスワード再入力>
```
<br>
ユーザー名とパスワードを入力すると下記のようにユーザーが作成されます。
今回はユーザー名を`maru`に指定したので、maruと表示されています。

```bash
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: maru
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

maru@DESKTOP-0H4IUSI:~$
```

これでWindows上でUbuntuを使うことが出来る状態となりました。


# VSCodeでUbuntuを使う
最後にVSCodeでUbuntuを使用する方法を解説します。

VSCodeを起動し、**Extentions**(Ctrl + Shift + X)を押して`wsl`と検索します。
すると画像のように`Remote - WSL`という拡張機能が表示されるのでこちらをインストールします。
![vscode_wsl.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268562/1dca362f-983e-70f9-888c-2f06ff30a61e.png)



インストールが完了するとVSCode左下に緑色のアイコンが表示されます。
こちらのアイコンをクリックして`Remote-WSL: New Window`を選択することでVSCode上でUbuntuを使用することが出来ます。
![vscode_ubuntu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268562/68ac4cdf-ffeb-f2b9-f26e-2f114554a980.png)


新しくVSCodeのウィンドウが立ち上がるので```Ctrl + Shift + @```を押すと下記のようなコマンドが表示されます。

```bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

maru@DESKTOP-0H4IUSI:~$ 
```

以上でVSCodeとUbuntuの連携が完了となります！お疲れ様でした！

# 最後に
3台のPCで上記のセットアップを行ったのですが、1台のPCでWSL2をインストールが正常に完了しないケースが見られました。(1時間経っても終わらずPCがフリーズする)

WSL1でUbuntuを運用しているPCだったのですが、一度UbuntuをアンインストールしてWSL2のインストール後に再度Ubuntuをインストールし直した際にはスムーズにインストール出来ました。

もしWSL2のインストールに長時間かかってしまう場合にはお試し下さい。
(こちらは動作を保証するものでは無いので自己責任で行って下さい。)