WSL2 をすべてコマンドでインストールしたときのメモ

VirtualBox 側が Hyper-V に対応したこと、Windows 10 2004 で WSL が Home へ対応したことで、メインPCにも WSL 2 を入れてみました。
WSL 2 と Docker Desktop が Windows 10 Home でも使えるようになります。

どうせならチームメンバーの導入の負荷軽減のためということで、コマンドラインのみで導入する方法を確立してみました。

## 前提

* **Windows 10 バージョン 2004**
* Home / Pro どちらでも可（検証は Home でしました）
* **BIOS で Intel VT-x / AMD-V の仮想化ハードウェア拡張を有効**にしてある
* 新規で WSL 2 を導入するケース
* Windows で sudo を使えるようにしておくと、より導入が楽（必須でない）

## 通常のコマンド一覧

管理者権限で PowerShell を起動して、以下のコマンドを入力してください。


```powershell:PowerShell（管理者権限）
# Linux 用 Windows サブシステム
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 仮想マシン プラットフォーム
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

コンピュータの再起動。
改めて通常の権限で PowerShell を起動して、以下のコマンドを入力してください。

```powershell:PowerShell
# WSL 2 Kernel Update
Invoke-WebRequest -Uri https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -OutFile wsl_update_x64.msi -UseBasicParsing
msiexec /i wsl_update_x64.msi /passive /norestart 
rm wsl_update_x64.msi

# WSL 2 を標準にする
wsl --set-default-version 2

# Ubuntu 2004 をインストール
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile linux.appx -UseBasicParsing
Add-AppxPackage -Path linux.appx
rm linux.appx
```

コンピュータの再起動をお忘れなく。

## sudo を導入している環境でのコマンド一覧

通常の権限で PowerShell を起動して、以下のコマンドを入力してください。
（ sudo をインストールしてあると管理者権限に昇格が簡単にできるのでらくちんですよ）

```powershell:PowerShell
# Linux 用 Windows サブシステム
sudo dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 仮想マシン プラットフォーム
sudo dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

コンピュータの再起動。
改めて通常の権限で PowerShell を起動して、以下のコマンドを入力してください。

```powershell:PowerShell
# WSL 2 Kernel Update
Invoke-WebRequest -Uri https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -OutFile wsl_update_x64.msi -UseBasicParsing
msiexec /i wsl_update_x64.msi /passive /norestart 
rm wsl_update_x64.msi

# WSL 2 を標準にする
wsl --set-default-version 2

# Ubuntu 2004 をインストール
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile linux.appx -UseBasicParsing
Add-AppxPackage -Path linux.appx
rm linux.appx
```

コンピュータの再起動をお忘れなく。

## 補足

### ほかのディストリビュート

上記は Ubuntu 2004 を導入していますが、ほかのディストリビュートもコマンドでインストールできます。
引数 `-Uri` に渡す URI を変更してください。
URI は https://docs.microsoft.com/en-us/windows/wsl/install-manual#downloading-distros のリンクを確認してください。
例えば、Debian GNU/Linux を利用したい場合は以下のような感じです。

```powershell:PowerShell
# Debian GNU/Linux
Invoke-WebRequest -Uri https://aka.ms/wsl-debian-gnulinux -OutFile linux.appx -UseBasicParsing
Add-AppxPackage -Path linux.appx
rm linux.appx
```

### 次期バージョンのコマンド

将来的には WSL コマンドでインストールとアップデートが可能になるそうです。
https://devblogs.microsoft.com/commandline/gpu-compute-wsl-install-and-wsl-update-arrive-in-the-windows-insiders-fast-ring-for-the-windows-subsystem-for-linux/

```powershell:PowerShell
wsl --install
wsl --update
```

### Windows で sudo の簡単な導入

Scoop をインストールしてください。
下記の記事がわかりやすいのでお勧めです。

https://qiita.com/Dooteeen/items/12dc8fb14042888113d0

Scoop をインストールしたら、下記コマンドで sudo をインストールできます。

```powershell:PowerShell
scoop install sudo
```

## ※悲しいお知らせ

併用してみましたが、**VirtualBox と WSL 2 はまだ相性悪いです。**
特に、VirtualBox ゲストに検証テスト用の Windows 10 を入れていたのですが、使い物にならないくらい不安定になりました。
結局、システム復元から復旧する羽目になったので、両方を使おうと思っている方はまだ様子見でよいと思います。
~~WSLじゃなくてgowでいいや。DockerはVagrantでいいや。~~

せっかくコマンドだけでインストールする方法を確立したので、ほかの方のお役に立てればと思いメモを残しました。