はじめに
普段、僕は WSL2 で Ubuntu 20.04 を利用しています。
Micorsoft Store から WSL の Linux ディストリビューションをインストールすると、同一のディストリビューションを別環境として新たにインストールすることはできません。
今回、既存環境に手は加えたくないけど、少し設定をいじって遊びたいことがあったので環境を複製する方法を調べてみました。
割と手軽に環境の複製・破棄ができるのでぜひ試してみてください!
手順
PowerShell で wsl -l -v
コマンドを実行
PS C:\Users\nemukuma> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
Ubuntu-18.04 Running 2
今回は「Ubuntu-20.04」を複製してみようと思います。
wsl --export (エクスポートしたい WSL 環境名) (出力ファイル名)
コマンドを実行
PS C:\Users\nemukuma> wsl --export Ubuntu-20.04 Ubuntu-20.04-copy.tar
wsl --import (WSL に登録する環境名) (インストール先パス) (インポートする環境.tar)
コマンドを実行
PS C:\Users\nemukuma> wsl --import 20.04-copy01 .\wsl-copy\ .\Ubuntu-20.04-copy.tar
wsl -l -v
コマンドで確認すると新しい環境が追加されていることがわかります。
PS C:\Users\nemukuma> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
Ubuntu-18.04 Running 2
20.04-copy01 Stopped 2
PowerShellから wsl -d (環境名)
コマンドを実行
PS C:\Users\nemukuma> wsl -d 20.04-copy01
root@nemukumaPC:/mnt/c/Users/nemukuma$
上記のように -u
オプションを付与しない場合 root でログインします。
任意のユーザーでログインする場合は wsl -d (環境名) -u (ユーザー名)
コマンドを実行しましょう。
PS C:\Users\nemukuma> wsl -d 20.04-copy01 -u nemukuma
nemukuma@nemukumaPC:/mnt/c/Users/nemukuma$
指定したユーザーでログインできます。
settings.json に commandline": "wsl -d (環境名) -u (ユーザー名)
を追記しましょう。
例)
{
"guid": "{5510f72f-1f45-5292-8471-de0dbad364c9}",
"hidden": false,
"name": "20.04-copy01",
"source": "Windows.Terminal.Wsl",
"commandline": "wsl -d 20.04-copy01 -u nemukuma"
}
複製した環境がいらなくなった際は wsl --unregister (環境名)
コマンドを実行
PS C:\Users\nemukuma> wsl --unregister 20.04-copy01
これだけで破棄が完了です。
まとめ
仕事で使っていることもあり万が一環境が壊れたら嫌だなーと思いためらっていたのですが、これからログインのシェルをFishに変更したり、vimの設定を思いっきり変更してみようと思います。