1.1.WSLインストール・初期設定

# 概略
ここではWSLで使用するLinux OS:Ubuntu20.04のインストール、及び、初期設定について記載します。
WSLに提供されている公式Linuxイメージは他にもいくつかありますが、Ubuntuが無料で一番安定使用されているようです。
記載するインストール手順は[**Microsoft公式**](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#manual-installation-steps)より抜粋となります。Windows OSでInsider Previewを使用している方は公式サイトを直接参照してください。
インストール環境イメージは下記の通りとなります。
![WSL in Windowsインストール・設定内容](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96681/29acd9a5-5aae-fca1-dc12-f3afc7cf3192.png)

---
# インストール環境条件

- x64システムの場合:バージョン1903以降、ビルド18362以上
- ARM64 システムの場合:バージョン2004以降、ビルド19041以上。

Windows10 Pro Intel Core i7-8650U
実装RAM 16.0 GB

---

# インストール手順

#### 1.Windows Update
Windows Updateを実施し、Windowsのバージョンを最新にしてください。
会社都合などでWindows updateができない場合は[**インストール環境条件**](#インストール環境条件)を確認してください。
バージョンとビルド番号を確認するには、Windows ロゴ キー + Rキーを押して、「winver」と入力し、「OK」を選択します。
![WSLインストール1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96681/ad7ec244-76d6-6315-da38-ed5f2b26efb1.png)

#### 2.Linux 用Windowsサブシステムの有効化
Linux 用Windowsサブシステムを有効にします。管理者としてPowerShellを開き、下記コマンドを実行します。

```PowerShell:dism
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```

#### 3.Windows再起動
Windowsを再起動します。

#### 4.「仮想マシン プラットフォーム」オプション機能有効化
「仮想マシン プラットフォーム」オプション機能を有効にします。管理者としてPowerShellを開き、下記コマンドを実行します。

```PowerShell:dism
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

#### 5.Windows再起動
Windowsを再起動します。

#### 6.Linuxカーネルパッケージダウンロード
最新の[**Linuxカーネル更新プログラムパッケージ**](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)をダウンロードします。

#### 7.Linuxカーネルパッケージインストール
「6.」でダウンロードした更新プログラム パッケージを実行します。 (ダブルクリックして実行します。管理者特権のアクセス許可を求めるメッセージが表示されます。[はい] を選択して、このインストールを承認します。)

#### 8.既定のバージョンの設定
PowerShellを開いて次のコマンドを実行し、新しいLinuxディストリビューションをインストールする際の既定のバージョンとしてWSL2を設定します。

```powershell:wsl
> wsl --set-default-version 2
```

#### 9.Ubuntu20.04LTSインストール
[**Microsoft Store**](https://www.microsoft.com/store/apps/9n6svws3rx71)を開き、Ubuntu20.04LTSを選択します。
![WSLインストール2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96681/b6d8ca48-97f3-8977-0457-66307c3a392d.png)

#### 10.Ubuntu20.04LTS起動
新しくインストールした Linux ディストリビューションを初めて起動すると、コンソール ウィンドウが開き、ファイルが圧縮解除されて PC に格納されるまで 1、2 分待つように求められます。 今後のすべての起動には、1 秒もかかりません。

#### 11.ユーザアカウントの設定
次に、新しい Linux ディストリビューションのユーザーアカウントとパスワードを作成する必要があります。
ここでは

* ユーザーアカウント:develop
* パスワード:develop

とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96681/0e15accf-6b22-a800-d859-24dab1f740ed.png)


* このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ありません。
* ユーザーがユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされます。
* このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。

---

# 初期設定
以下はUbuntu20.04LTSの初期設定です。

### sudo設定
開発用VMでsudoコマンドのたびにパスワードを処理しなければならないのは、面倒なのでパスワード入力をオフにします。
下記コマンドを実行してください。

##### 1.rootグループに追加
下記コマンドを実行し、rootグループにdevelopユーザを追加します。

```console:更新
$ sudo gpasswd -a develop sudo
Adding user develop to group sudo
```

##### 2.sudoers設定
下記のコマンドでsudoersを追加します。

```bash:sudoers設定
$ cat <<-'EOF' | sudo tee -a /etc/sudoers.d/sudo
%sudo         ALL = (ALL) NOPASSWD: ALL
EOF
```

### パッケージの最新化
パッケージシステムを時間短縮のため日本リポジトリにつなぐようにします。

``` console:package
$ sudo sed -i.bak -e "s%http://[^ ]\+%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list
$ sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove
```

下記の様なエラーが発生する場合、下記の通り行を追記してください。

``` console:Error
W: mkconf: MD subsystem is not loaded, thus I cannot scan for arrays.
W: mdadm: failed to auto-generate temporary mdadm.conf file.
```

``` console:Error対応
$ sudo vim /etc/mdadm/mdadm.conf
```

末尾に下記を追記

``` vim:mdadm.conf
ARRAY devices=/dev/sda
```

### 起動時初期ディレクトリ設定
WSL起動、ログイン時の初期ディレクトリですが、デフォルトだとWindowsユーザのディレクトリとなります。通常のlinuxの場合、初期ディレクトリはユーザホームディレクトリとなるのでそうなるように設定します。
下記の通り設定して下さい。

``` console:startdir.sh
$ sudo vim /etc/profile.d/startdir.sh
```

下記の通り記載します。

```vim:startdir.sh
#!/bin/bash

cd ~
```

### タイムゾーン設定
デフォルトでは、タイムゾーンがUTCなので日本（JST）に設定します。

##### 1.下記コマンドを実行する

```console:TimeZone
$ sudo dpkg-reconfigure tzdata
```

##### 2.「Asia」を選択する

![Asia選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96681/b5dea93e-a099-bc67-66da-03334c071bf6.png)

##### 3.「Tokyo」を選択する

![Tokyo選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96681/15b1dc51-dd9a-a63f-9751-16657cbf456d.png)

##### 4.時刻の確認
下記コマンドを実行し、時刻が東京標準時になっていることを確認します。

```console:日付確認
$ date
```

### 日本語ロケールの設定
実行時の言語が英語だと難しい方は下記の設定をすれば日本語になります。

##### 1.日本語言語パックのインストール

```console:日本語言語パック
$ sudo apt -y install language-pack-ja
```

##### 2.ロケールの設定

```console:ロケール設定
$ sudo update-locale LANG=ja_JP.UTF8
```

##### 3.再起動
WSLではrebootやshutdownコマンドは使用できないのでターミナルを再起動して下さい。

### マニュアルの日本語化
オンラインマニュアル（Linuxのコマンドのマニュアル）を表示するコマンドmanのマニュアルを日本語化します。

##### 1.manの確認
下記コマンドでmanコマンドの内容が日本語になっていないことを確認します。

```console:man確認
$ man ls
```

##### 2.日本語manインストール
下記コマンドにより日本語manをインストールします。

```console:日本語man
$ sudo apt -y install manpages-ja manpages-ja-dev
```

##### 3.manの再確認
下記コマンドにより日本語manになっていることを確認します。

```console:man確認
$ man ls
```

### vimの初期設定
WSLではデフォルトでvimがインストールされていますが、使いやすいよう設定する必要があります。
私の好みの設定は下記となります。

```console:.vimrc
$ vim ~/.vimrc
```

下記の通り書き込みます。

```vim:.vimrc
" vim の独自拡張機能を使用 (vi との互換性無し)
set nocompatible
" 文字コードを指定
set encoding=utf-8
" ファイルエンコードを指定 (先頭から順に成功するまで読み込む)
set fileencodings=utf-8,iso-2022-jp,sjis,euc-jp
" 自動認識させる改行コードを指定
set fileformats=unix,dos
" バックアップは取得しない
" 逆は [ set backup ]
set nobackup
" バックアップを取得するディレクトリを指定
" set backupdir=~/backup
" 検索履歴を残す世代数
set history=100
" 検索時に大文字小文字を区別しない
set ignorecase
" 検索語に大文字を混ぜると検索時に大文字を区別する
set smartcase
" 検索語にマッチした単語をハイライト
" 逆は [ set nohlsearch ]
set hlsearch
" インクリメンタルサーチを使用 (検索語の入力最中から随時マッチする文字列の検索を開始)
" 逆は [ set noincsearch ]
set incsearch
" 行番号を表示
" 逆は [ set nonumber ]
set number
" 括弧入力時に対応する括弧を強調
set showmatch
" ファイルの末尾に改行を入れない
set binary noeol
" 自動インデントを無効にする
" 逆は [ autoindent ]
set noautoindent
" 構文ごとに色分け表示
" 逆は [ syntax off ]
syntax on
" [ syntax on ] の場合のコメント文の色を変更
highlight Comment ctermfg=green
" ウィンドウ幅で行を折り返さない
" 逆は [ set wrap ]
set nowrap
" カラースキーム。お好みで
colorscheme koehler
```

### 端末ビープ音の削除
下記実施後、端末を再起動すれば端末でのビープ音は消えます。

```bash
$ echo "set bell-style none" >> ~/.inputrcCopy
$ echo "set visualbell t_vb=" >> ~/.vimrc
````

---

[1.WSL環境構築](https://qiita.com/boss_ape/items/a30ebffde989d622be0a) < 前 **1.1.WSLインストール・初期設定** 次 > [1.2.ConEmu・Nyagosインストール・設定](https://qiita.com/boss_ape/items/015feebc6e3a77311e01)