簡単！！WSLをインストールしてWindows10でLinux開発環境構築

Windows上でLinuxのプログラムを動作させることのできるWSL(Windows Subsystem for Linux)が、Windows10の更新によってコマンド1つでインストールすることができ、これまで必要だった幾つかの手順が不要になりました。

この更新により簡単にWindows10環境にLinuxの開発環境を構築することができます。
またエクスポートとインポート機能を利用することで、構築した環境を容易にバックアップ、移行することができます。

# 前提条件

## 実施環境
* Windows 10 Home バージョン 21H1

## 更新プログラムKB5004296の適用
更新プログラム[KB5004296](https://support.microsoft.com/ja-jp/topic/2021-%E5%B9%B4-7-%E6%9C%88-29-%E6%97%A5-kb5004296-os-%E3%83%93%E3%83%AB%E3%83%89-19041-1151-19042-1151-%E3%81%8A%E3%82%88%E3%81%B3-19043-1151-%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC-6aba536a-6ed2-41cb-bc3d-3980e8693cc4)を適用することでコマンド1つでWSL2がインストールできるようになります。

適用がまだの場合Windows Updateから更新プログラムをダウンロードしてインストールします。

# WSL2のインストール

## 事前確認
Windowsの機能の有効化または無効化から「Linux 用 Windows サブシステム」にチェックが入っていないことを確認します。

### GUIからの確認
1. [スタート]メニューをクリックする
1. [設定]メニューをクリックする
1. [設定の検索]フォームに「Windowsの機能の有効化または無効化」を入力する
1. 候補に表示される「Windowsの機能の有効化または無効化」を選択する  
→以下の「Windowsの機能の有効化または無効化」ウィンドウが表示される
1. 「Linux 用 Windows サブシステム」にチェックが入っていないことを確認する

![001.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1849496/ca336618-b461-cb9e-ac0a-e9600f53bcbb.png)

※ チェックが入っている場合、既にWSLがインストール済みである可能性があります。

## インストール実行
1. 管理者権限でコマンドプロンプトを起動する
1. 以下のコマンドを実行する

```bat
C:\WINDOWS\system32>wsl.exe --install
```  
→インストールが実行されシステムの再起動が求められます。
　指示に従いWindowsの再起動を実行する。
![004.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1849496/1a8904aa-1dd1-7de3-eb58-d133bd6d46ca.png)

※ インストールコマンドを実行するとデフォルトでUbuntuのディストリビューションがインストールされます。

## Ubuntuの初期設定
Windowsを再起動すると自動でUbuntuのターミナルが起動しインストールが開始されます。
※ ターミナル起動後にインストールが走り数分かかる場合があります。

### ユーザ名とパスワードの設定
インストールが完了するとユーザー名とパスワードの設定を求められます。

* 指示に従いユーザ名とパスワードを入力する。
![006.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1849496/2aabc053-00c2-6e85-9281-3f99bb958d36.png)

### パッケージの更新
ディストリビューションのパッケージを最新化します。

1.　以下のコマンドを実行してパッケージ一覧を更新する

~~~Bash
sudo apt-get update
~~~

2.　以下のコマンドを実行してパッケージを更新する

~~~Bash
sudo apt-get -y upgrade
~~~

## ディストリビューションの確認

1.　ユーザー権限でコマンドプロンプトを起動する
2.　以下のコマンドを実行してインストールされたディストリビューションを確認する

~~~bat
wsl --list --verbose
~~~

実行例）WSLバージョン2のUbuntuがインストールされていることが確認できます。

~~~bat
C:\Users\Owner>wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2
~~~

# ディストリビューションのエクスポートとインポート
構築したディストリビューションをtarとしてエクスポートおよびインポートすることができます。

## エクスポート
今回はデフォルトでインストールされた"Ubuntu"のディストリビューションをエクスポートします。

1.　ユーザー権限でコマンドプロンプトを起動する
2.　以下のコマンドを実行してエクスポート対象のディストリビューションを確認する

~~~bat
wsl --list
~~~

実行例）"Ubuntu"という名前のディストリビューションが確認することができます。

~~~bat
C:\Users\Owner>wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
~~~

3.　以下のコマンドによりエクスポートを実行する

~~~bat
wsl --export <ディストリビューション名> <エクスポートファイル名>
~~~

実行例）コマンドを実行ディレクトリにubuntu.tarというファイル名でエクスポートします。

~~~bat
wsl --export Ubuntu ./ubuntu.tar
~~~

## インポート
上記でエクスポートしたubuntu.tarを別名でインポートします。

1.　ユーザー権限でコマンドプロンプトを起動する
2.　以下のコマンドによりインポートを実行する

~~~bat
wsl --import <ディストリビューション名> <インポートファイルパス> <インポート対象ファイル名>
~~~

実行例）Ubuntu-devというディストリビューション名でubuntu.tarをインポートします。

~~~bat
wsl --import Ubuntu-dev C:\Users\Owner ubuntu.tar
~~~

3.　以下のコマンドを実行してインポートされたディストリビューションを確認する

~~~bat
wsl --list
~~~

実行例）"Ubuntu-dev"という名前のディストリビューションが追加されています。

~~~bat
C:\Users\Owner >wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
Ubuntu-dev
~~~

### 既定変更
インポートされたディストリビューションを既定のディストリビューションに変更することで、「ファイル名を指定して実行」から"wsl"を実行することで優先して起動することができるようになります。

1.　ユーザー権限でコマンドプロンプトを起動する
2.　以下のコマンドにより既定ディストリビューションを変更する

~~~bat
wsl --setdefault <ディストリビューション名>
~~~

実行例）"Ubuntu-dev"という名前のディストリビューションが既定として指定されます。

~~~bat
C:\Users\Owner>wsl --setdefault Ubuntu-dev
~~~

3.　以下のコマンドを実行して既定が変更されたことを確認する

~~~bat
wsl --list
~~~

実行例）"Ubuntu-dev"という名前のディストリビューションが既定に指定されています。

~~~bat
C:\Users\Owner>wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-dev (既定)
Ubuntu
~~~

### コマンドプロンプトによるディストリビューションの起動
インポートしたディストリビューションはコマンドプロンプトより起動することができます。

1.　ユーザー権限でコマンドプロンプトを起動する
2.　以下のコマンドによりディストリビューションを起動する

~~~bat
wsl --distribution <ディストリビューション名>
~~~

実行例）"Ubuntu-dev"という名前のディストリビューションがrootユーザで起動されます。

~~~bat
C:\Users\Owner>wsl --distribution Ubuntu-dev
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of xxx xxx  x xx:xx:xx JST xxxx

  System load:  x.x                Processes:             x
  Usage of /:   x.x% of xxx.xxGB   Users logged in:       x
  Memory usage: x%                 IPv4 address for eth0: xxx.xx.xxx.xxx
  Swap usage:   x%


35 updates can be applied immediately.
5 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable



This message is shown once a day. To disable it please create the
/root/.hushlogin file.
root@xxxxxxxx:/mnt/c/Users/Owner#
~~~

#### 起動ユーザの変更
インポートしたディストリビューションはroot権限で起動されます。
以下の設定を行うことで既存のユーザをデフォルトユーザとして指定することができます。

1.　ユーザー権限でコマンドプロンプトを起動する
2.　以下のコマンドによりディストリビューションを起動する

~~~bat
wsl --distribution <ディストリビューション名>
~~~

3.　以下のコマンドを実行してwsl.confを作成する

~~~Bash
vi /etc/wsl.conf
~~~

4.　以下の内容を記述する

~~~Bash:wsl.conf
[user]
default=<既存ユーザ名>
~~~

5.　以下のコマンドを実行してディストリビューションを抜ける

~~~Bash
exit
~~~

6.　以下のコマンドを実行してディストリビューションの起動状態を確認する

~~~bat
wsl --list --verbose
~~~

対象のディストリビューションのSTATEがRunningであった場合7以降の手順を実施します。

7.　以下のコマンドを実行してディストリビューションをシャットダウンする

~~~bat
wsl -t <ディストリビューション名>
~~~

実行例）"Ubuntu-dev"という名前のディストリビューションをシャットダウンします。

~~~bat
C:\Users\Owner>wsl -t Ubuntu-dev
~~~

8.　以下のコマンドを実行して再度ディストリビューションの起動状態を確認する

~~~bat
wsl --list --verbose
~~~

9.　以下のコマンドを実行してディストリビューションを起動する

~~~bat
wsl --distribution <ディストリビューション名>
~~~

手順4で記述した既存ユーザでディストリビューションが起動されます。

# 参考

* [Windows Subsystem for Linux に関するドキュメント](https://docs.microsoft.com/ja-jp/windows/wsl/)
* [KB5004296](https://support.microsoft.com/ja-jp/topic/2021-%E5%B9%B4-7-%E6%9C%88-29-%E6%97%A5-kb5004296-os-%E3%83%93%E3%83%AB%E3%83%89-19041-1151-19042-1151-%E3%81%8A%E3%82%88%E3%81%B3-19043-1151-%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC-6aba536a-6ed2-41cb-bc3d-3980e8693cc4)