【WSL2】WindowsにLinux環境を作成

この記事はWindowsにWSL2をインストールする方法を記述しています。
また、WSLの概要について簡単にまとめたので何かの参考にしていただければと思います。


<h1>【WSLの概要】</h1>
WSL(Windows Subsystem for Linux)とは「Windows10/11」上でLinuxOSを実行出来る機能です。
WindowsOSのAPIを使用した構造になっている為、Linux側からWindowsOSに保存されているファイルにアクセスする事が
可能です。
WSLはWindows10バージョン1709以降から使用可能となっています。

<h1>【WSLと仮想マシン】</h1>
従来、Linux環境をWindowsOSで使おうとすれば仮想マシンを導入する必要がありました。
WSLと仮想マシンを比較すると仮想マシンは導入に工数が掛かり、起動にも時間が掛かりました。
それに比べWSLは少ない工数で導入する事が可能で起動も早いです。

<h1>【WSL1とWSL2の違い】</h1>
現在、WSL1とWSL２の2つのバージョンがリリースされています。

■WSL1について
LXCoreというサブシステムがLinuxOS環境を作っている。
Linuxとしては不完全な部分があり出来る事に限界があった。
LinuxからWindowsファイルへのアクセスがWSL2より高速。

■WSL2について
Hyper-Vというハイパーバイザー上でLinuxカーネルが動作する。
Windows上で完全なLinuxを使用可能。
WSL1よりも軽快に動作する。
WindowsからLinuxファイルへのアクセスがWSL１より高速。

単純にWSL２の方が優れている訳ではないようです。

※Linuxカーネル:OS(Linux)のの根幹となるもの。
※ハイパーバイザー(Hyper-V):Microsoftが提供している仮想化の仕組み。
→仮想化技術を使って、1台の物理的なWindows上で複数の仮想的なコンピュータを動作させる事

今回のインストール手順はWSL2の想定で記述しています。


<h1>【アプリインストール手順】</h1>

■実行環境
・Windows11/10
・PowerShell(管理者として実行)


■WSLをインストール
①「MicrosoftStore」を起動
②WSLと検索してインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665680/c0318623-76a0-5878-234b-1e2848d7d4db.png)


■Ubuntuをインストール
①Ubuntuと検索してインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665680/a300509a-50da-e798-3f62-3f9418daf1c4.png)



Ubuntuアプリを起動して、ユーザとパスワードを入力。
※初回時

Windows10の設定次第では下記のようなエラーが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665680/c0efedef-a402-9689-81c1-2d63d886d796.png)


「Windows の機能の有効化または無効化」を開き、「Linux 用 Windows サブシステム」と「仮想マシンプラットフォーム」を有効にします。
変更を有効後、PCを再起動します。

<h1>【WSL２に設定】</h1>

下記コマンドを実行してWSL2をデフォルト設定にします。
※PowerShell(管理者)で実行します。

```PowerShell:PowerShell
wsl --set-default-version 2
```

インストールしたディストリビューションを確認します。
VERSION 2と表示されていればWSL2でUbuntuが実行されている事になります。

```PowerShell:PowerShell
wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
```

<h1>【Ubuntuにrootユーザでログイン後新規ユーザを登録】</h1>

rootユーザから作業用のユーザを新規登録する。

■rootユーザでUbuntuにログイン
①インストールしたUbuntuアプリを開く
②rootユーザでログインしている事を確認
下記コマンドを入力して「root」と表示される事を確認
```Ubuntu:Ubuntu
>whoami 
root
```

③新規ユーザ登録
下記コマンドを入力して登録を実施
```Ubuntu:Ubuntu
>sudo adduser hoge

New password:
Retype new password:
passwd: password updated successfully
Changing the user information for hoge
Enter the new value, or press ENTER for the default
```

パスワードが求められる為任意のパスワードを入力。
※その他は未入力で可。





<h1>【作業用ユーザでUbuntuにログイン】</h1>

PowerShellで下記コマンドを実施。
```PowerShell:PowerShell
wsl -u hoge(作業用ユーザ名)
```
本来ならばこのコマンドでうまくいくはずなのですが私の場合、ユーザが存在しないとエラーが出た為
何か設定がよくなかったのかもしれません。
代わりに下記方法でログインしたので同じ現象が起きた方は試してみて下さい。

■デフォルトユーザを作業ユーザに設定してUbuntuを起動

PowerShellで下記コマンドを入力してデフォルトユーザを作業ユーザに変更

```PowerShell:PowerShell
ubuntu config --default-user hoge
```

変更後、ubuntuアプリを開いて下記コマンドを入力
作業用ユーザが表示される事を確認。

```Ubuntu:Ubuntu
>whoami 
hoge
```

<h1>【その他:使用したコマンド】</h1>

■作業用ユーザに権限付与

作業用ユーザでsudoコマンド使用するには一度rootユーザに切り替えて
下記コマンドを実施する必要がある。

```Ubuntu:Ubuntu
sudo gpasswd -a USER_NAME sudo
```

■ユーザの切り替え
Ubuntuのログインユーザをrootユーザに切り替える
※下記はrootユーザに切り替える例
```Ubuntu:Ubuntu
su root
```

■rootユーザのパスワードを変更
パスワードを忘れた時等に使用出来るコマンド
```Ubuntu:Ubuntu
sudo passwd root
```

■ユーザを削除する
Ubuntu上で下記コマンド入力する事で削除が可能

```Ubuntu:Ubuntu
sudo userdel -r hoge(ユーザ名)
```