Windows 11でLinuxを使う(WSL)

Windows 11でMicrosoft Store版 Windows Subsystem for Linux（WSL）を使うと、Windows 11上で、超お手軽にLinuxで遊ぶことができる。

# How to Install
## Microsoft Storeからインストール
`Windows Subsystem for Linux`を検索して、インストール。とっても簡単。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/09475785-efd1-6f67-3abf-ed366a611549.png)

## Linuxディストリビューションをインストール
1. Microsoft Storeを起動し、Ubuntu等のディストリビューションを検索  
Ubuntu以外には、DebianやSLES等何種類かある。
なお、特定の版数のUbuntuを入れたい場合は、版数が入ったもの（Ubuntu 20.04 LTS等）を入れたほうがよい。版数無しUbuntuはインストールする時期によって、版数が変わる模様。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/f01b4c7b-a172-5777-1280-45135c6d0f07.png)
2. 「入手」ボタンをクリックして、Ubuntuをインストール
3. インストール完了後、「起動」をクリックしてUbuntu起動！ 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/161359c8-967c-59b5-e71f-6581c9810e81.png)
4. 初回起動時にUbuntu用ユーザIDとパスワードを設定して、インストール完了
ここで入力するユーザ名はWindowsのユーザ名とは関係ない。
root権限が必要な場合は、sudoで実行できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/c8e5b058-9941-2280-8b29-74f4ba55dda0.png)

# How to use
## スタートメニューから起動
インストールしたLinuxディストリビューションは通常のアプリケーションと同様に、スタートメニューから起動可能。作成したユーザでログインした状態で起動する。

## Windows Terminalからアクセス
[Windows Terminal](https://www.microsoft.com/ja-jp/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab)では、自動でWSLのプロファイルが登録されるため、簡単にアクセスできるのでお勧め。Microsoft Storeからインストールできるので、気になる方は試してみては。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/e7f209d3-8c84-8b7d-df17-7c0d3b172073.png)

# GUIアプリの実行
LinuxのGUIアプリをWindows上で実行できる。
下記のようにLinuxからgeditを実行すると、Windows上にgeditのWindowが開く。
個人的には、使いたいLinuxのGUIアプリはないので、活用しないだろうなぁ・・・
```bash
gedit .bashrc
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253975/0926eb2f-2561-77e1-fc89-97fa43ecc5d1.png)

環境によってはドライバの更新が必要かもしれないので、[この辺](https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/gui-apps)を見てみるといいかも。

# Windows-Linux間のファイル共有
## LinuxからのWindows上のファイルへのアクセス
WindowsのCドライブがLinuxの`/mnt/c`にマウントされている。`/mnt/c`にアクセスすることで、Windows上のファイルにアクセス可能。

## WindowsからLinux上のファイルへのアクセス
`\\wsl$\[ディストリビューション名]`でLinux上のファイルにアクセス可能。Ubuntuを使っている場合は、`\\wsl$\Ubuntu`でアクセスする。

# systemdの有効化
Linuxのサービスを自動起動させる場合、`systemd`を有効にする必要がある。
将来的にはDefaultで`systemd`が有効になる予定らしいが、2022/11/19時点ではLinux上で`/etc/wsl.conf`ファイルに下記を記述する必要がある。

```configuration
[boot]
systemd=true
```
記述後、`wsl --shutdown`コマンドを実行後、Linuxに接続することで`systemd`が有効になる。これでDocker等を自動で起動させられる。

# How to Uninstall
インストールしたLinuxディストリビューションは、通常のアプリケーションと同様に`プログラムの追加と削除`からアンインストール可能。

# wslコマンド
個人的にたまに使う、Windowsのコマンドプロンプトから実行できるwslコマンドの一覧。

|オプション|概要|
|---------|-------------------------|
|          | wslの後にLinuxコマンドを書くと、そのコマンドを実行できる。`wsl ls`等 |
|--install [Distro]　| 指定のLinuxディストリビューションのインストール |
|-t [Distor] | 指定のLinuxディストリビューションの終了 |
|--unregister [Distor] | 指定のLinuxディストリビューションの解除（アンインストール） |
|--status  | Defaultのディストリビューション、WSL版数を確認可能 |
|--list -v | インストール済みディストリビューションを表示 |
|--list -o | インストール可能ディストリビューションを表示 |
|--update  | WSLのアップデート。|

```cmd:Winodws&#x20;10からWSL&#x20;Ubuntuのgrepの実行
C:\>winget uninstall | wsl grep Ubuntu
Ubuntu                                          Canonical.Ubuntu
```

# リンク
* [Windows Subsystem for Linux に関するドキュメント](https://docs.microsoft.com/ja-jp/windows/wsl/)
    * WSL関連のリソース。ここから一通りの情報にアクセスできる。

* [WSL Tips and Tricks](https://craigloewen-msft.github.io/WSLTipsAndTricks/)
    * WSL関連の小技集。MSのWSL開発者のページ。