WSLチートシート
wsl --help に書いてあるからそれを読めばだいたいできる。言葉足らずな所、直感的に分からない所を書く。
ややこしいところ
WSL の公式の説明では、いわゆる「仮想環境の名前」を「ディストリビューション」として呼んでいる。
本来「ディストリビューション」とは配布とかの意味合いで、転じて Linux の種別を意味しているのが普通
混乱するので、ここでは「仮想環境」、その名前を「仮想環境名」と呼ぶ。
標準でインストール可能なディストリビューション一覧を表示する。
code:console
wsl --list --online
wsl -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
'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
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.5 openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed openSUSE Tumbleweed
何も指定しないでインストールすると Ubuntu がインストールされる。(バージョンはその時のデフォルトになる。)
code:console
wsl --install
code:console
wsl --install <ディストリビューション名>
wsl --install Ubuntu-22.04
インストールすると、ログイン名とパスワードを聞かれる。
ログイン名は必ずしも Windows ユーザーと一致する必要はない。
仮想環境の動作状況を確認する。
code:console
wsl --list --verbose
wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
仮想環境を起動する。
code:console
デフォルトの起動
wsl
名前指定
wsl -d <仮想環境名>
wsl --distribution <仮想環境名>
仮想環境を破棄する。
ext4.vhdx も綺麗に消える。バックアップが必要なら忘れずに。
code:console
wsl --unregister <仮想環境名>
wsl --unregister Ubuntu
仮想環境をエクスポートする。
PowerShell では $Env:USERPROFILE\ディレクトリ名\ファイル名 とすると、ユーザーのディレクトリ内に作ってくれるので安全。(他ユーザーからは見えない)
--vhd オプションを指定しない場合は tar ファイルとして書き出される。隙間なく出力されるが、その分遅い。
--vhd オプションを指定すると、内部の .vhdx ファイルをそのままコピーする。
このため、今だと .vhdx ファイルにした方がいいかもしれない。
code:console
wsl --export <仮想環境名> <ファイル名> オプション wsl --export
仮想環境をインポートする
code:console
wsl --import <仮想環境名> <配置先ディレクトリ> <エクスポートファイル> オプション 配置先ディレクトリはその1つ手前までがあれば自動的に掘られる。その中に ext4.vhdx が作成される。
WSL で同じディストリビューションを複数インストールする。
wsl --install では困ったことに仮想環境名を付けることができない。
このため、以下の手順を踏む。
インストールする。
エクスポートする。
仮想環境名を変えてインポートする。
エクスポートしたものは後々何度もインストールして使えるので、取っておくのがよい。
特定の仮想環境にログインする。
wsl コマンドに何も付けずに起動すると、デフォルトの仮想環境に、初期ユーザー名でログインする。
特定の仮想環境にログインするには、以下のようにする。
code:console
wsl --distribution <仮想環境名> --user <ユーザー名>
wsl -d <仮想環境名> -u <ユーザー名>
ユーザー名を指定しない場合、root ユーザーになる。
オプションを指定しない場合、wsl コマンドを実行したディレクトリがカレントディレクトリになることに注意。
(ホームディレクトリのつもりでやらかすことがある。)
ログインユーザーを固定したい場合
その仮想環境の /etc/wsl.conf に以下を追加する。
code:/etc/wsl.conf
default=ユーザー名
一度仮想環境を停止してから再度ログインすると有効になる。
特定の仮想環境を起動する。
「特定の仮想環境にログインする。」と同じ。
どうもログインシェルを呼ばずに起動する方法はなさげ。
wsl -e でコマンドを実行しても、ご丁寧に Stopped に戻してくれる。
特定の仮想環境を停止する。
code:console
wsl --terminate <仮想環境名>
wsl -t <仮想環境名>
デフォルトの仮想環境を設定する。
code:console
wsl --set-default <仮想環境名>
wsl -s <仮想環境名>
コマンドを1つだけ実行する。
引数がそのまま引き渡される
code:console
wsl -e ls /bin
wsl -e echo "Hello, world!"
WSL のバージョンを確認する。
code:console
wsl --version
WSL バージョン: 2.0.14.0
カーネル バージョン: 5.15.133.1-1
WSLg バージョン: 1.0.59
MSRDC バージョン: 1.2.4677
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.19045.4046
code:console
wsl --version
WSL バージョン: 2.0.9.0
カーネル バージョン: 5.15.133.1-1
WSLg バージョン: 1.0.59
MSRDC バージョン: 1.2.4677
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.19045.4046
WSL自体をバージョンアップする。(特に通知とか自動アップデートとかはないので手動でバージョンアップする必要がある。)
code:console
wsl --update