やさしいWindows Subsystem for Linux (WSL) のインストール手順

関連記事：[WSLの環境を整える(ショートカット, GUI, 開発環境)](https://qiita.com/kekenonono/items/92e0d727ab679894c81d)

#はじめに
これまで研究室ではLinux環境を利用する際、1台のPCにWindows OSとLinux OSをデュアルブートで使用していました。
しかし、同じPCを利用しているのにも関わらずWindows OS - Linux OS間のデータのやり取りが面倒であることなど、使い勝手が悪くデメリットも目立ちました。

**Windows10からの新機能 Windows Subsystem for Linux (WSL)によって、Windows環境下にいながらUNIX/Linux実行環境を利用することができます。**
これにより、デュアルブートや仮想マシンの導入といった面倒をせず、**とても簡単にWindows OS が入ったPCでLinuxを使うことができます。**


この記事では、自分用の備忘録も兼ねてWindows10にWSLを導入し、基本設定をするまでの手順を紹介していきます。
記事内容に誤りなどありましたらどんどんご指摘いただきたいです。


###動作条件
Windows 10 バージョン1709以降であることのみ
**(追記)セキュリティソフトをオンにしているとうまくいかない場合があるようです！一時停止しておきましょう！**


###概要
- 1. WSLを有効にする
- 2. ディストリビューションのインストール
- 3. Ubuntuの設定
    - 3.1. 初起動時の設定
    - 3.2. リポジトリの変更
    - 3.3. パッケージのアップデート
    - 3.4. 日本語環境の設定
    - 3.5. 動作確認（neofetchの実行）
    - 3.6. 基本コマンドの紹介
    - 3.7. 再インストール
- 4. WSLとWindows
- 5. その他
- 6. 参考

#1. WSLを有効にする
WSLはWindows 10 バージョン1709以降では正式なOS機能として実装されていますが、デフォルトでオフになっているので、まずは機能をオンにします。

**1. [Windowsロゴ]キー + [x]キー、 または スタートボタンを右クリックし、アプリと機能を選択**
![2019-10-30 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/eb94bc5b-a401-4117-fc5c-babf65f3905d.png)


**2. プログラムと機能を開く**
多分ウィンドウの右端の方か下の方にあります
![2019-10-30 (6) - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/cd3827e2-ddfd-b5b6-0806-cada721d71d6.png)

**3. WSLの有効化**
プログラムと機能中に「Windowsの機能の有効化または無効化」とあるのでクリックします。
「Windows Subsystem for Linux」にチェックを入れて「OK」をクリックします。
![2019-10-30 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/343fff8e-5ef2-181c-a793-341c2bec0877.png)


**4. 再起動**
WSLの有効化が終了したら再起動を要求されるので再起動します。以上で準備完了です！

#2. ディストリビューションのインストール
次はMicrosoft Store経由でLinuxパッケージをインストールします。
![cap.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/223fb5d0-82ae-6dec-13c1-cb1214c11729.png)
2019/11現在、Microsoft Store上にはopenSUSEやDebianなど様々なパッケージがリリースされていますが、今回はユーザー数も多く参考ページが充実している**「Ubuntu」をインストール**します。

**Microsoft Storeを立ち上げ、検索ウィンドウに「Ubuntu」と打ち込みます。**
![2019-10-30 (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/38402cda-9012-e0d7-38ac-ffeb9a46f800.png)
ここで、「Ubuntu」のほかに「Ubuntu 18.04 LTS」と「Ubuntu 16.04 LTS」が表示されると思いますが**「Ubunutu」をインストール**してください。
>「Ubuntu 18.04 LTS」と「Ubuntu 16.04 LTS」は、特定のLTSリリースでなければ動作しないアプリケーションを利用、検証することを想定したものだ。原則、ずっと同じリリースを使い続ける（そもそもLTSとはLong Term Supportという意味だ）場合のディストリビューションである。
>[Windows 10で動くようになったLinuxを使ってみよう](https://www.atmarkit.co.jp/ait/articles/1903/18/news031.html) より引用

#3. Ubuntuの初期設定
Ubuntuインストール後、早速立ち上げてみましょう。

Ubuntu（もといWSL）の起動方法はいくつかありますが、今回は「ファイル名を指定して実行」によって「ubuntu.exe」を実行します。なんとなく格好いいからです。

**1.  [Windowsロゴ]キー + [R]キー を押して「[ファイル名を指定して実行](https://qiita.com/sta/items/4b70e6b130a1033dc2c5)」を開く**
**2.「ubuntu」と入力し、OKをクリック**
![2019-10-30 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/0e2398b3-6e57-bfc5-33ec-196a13a40f1b.png)

これでUbuntuが起動されます！

<details><summary> ←（補足）もちろんスタートのアプリからも起動できます</summary>
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/e1bc12e1-824d-f994-31aa-0960c7e8e7d6.png)
</details>


##3.1. 初起動時の設定
初起動時は起動に少し時間がかかりますが、2度目以降は数秒で立ち上がります。
まずはユーザー名とパスワードの設定です。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/142a20fe-32fd-287e-3250-69cb26b46a3c.png)
Ubuntu上のユーザー名とパスワードは**Windowsのユーザー名とパスワードとは完全に別物**です。
基本的に何を入力しても平気ですが、余りにも長すぎるものや日本語はやめておきましょう。
特に、パスワードは管理者権限でコマンドを実行する際に何度も入力するので打ち易いものにした方が無難です。

##3.2. リポジトリの変更
これは1度実行したら今後はやらなくていいです。
([リポジトリとは?](https://hombre-nuevo.com/linux/linux0004/))

デフォルトでは海外サーバーのリポジトリを参照してしまい、パッケージをインストールする際など通信速度が遅くなってしまいます。
そこで/etc/apt/sources.listを編集し、日本のサーバーを参照するよう設定を行います。
以下のコマンドを実行してください。

```bash
$ sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
```
(補足)$ を抜いた上記コマンドをコピーしたあと、Ubuntu上で「右クリック」するとペーストできます。
ショートカットによるコピー&ペーストを有効にしたい場合は[こちら](https://forest.watch.impress.co.jp/docs/news/1117273.html)

##3.3. パッケージのアップデート
Ubuntuの状態を最新に更新します。これは**定期的に行ってください。**

以下のコマンドを実行します。

```bash
$ sudo apt update
$ sudo apt upgrade
```
###よくあるエラー
**:warning: やはりSymantecなどのセキュリティソフトによってリポジトリからのインストールが阻害される人が多いようです。
セキュリティソフトは一時的にオフにしましょう。**
公式のアナウンスは[こちら](https://blogs.msdn.microsoft.com/wsl/2016/11/01/wsl-antivirus-and-firewall-compatibility/)

##3.4. 日本語環境の設定
Ubuntuを日本語化と日本語マニュアルのインストールを行います。
英語のままで良いって人はここは無視して大丈夫です。

以下のコマンドを実行します。

```bash
# 日本語のインストール
$ sudo apt install language-pack-ja

#LOCALEを日本語に設定
$ sudo update-locale LANG=ja_JP.UTF8

# 日本語マニュアルの実行
$ sudo apt install manpages-ja
```

これが済んだら一度**Ubuntuを再起動**してください。（ウィンドウを閉じるだけで終了できます）

（補足）これ以降一時的に英語でコマンドを実行したい場合、以下のようにenvを使用します。

```bash
$ env LANG=C コマンド
```

##3.5. 動作確認（neofetchの実行）
動作確認としてneofetchを実行します。かっこいいので。
以下のコマンドを実行します。

```bash
#neofetchのインストール
$ sudo apt install neofetch

#neofetchの実行
$ neofetch
```

Ubuntuのロゴ、バージョンなどが表示されましたね。かっこいい。

##3.6. 基本コマンドの紹介
Linuxコマンドを少しだけ紹介します。
WSLは基本的にターミナルでの動作を前提にしている（いわゆるCUI）ので、コマンドを知らなければ何もできません。


###pwd
現在のディレクトリを表示します。 
Print Working Directoryの略らしいです。

```bash
$ pwd
```

###ls
現在のディレクトリ以下のファイルやディレクトリ一覧を表示します。
List segmentsの略ですね。

```bash
$ ls
$ ls -l #ファイルの詳細も表示する
$ ls -t #ファイルを更新順に並べる
$ ls -X #ファイルを拡張子ごとに並べる
```

lsのオプションについては[こちら](https://eng-entrance.com/linux_command_ls)

###cd
作業ディレクトリを移動します。
change directoryの略です。

```bash
$ cd ディレクトリ名 #現在のディレクトリ下にある指定のディレクトリへ移動
$ cd ~ #ホームディレクトリへ移動
$ cd .. #1つ上の階層へ移動
```
絶対パスや相対パスの指定などは[こちら](https://eng-entrance.com/linux-command-cd)

###man
コマンドのマニュアルを表示します。
manualの略です。
マニュアルを閉じるときは「q」を押してください。

```bash
$ man sudo #sudoのマニュアルを表示する
$ man apt #aptのマニュアルを表示する
```



その他のコマンドについて[こちら](https://parashuto.com/rriver/tools/mac-command-line-basics)で簡単にまとめられていますし、調べればいくらでも出てきます。

##3.7. 再インストール
環境がぐちゃぐちゃになったりパスワードを忘れてしまったりした場合など、Ubuntuを再インストールしたいと思う場面があるかもしれません。

その場合は、**通常のWindowsアプリと同様**にアプリの設定から「リセット」や「アンインストール」を行うことができます。

特に「リセット」するだけで再インストールを行った状態（パスワードやパッケージなどがリセットされた状態）になるのでかなり楽です。

#4. WSLとWindows
WSLとWindowsの関係が以下に分かりやすくまとめられていました。

>WSLの中で動作しているのは、ほぼ普通のLinuxでコマンドのバイナリコードもそのままである。コマンドに関しては特にWSL用に変更が加えられているわけではない。このため、WSL側には、Linuxのファイルシステムがそのまま見える。これを「VolFs（Volume File System）」と呼ぶ。これに対して、Windows OS側の普通のファイルシステム（Cドライブなど）は、WSL側からは、「/mnt/」以下にドライブ文字から始まるパスとして見ることができる。これを「DrvFs（Drive File System）」と呼ぶ。
>>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521871/8aaa5970-9918-011c-572c-859098024658.png)

>[@IT 【WSL入門】第3回 WSL活用の落とし穴：LinuxからWindowsフォルダへのアクセス完全マスター](https://www.atmarkit.co.jp/ait/articles/1904/19/news033.html)より引用

したがって、WSL側からWindows側のCマウント以下のディレクトリを見に行きたければ

```bash
$ cd /mnt/c/
```
とする必要があります。

もう少し詳しく知りたければ[こちら](https://www.pc-koubou.jp/magazine/21475)（Picoプロセスがどうというお話です）

#5. その他
2020年5月のWindows 10バージョン2003からは現行のWSLを強化したWSL2（https://devblogs.microsoft.com/commandline/announcing-wsl-2/ ）がリリースされるようです。
楽しみですね。

#6. 参考
Windows 10標準Linux環境WSLを始めよう (https://www.atmarkit.co.jp/ait/articles/1903/18/news031.html)

Windows 10で動くようになったLinuxを使ってみよう(https://news.mynavi.jp/article/liunx_win-1/)

シス管系女子BEGINS 特別編 まんがでわかるWSL(https://system-admin-girl.com/comic/begins/sp-wsl/)