WSL を Windows Server 2019 にインストールする方法

# はじめに
WSL = Windows Subsystem for Linux とは、Windows 上で Drawbridge という技術をもとに任意の Linux ディストリビューションを動作させることができる機能です。
最新の Windows Server 2019 でも実装されたこともあり、windows 10 および Windows Server 2019 の環境で利用可能となりました。この記事では、Windows Subsystem for Linux を Windows Server 2019 上で利用する手順についてドキュメントをもとに要点だけ日本語でまとめたものです。
__本情報の内容（添付文書、リンク先などを含む）は、作成日時点でのものであり、予告なく変更される場合があります__

# 機能の有効化
Power Shell を__管理者として実行__します。

```powershell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
```

# ディストリビューションのインストール
Windows 10 と異なり、サーバーOSであるWindows Server 2019 ではMicrosoft Storeがそのまま使えません。よって、下記の2つの方式となります。
- [Microsoft Store for Business](https://www.microsoft.com/ja-jp/store/b/business)からのインストール
- フリーのディストリビューションまたはカスタムしたディストリビューションをサイドローディング

ここでは、フリーのディストリビューションをダウンロードし、サイドローディングする手順について説明します。
今日現在サイドローディング用にダウンロード可能なディストリビューションは下記になります。
- [Ubuntu 18.04](https://aka.ms/wsl-ubuntu-1804)
- [Ubuntu 18.04 ARM](https://aka.ms/wsl-ubuntu-1804-arm)
- [Ubuntu 16.04](https://aka.ms/wsl-ubuntu-1604)
- [Debian GNU/Linux](https://aka.ms/wsl-debian-gnulinux)
- [Kali Linux](https://aka.ms/wsl-kali-linux)
- [OpenSUSE](https://aka.ms/wsl-opensuse-42)
- [SLES](https://aka.ms/wsl-sles-12)

## ディストリビューションのダウンロード
単純にブラウザ経由でダウンロードして準備してもよいですが、下記のようにPowerShellからダウンロードすることも可能です。
[https://aka.ms/wsl-ubuntu-1804](https://aka.ms/wsl-ubuntu-1804)は任意のリンクに、-OutFile で指定している__Ubuntu.appx__も任意のファイル名（拡張子はappx)に書き換えてください

```powershell
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu1604.appx -UseBasicParsing
```

Windows Server 2019 では Windows 10 (1803以降）と同様に__curl__コマンドも利用することが可能です。

```bash
curl.exe -L -o ubuntu-1604.appx https://aka.ms/wsl-ubuntu-1604
```

## ディストリビューションのサイドローディング準備
appx はアプリケーション実行ファイル（exe)とマニフェスト等のインストールや動作に必要なファイルを固めた zip ファイルです。サイドローディングを行うためにはこの appx ファイルから実行ファイルを取り出す必要があります。
エクスプローラーから拡張子を変更し、解凍してもよいですが PowerShell を使うと下記のように書き記すことができます。

```powershell
>Rename-Item ~/Ubuntu1604.appx ~/Ubuntu1604.zip
>Expand-Archive ~/Ubuntu1604.zip ~/Ubuntu1604
>ls ./Ubuntu1604


    ディレクトリ: C:\TechSummit\Ubuntu1604


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2018/11/04     14:56                AppxMetadata
d-----       2018/11/04     14:56                Assets
d-----       2018/11/04     14:56                images
-a----       2017/07/11     18:10         190434 AppxBlockMap.xml
-a----       2017/07/11     18:10           2475 AppxManifest.xml
-a----       2017/07/11     18:11          10554 AppxSignature.p7x
-a----       2017/07/11     18:10      201254783 install.tar.gz
-a----       2017/07/11     18:10           4840 resources.pri
-a----       2017/07/11     18:10         222208 ubuntu.exe
-a----       2017/07/11     18:10            809 [Content_Types].xml
```

## Distro Launcher にディストリビューションを登録
先ほど解凍したファイル群のなかに、<ディストリビューション名>.exe のファイルがあるのでそれを実行すると登録されます。

```powershell
> .\ubuntu.exe
Installing, this may take a few minutes...
Installation successful!
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: miyamam
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Default UNIX user set to: miyamam
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
```

> もし__0x8007007e__でインストールが失敗する場合、参考リンクのマニュアルに解消法が掲載されていますのでそちらを参考にトラブルシューティングしてください。

## 追加設定
必要に応じてWindows の環境変数のPATHに登録したりしましょう。

## 備考
なお、[Microsoft Store for Business](https://www.microsoft.com/ja-jp/store/b/business)からインストールする場合は、ストアのログインテナント__職場または学校のアカウント__（つまり、Microsoft 365 や Office 365 で使用している Azure Active Directory のアカウント）が必要となり、有償のアプリケーションはテナント管理者が購入したものをユーザーに割り当てるという形でライセンスの一元管理が可能となります。その場合もオフラインインストール用のappxをダウンロードし、サイドローディングすることが必要になります。

# 参考リンク
- [Windows Server Installation Guide](https://docs.microsoft.com/en-us/windows/wsl/install-on-server)
- [Microsoft Store for Business](https://www.microsoft.com/ja-jp/store/b/business)
- [Manually download WSL distro packages](https://docs.microsoft.com/en-us/windows/wsl/install-manual)
- [Windows Server Installation Guide](https://docs.microsoft.com/en-us/windows/wsl/install-on-server)