WSLコマンド

## TR;DL
WSL関係のよく使うコマンドその他のメモです。

## powershellの`wsl`コマンド

## Help表示

```msshell
wsl --help 
```

以下コマンド説明も大体`--help`で親切かつ分かりやすく確認できます。

`wsl -h`の省略形はないので注意。

## Shutdown

- WSL自体のShutdown
```msshell
wsl --shutdown
```

## Distributionの停止

`wsl --terminate <Distribution名>`で停止
`wsl -t <Distribution名>`でも同様
```msshell
wsl --terminate Ubuntu-20.04 
```

## Distributionの開始
`wsl --distribution <Distribution名>`で停止
`wsl -d <Distribution名>`でも同様
```msshell
wsl --terminate Ubuntu-20.04 
```

## Distribution確認

### Install済みのDistributionを確認
```msshell
wsl --list --all
```
または単に`wsl -l` または `wsl --list`
```powershell
wsl -l
```

```text
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-20.04 (既定)
Ubuntu-22.04
```

### Install済みのDistributionの状態を確認

`wsl --list --verbose`で状態確認
`wsl -l -v`でも良い

```msshell
 wsl --list --verbose
```

```
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2
  Ubuntu-22.04    Running         2
```

`wsl --terminate` で停止したDistributionは`STATE`=`Stopped`で表示されます。
```
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2
  Ubuntu-22.04    Stopped         2
```


### 利用可能なDistributionを確認

```msshell
wsl --list --online
```

```text
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
...
```

## 既定の状態確認(WSL 1 or 2)
```mshell
wsl --status
```

```
既定のディストリビューション: Ubuntu-20.04
既定のバージョン: 2
```

## 既定の状態の切り替え(WSL 1 ⇒ 2)

```msshell
wsl --set-default-version 2
```

## Distribution毎のWSL 1⇔2切り替え

```msshell
wsl --set-version Ubuntu-20.04 1
```

## WSL Version確認
```msshell
wsl --version
```

```text
WSL バージョン: 1.2.5.0
カーネル バージョン: 5.15.90.1
WSLg バージョン: 1.0.51
MSRDC バージョン: 1.2.3770
Direct3D バージョン: 1.608.2-61064218
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.19045.3324
```

## WindowsからWSL上のディレクトリへのアクセス方法

`\\wsl$\<Distribution名>` または `\\wsl.localhost\<Distribution名>`

例えば以下のように`\\wsl.localhost\Ubuntu-22.04`と入力することでUbuntu側のディレクトリが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/843716/fb18e605-37e8-fdc7-c335-6dbb699ed8e9.png)

## WSL側からWindowsのフォルダへのアクセス方法

例えばDisk C: なら `/mnt/c/` などマウントされています。


## WSLの仮想ディスクの最適化

WSLのディスク消費は上限が大きく設定されており、ディストリビューション側のディスク消費に伴ってWindowsのドライブを圧迫していきます。消費した容量は単にディストリビューション側のファイルを削除しても戻らないので、仮想ディスクファイルを最適化する必要があります。

`optimize-vhd`、または`diskpart`で最適化します。


#### 1. WSLを停止
```mshell
wsl --shutdown
```
#### 2. optimize-vhdでの最適化

仮想ディスクファイルはUbuntuの場合以下のようなPathにあります。
`C:\Users\<ユーザ名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx`

```msshell
optimize-vhd -Path [仮想ディスクファイルへのPath]\ext4.vhdx -Mode full
```
## 参考

https://qiita.com/c_yamax/items/0cc89b14e879af431deb

https://qiita.com/TsuyoshiUshio@github/items/7a745582bbcd35062430

https://01futabato10.hateblo.jp/entry/2022/12/02/095031