コンテンツにスキップ

WSL

一覧

wsl --list

インストール可能なディストリビューション一覧

wsl --list --online

インストール

wsl --install

デフォルトはUbuntuがインストールされる。
ディストリビューションを指定するには以下。

wsl --install -d Ubuntu-20.04

インストールが完了すると起動まで行われ、初期設定が開始される。
Ubuntuの場合、作成するアカウントの入力を行う。

WSLバージョンの設定

WSL 2に設定するには以下。

wsl --set-version Ubuntu-20.04 2

実行すると以下の通り。

PS C:\Users\h_miyazaki> wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。

バージョンを確認するには以下。

wsl -l -v

rebootする

WSLのターミナルでreboot実行しても以下エラーで実行できない。

zaki@wensley:~$ sudo reboot
[sudo] password for zaki: 
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
Failed to talk to init daemon.

再起動するには、ホストOSのwslコマンドでterminateすることで停止するので、再接続する。

wsl --terminate Ubuntu-20.04

停止する

PS C:\Users\h_miyazaki> wsl -l -v
  NAME                      STATE           VERSION
* docker-desktop-data       Running         2
  Ubuntu-20.04              Running         1

Runningになっているホストを停止するには、↑と同様--terminate | -tで停止する。

wsl -t Ubuntu-20.04

環境の削除

> wsl --unregister ubuntu-20.04-container
登録を解除しています...

VM環境のエクスポート

tar形式にエクスポートする。

wsl --export Ubuntu-20.04 Ubuntu-20.04.tar

カレントに Ubuntu-20.04.tar ファイルが作成される。

VM環境のインポート

エクスポートしたtarファイルをWSLに登録する。
名前を変更することで、環境のコピーとなる。

書式は wsl --import ディストリビューション名 インストール先ファイルパス インポートするtarファイル

wsl --import ubuntu-20.04-container .\work\wsl\ubuntu-20.04-container .\Ubuntu-20.04.tar

制限として、デフォルトユーザーがrootになってしまう仕様がある。

デフォルトユーザーの変更

PowerShellで設定可能。

PS C:\Users\zaki> Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };
PS C:\Users\zaki> WSL-SetDefaultUser ubuntu-20.04-container zaki