Windows11で外付けSSD上にWSL2環境を構築する

## 概要
外付けSSD上にWLS2環境を作ってみました。
外付けSSDを選択した理由は単にSSDが余っていたからであって、メリットは特にありません＠＠
もちろんマウントしたドライブでも同じことができます。

## 環境
Windows11で作業を進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3340968/8b42de4f-8664-b588-45e8-a714845b2fa3.png)

## WLS2をインストールできる条件

Windows11の場合は特に条件なくインストールは可能です。
Windows10の場合はバージョン2004以上 (ビルド 19041 以上)とのことですが、細かい条件は [公式ページ](https://learn.microsoft.com/ja-jp/windows/wsl/install) をご確認ください。

## 作業概要
1. Windows の機能の有効化
1. WLS2 のインストール
1. インストールした `ubuntu` ディストリビューションをエクスポート
1. `ubuntu` をインポート
1. WLS2を起動

## 1. Windows の機能の有効化
「Windows の機能の有効化または無効化」を開き、以下の機能を有効化してください
- Linux 用 Windows サブシステム
- Windows ハイパーバイザー プラットフォーム
- 仮想マシン プラットフォーム

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3340968/595dd9dd-e530-4efd-0749-0f5c39ed05ff.png)


## 2. WLS2 のインストール

`Microsoft store` でもインストールできますが、今回はコマンドでインストールを行います。
wslコマンドについてはこちらの [公式ページ](https://learn.microsoft.com/ja-jp/windows/wsl/basic-commands) に細かく記載されていますので気になる方はご確認ください。

**2-1. PowerShellでインストール可能なディストリビューションを確認**
`wsl --list --online` コマンドで一覧を確認します

```
PS C:\temp> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl --install -d <Distro>' を使用してインストールします。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4                     openSUSE Leap 15.4
openSUSE-Tumbleweed                    openSUSE Tumbleweed
PS C:\temp>
```
<br>

**2-2. ディストリビューションを指定してインストール**
`wsl --install -d <任意のディストリビューション名>` コマンドでインストールします。
私は `Ubuntu-20.04` をインストールしていますが、任意のディストリビューションで問題ありません。


```
PS C:\temp> wsl --install -d Ubuntu-20.04
インストール中: Ubuntu 20.04 LTS
Ubuntu 20.04 LTS はインストールされました。
Ubuntu 20.04 LTS を起動しています...
PS C:\temp>
```
<br>

成功すると新しいウィンドウが開きますので `ubuntu` のユーザ名とパスワードを設定してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3340968/9cd18658-6b46-75bc-784e-5f81c922f029.png)


ユーザ名とパスワードの設定後、バージョン確認コマンド: `cat /etc/os-release` を実行し、正常に表示されればWLS2のインストールは成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3340968/5add1045-534d-a0a8-cda4-06aca46f91fc.png)

### ※ Ubuntu起動時に0x800701bcというエラーが出る場合

[こちら](https://learn.microsoft.com/ja-jp/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package) の手順4 から 「[x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)」をダウンロードしてインストールしてください


## 3. インストールした Ubuntu20.04 をエクスポート
現時点ではCドライブに `Ubuntu` 環境が構築されているため、これを外付けSSDに移動させます。

**3-1. PowerShellを管理者権限で起動する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3340968/2ea94578-bc6f-dea3-b8b6-ccc6bc7ca6d1.png)

**3-2. 起動しているwlsを停止する**
PowerShell上で以下のコマンドを実行してください

停止用コマンド: `wsl --shutdown`
確認用コマンド: `wsl -l -v`
```
PS C:\WINDOWS\system32> wsl --shutdown
PS C:\WINDOWS\system32> wsl -l -v
  NAME           STATE           VERSION
* Ubuntu20.04    Stopped         2
```

**3-3. `Ubuntu20.04` をエクスポートする**
PowerShell上で以下のコマンドを実行してください
※ ここでは外付けSSDを Dドライブ としていますが、各自のパスに合わせてください

`wsl --export Ubuntu20.04 D:\\wsl2\\Ubuntu20.04.tar`

```
PS C:\WINDOWS\system32> wsl --export Ubuntu20.04 D:\\wsl2\\Ubuntu20.04.tar
PS C:\WINDOWS\system32>
```

指定したパスに `Ubuntu20.04.tar` が生成されればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3340968/6bd48fd4-4d60-2a45-af01-5710b2bcd1df.png)

## 4. エクスポートした Ubuntu20.04 をインポート
外付けSSD上に生成された `Ubuntu20.04.tar` をインポートするため、以下のコマンドを実行してください

`wsl --import Ubuntu20.04 D:\wsl2\Ubuntu20.04 D:\wsl2\Ubuntu20.04.tar`

```
PS C:\WINDOWS\system32> wsl --import Ubuntu20.04 D:\wsl2\Ubuntu20.04 D:\wsl2\Ubuntu20.04.tar
PS C:\WINDOWS\system32>
```

コマンドが成功したらインポート完了です

## 5. WLS2を起動
手順2のようにWLS2が起動できればOKです！
見た目は変わりませんが、Dドライブで起動しています。
（`sudo apt-get update` などを実行するとDドライブのサイズが大きくなるはずです）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3340968/3beb45df-f78e-f5c7-765f-5ab938b62c8a.png)

## おわりに
なんとなく外付けSSD上にWLS環境をセットアップしてみました。
あとは `vscode` と `docker` と `git` をインストールしてしまえば最低限開発は進めそうですね！