WSL2でディストリビューションの名前やファイルの場所を変更する方法


みなさん、こんにちは。イノベーションLABのハヤシです。
オフィスに出社する際にお土産を持ってくると「野球観に行ってきたんですか?」と聞かれます。
だいたい合ってます。聞かれたいのでお土産を買っているところがあります。
夏の甲子園が終わっても、秋の大学野球に、神宮大会。まだまだ楽しみは尽きません。


さて、今回は開発環境構築についてのお話です。


以前、 GitBash での環境構築についての記事を書きました。
blog.css-net.co.jp

最近は、WSL(Windows Subsystem for Linux) 2 が安定してきたのもあってすっかり WSL2 がメイン開発環境になっています。
そこで、今回はすでに WSL2 を活用している方向けに、ディストリビューションの名前や場所を変更する方法についてご紹介します。


このように困っている方の助けになれば幸いです。

  • 最初にディストリビューションをインストールした後、同じもので別環境を作りたいけど名前を変えてインストールできない...!
  • プロジェクトごとのディストリビューションに名前を付けて管理したい
  • ディストリビューションの設定を他のメンバーに共有したい、別のマシンに引っ越したい
  • WSL2 がストレージ容量を圧迫しているので別ドライブに移動させたい


WSL2 自体の環境構築についてもおいおいご紹介できればと思っていますので、あくまで今回の対象は「すでに WSL2 の環境構築が終わっている方」となります。
WSL2 について知りたい方については、こちらをご参照ください。
learn.microsoft.com

1. 前提条件

  • OS - Windows 10
  • WSL(Windows Subsystem for Linux) 2
    • 変更するために何らかのディストリビューションがインストールされていること

※手順の中に出てくる「<>」は、「<>」も含めて指定のものに置換してください。
例)

wsl -t <ディストリビューション名>
# ディストリビューション名が「Ubuntu」の場合は以下のコマンドに置き換える
# wsl -t Ubuntu

2. 手順

2-1. 事前確認

「Windows + x」でメニューを開き、「WindowsPowerShell(管理者)」をクリックして PowerShell を開きましょう。
PowerShell で作業します。

以下のコマンドで、これらを確認しておきましょう。

  • 対象のディストリビューション名
    • ここでは「Ubuntu」
  • 停止しているかどうか
    • 「Stopped」になっていれば停止しています。
wsl -l -v

もしステータスが「Stopped」ではなく「Running」などになっている場合は、以下のコマンドで停止しておきましょう。
※VSCode などで対象のディストリビューションに接続していると起動してしまうので、閉じておきましょう

# 対象のディストリビューションを停止
wsl -t <ディストリビューション名>

2-2. 実施の流れと情報整理

以下の手順で名前と場所変更を行っていきます。

  • ディストリビューションを tar ファイルにエクスポート
  • ディストリビューションを登録解除(削除)
  • エクスポートしたファイルを新しい名前と場所でインポート


実施する前に、以下を決めておきましょう。

  • エクスポートする tar ファイルのパス
  • 新しく設定するディストリビューションの名前
  • 新しくファイルシステムを配置したいディレクトリ
    • WSL2 での作業ファイルが保存されていくので、十分な容量が確保できる場所にしましょう


今回はこれで設定していきます。

  • エクスポートする tar ファイルのパス
    • ⇒ C:\wsl\Ubuntu.tar
    • ※tar ファイルの名前は元のディストリビューションの名前と一致している必要はありません
    • C:\wsl ディレクトリはあらかじめ作成しておきます
  • 新しく設定するディストリビューションの名前
    • ⇒ SampleUbuntu
  • 新しくファイルシステムを配置したいディレクトリ
    • ⇒ C:\wsl\SampleUbuntu
    • ※ディストリビューションの名前と一致している必要はありませんが、一致しているとわかりやすくなります

2-3. エクスポート

それではすすめていきます。
以下のコマンドで、元のディストリビューションをエクスポートします。

# ファイルにエクスポート
wsl --export <元のディストリビューション名> <エクスポートする tar ファイルのパス>

# 今回の例なら以下のようになります
# wsl --export Ubuntu C:\wsl\Ubuntu.tar

少し時間がかかりますので、完了まで待ちましょう。

エクスポートが完了していることを確認します。

2-4. 旧ディストリビューションの登録解除

以下のコマンドで元の環境を登録解除します。

wsl --unregister <元のディストリビューション名>

# 今回の例なら以下のようになります
# wsl --unregister Ubuntu

以下のコマンドで、一覧から消えていることを確認します。

wsl -l -v


2-5. インポートと確認

以下のコマンドでエクスポートしたファイルを新しい名前・場所でインポートします。

wsl --import <新しいディストリビューション名> <ファイルシステムを配置したいディレクトリ> <tar ファイルパス>

# 今回の例なら以下のようになります
# wsl --import SampleUbuntu C:\wsl\SampleUbuntu C:\wsl\Ubuntu.tar

以下のコマンドで作成されていることを確認します。

wsl -l -v

指定したディレクトリにファイルが作成されていることを確認します。

VSCode などから接続できることを確認しましょう。

※PowerShell から、以下のコマンドでも確認できます

wsl -d <新しいディストリビューション名>

# 今回の例なら以下のようになります
# wsl -d SampleUbuntu


インポートできたことが確認出来たら、エクスポートした tar ファイルは不要ですので削除して問題ありません。

2-6. ファイルシステムの配置場所を後から確認する方法

もしファイルシステムを配置しているディレクトリがわからなくなってしまったら、以下のコマンドでレジストリから確認することができます。

Get-ItemProperty -Path Registry::HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\*

「DistributionName」が対象のディストリビューション名のセクションの、「BasePath」で確認できます。

2-7. 補足

同じ設定で違う名前のディストリビューションを立ち上げたい場合は、 tar ファイルからまた別の名前でインポートすることができます。
基本的な設定が終わった状態の tar ファイルを保存しておいて活用するのもよいですね。


また、この手順を使用すると、 Microsoft Store にないディストリビューションでも tar ファイルを入手すれば自身の WSL2 上に環境を作成することができます。

3. 最後に

手順をまとめます。

# 対象のディストリビューションが停止していることを確認しておく

# ファイルにエクスポート
wsl --export <元のディストリビューション名> <エクスポートする tar ファイルのパス>

# 元のディストリビューションの登録解除
wsl --unregister <元のディストリビューション名>

# 新しい名前でインポート
wsl --import <新しいディストリビューション名> <ファイルシステムを配置したいディレクトリ> <tar ファイルパス>

以上です。

新しくディストリビューションをインストールしたら、わかりやすい名前と場所に変更しておく癖をつけておくとよいでしょう。

それでは。よいエンジニアライフを。

4. 参考