ゼロからWSL2導入してみたらハマった

# 概要
いつもMacの僕がWindows買ってシェルって何？Ubuntu聞いたことある程度のレベルからWSL2というものを知って、導入したい！！！と思ったけど、少しはまってしまったのでその内容を。

普通にすれば[Linux カーネル更新プログラム パッケージ](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)をインストールして、「管理者として実行」でPowerShell立ち上げて下記コマンドを舐めればすんなりいけるはず。。。

```shell
# "Linux 用 Windows サブシステム" オプション機能を有効に
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# "仮想マシン プラットフォーム" オプション機能を有効に
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# =========
# PC再起動
# =========

# 現在のバージョン確認
> wsl -l -v
  NAME            STATE           VERSION
  Ubuntu          Stopped         1
* Ubuntu-18.04    Stopped         1

# WSL2セット
> wsl --set-default-version 2 Ubuntu-18.04

# セット後のバージョン確認
> wsl -l -v
  NAME            STATE           VERSION
  Ubuntu          Stopped         1
* Ubuntu-18.04    Stopped         2
```

# ハマったところ

ゼロからの僕には`wsl -l -v`なんてそんなもんはないんだよなぁ。。。

```
> wsl -l -v

==========
Copyright (c) Microsoft Corporation. All rights reserved.

使用法: wsl.exe [引数] [オプション...] [コマンド ライン]

Linux バイナリを実行するための引数:

    コマンド ラインを指定しないと、wsl.exe は既定のシェルを起動します。

    --exec, -e <コマンド ライン>
        指定したコマンドを、既定の Linux シェルを使用しないで実行します。

    --
        残りのコマンド ラインをそのまま渡します。

オプション:
    --distribution, -d <ディストリビューション>
        指定したディストリビューションを実行します。

    --user, -u <ユーザー名>
        指定したユーザーとして実行します。

Linux 用 Windows サブシステムを管理するための引数:

    --export <ディストリビューション> <ファイル名>
        ディストリビューションを tar ファイルにエクスポートします。
        標準出力の場合は、ファイル名を - とすることができます。

    --import <ディストリビューション> <インストール場所> <ファイル名> [オプション]
        指定した tar ファイルを新しいディストリビューションとしてインポートします。
        標準入力の場合は、ファイル名を - とすることができます。

        オプション:
            --version <バージョン>
                新しいディストリビューションに使用するバージョンを指定します。

    --list, -l [オプション]
        ディストリビューションの一覧を表示します。

        オプション:
            --all
                現在インストール中またはアンインストール中のものを含めて
                すべてのディストリビューションを一覧表示します。

            --running
                現在実行中のディストリビューションのみを一覧表示します。

            --quiet, -q
                ディストリビューション名のみを表示します。

            --verbose, -v
                すべてのディストリビューションについての詳細情報を表示します。

    --set-default, -s <ディストリビューション>
        ディストリビューションを既定として設定します。

    --set-default-version <バージョン>
        新しいディストリビューションの既定のインストール バージョンを変更します。

    --set-version <ディストリビューション> <バージョン>
        指定したディストリビューションのバージョンを変更します。

    --shutdown
        実行中のすべてのディストリビューションと WSL 2 ライトウェイト ユーティリティ仮想マシンを直ちに終了します。

    --terminate, -t <ディストリビューション>
        指定したディストリビューションを終了します。

    --unregister <ディストリビューション>
        ディストリビューションの登録を解除します。

    --help
        使用法を表示します。
```

とりあえず自分に合わない記事見るよりも[公式](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)見よう。結局これ見れば誰でもできる。

読んでみてわかったことだけど、ゼロからの僕はUbuntuもないし、そもそもWindowsUpdateもしていなかった。なのでエラー出て当然。ということでWindowsを最新に。

# Windows Update

> WSL 2 に更新するには、次の条件を満たす必要があります。
「バージョン 2004、ビルド 19041 以上に更新された Windows 10 を実行している。」


どうやらこれが条件らしい
その前に、バージョン2004に更新するための条件もある

> 現時点では、Windows 10、バージョン 2004 (ビルド 19041) に更新するには、Windows Insider プログラムに参加し、[リリース プレビュー] リングを選択する必要があります。

右下の入力欄から「WindowsUpdateの設定」を検索して設定画面を開くいて、左サイドバーから「Windows Insider Program」を選択してポチポチ進めていく。

![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449626/c5b998b4-5c80-5e17-99e0-dc5a060f9919.png)

[ここらへん](https://insider.windows.com/en-us/welcome-back/)もいじったかも。頑張ってくれ。
うまくいったら次はWindows Update。次のように2004にUpdateされていればOK

![122.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449626/7b3e18e2-9fe8-6541-9c03-312baf65ff74.png)


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

ぜろからの僕はUbuntuとか入ってないので手に入れないといけない。
よくわからなかったので欲張りな僕はUbuntuとUbuntu-18.04とUbuntu20.04をいれた。１つでいいはず。
[MS store](https://aka.ms/wslstore)からインストールする


# WSL2に更新

「管理者として実行」でPowerShell立ち上げてからコマンド実行するように

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

下記コマンドを実行

```
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```

## "仮想マシン プラットフォーム" オプション機能を有効に

下記コマンドを実行

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

ここでPC再起動必要

## 現在のバージョン確認

宿敵`wsl -l -v`実行

```
> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1
  Ubuntu          Stopped         1
  Ubuntu-18.04    Stopped         1
```

ここで勝利を確信。勝ちました。

## WSL2セット

そのままセットしようとすると次のようにカーネルコンポーネントの更新を促されるので言われたとおりに更新する

```
> wsl --set-version Ubuntu-20.04 2

変換中です。この処理には数分かかることがあります...
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
```

「[Linux カーネル更新プログラム パッケージ](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
)」をダウンロードしてインストールしてもう一度実行

```
> wsl --set-version Ubuntu-20.04 2

変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

...数分後

変換が完了しました。
```

## セット後のバージョン確認

```
> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2
  Ubuntu          Stopped         1
  Ubuntu-18.04    Stopped         1
```

完了！！(これでいいんだよね...??)