WSL2 簡単にUbuntu を複数管理する方法

はじめに

普段、僕は 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」を複製してみようと思います。

既存環境をtarファイルとしてエクスポート

wsl --export (エクスポートしたい WSL 環境名) (出力ファイル名) コマンドを実行

PS C:\Users\nemukuma> wsl --export Ubuntu-20.04 Ubuntu-20.04-copy.tar
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$

指定したユーザーでログインできます。

Windows Terminal を使っている場合は?

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の設定を思いっきり変更してみようと思います。