Windows | |

Windows Subsystem for Linux のメモ

自分用 今んとこUbuntuのことしか書いてない

  1. コマンドプロンプトで使えるディストリビューションのコマンド
  2. コマンドプロンプトからWSL側のコマンドを実行
  3. インストール済みのディストリビューションを確認する
  4. Windows側からWSL側のファイルに触る
  5. WSL側からWindows側のファイルに触る
  6. WSLを再起動する
  7. WSL2上で開けたポートにホスト側からアクセス
  8. WSL2のメモリサイズを制限する

コマンドプロンプトで使えるディストリビューションのコマンド

  • ストアで Ubuntu を入れた場合は ubuntu
  • ストアで Ubuntu 18.04 LTS を入れた場合は ubuntu1804
  • ストアで Ubuntu 20.04 LTS を入れた場合は ubuntu2004

以降の項の ubuntu コマンドは読み替え推奨。

コマンドプロンプトからWSL側のコマンドを実行

ディストリビューションのコマンドの run 以降に、WSL側で実行したいコマンドを指定する。

例) dateコマンド
ubuntu run date
実行結果
Sun May 17 01:36:05 JST 2020

または wsl コマンドの -- 以降にWSL側で実行したいコマンドを指定する。

例) dateコマンド
wsl -d Ubuntu -- date

-d オプションの引数にはディストリビューション名を指定する。ディストリビューション名の確認方法は次項。

これらを実行する時、カレントディレクトリはコマンドプロンプトで開いているディレクトリとなる。

インストール済みのディストリビューションを確認する

wsl コマンドで指定するディストリビューション名を確認するには、コマンドプロンプトで以下実行。

wsl --list
実行結果の例
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
Ubuntu-20.04

Windows側からWSL側のファイルに触る

Windows側でエクスプローラのアドレスバーに \\wsl$\{ディストリビューション名} と入力すると、WSL側のファイルを見られる。

例えば Ubuntu ディストリビューションの /path/to/file.txt なら \\wsl$\Ubuntu\path\to\file.txt になる。

この時、WSL側にはディストリビューションのデフォルトユーザーでアクセスする扱いになる。手動で変更していなければ、デフォルトユーザーはWSLを初回起動時に作成したユーザーのはず。なのでroot権限が必要なところは見られない。

デフォルトユーザーをrootに変更したければ、Windows側で以下コマンド。

ubuntu config --default-user root

WSL側からWindows側のファイルに触る

Cドライブのファイルなら、WSL側で /mnt/c 以下で見られる。

例えば C:\path\to\file.txt なら /mnt/c/path/to/file.txt になる。

WSLを再起動する

--terminate で落としてもう一回上げればOK

wsl --terminate Ubuntu

でも .wslconfig を反映させたいとかならこっち↓

wsl --shutdown

WSL2上で開けたポートにホスト側からアクセス

ファイル C:\Users\{ユーザ名}\.wslconfig を作成して以下を記述し、WSLを再起動する

.wslconfig
[wsl2]
localhostForwarding=True

WSL2のメモリサイズを制限する

Vmmemがメモリ食ってる時に有用

ファイル C:\Users\{ユーザ名}\.wslconfig を作成して以下を記述し、WSLを再起動する

.wslconfig
[wsl2]
memory=8GB
swap=0

swap=0 はメモリオーバーした時にスワップさせなくする