— y2sunlight 2020-12-07
関連記事
リンク
本章では、「WSL2 インストール」でインストールした Ubuntu-20.04 を例に、WSL2のLinuxディストリビューションを複製する方法を説明します。
Microsoft Store からインストールした Linux ディストリビューションは以下の場所にあります。
{User Home}\AppData\Local\Packages\
このフォルダ下にパッケージ毎のフォルダがありそこにインストールされます。例えば、本編の「WSL2 インストール」で例題としてインストールした Ubuntu 20.04 LTS
は、以下のフォルダに配置されます。
{User Home}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc
Ubuntu をインストールした直後、筆者の環境では上のフォルダの中に以下のフォルダがありました:
AC\ AppData\ LocalCache\ LocalState\ RoamingState\ Settings\ SystemAppData\ TempState\
実際のストレージファイルは LocalState
フォルダの中にある ext4.vhdx
になります。このファイルがディストリビューションのエクスポートの対象です。
wsl --export <Distro> <FileName>
<Distro>
は wsl -l -v
で調べたディストリビューション名です。<FileName>
にはエクスポートするtarファイルのパス名を指定して下さい。
まず、Power Shell を起動して、エクスポートするディストリビューション(Ubuntu-20.04)を wsl -l -v
で調べます。
PS C:\> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Running 2
Ubuntuが起動中なら、Ubuntuのターミナルを閉じてから実行を停止します。
PS C:\> wsl -t Ubuntu-20.04
Ubuntu-20.04をエクスポートします。
PS C:\> wsl --export Ubuntu-20.04 D:\WSL2\Exports\Ubuntu-20.04.tar
wsl --import <Distro> <InstallLocation> <FileName>
<Distro>
には任意のディストリビューション名を指定できます。<InstallLocation>
にはインポート先のフォルダを指定します。<FileName>
にはインポートするtarファイルのパス名を指定して下さい。ここでは、先に Ubuntu-20.04 をエクスポートしたtarファイルをインポートします。
PS C:\> wsl --import Ubuntu-20.04-2 D:\WSL2\Packages\Ubuntu-20.04-2 D:\WSL2\Exports\Ubuntu-20.04.tar
wsl -l -v
でディストリビューションの一覧を表示します。
PS C:\> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2 Ubuntu-20.04-2 Stopped 2
Ubuntu-20.04の前に付いている *
はそれがデフォルトのディストリビューションであることを示しています。
また、この時点で D:\WSL2\Packages\Ubuntu-20.04
の中は以下のようになっています。
ext4.vhdx
Ubuntuのストレージイメージがあるだけです。
wsl -d <Distro> -u <UserName>
先にインポートした Ubuntu-20.04-2 をユーザを指定して起動します。ユーザ(y2sunlight) はエクスポートした時点のUbuntuに含まれるのでそのまま使用できます。
PS C:\> wsl -d Ubuntu-20.04-2 -u y2sunlight
この時、Power Shell が bash に切り替わりUbuntuが利用できるようになります。Power Shell に戻るには、exit
または logout
コマンドを使います。
$ exit
ショートカットを作成することで、新しいLinuxシェルを簡単に起動できます。デスクトップ上を右クリックして[新規作成][ショートカット]を選択し、以下の内容でショートカットを作ります。
項目の場所 | wsl -d Ubuntu-20.04-2 -u y2sunlight |
---|---|
ショートカットの名前 | Ubuntu-20.04-2 |
wsl --unregister <Distro>
先にインポートした Ubuntu-20.04-2 の登録解除を行います。登録解除するとストレージイメージ ext4.vhdx
も消えるので必要に応じてエクスポートしてバックアップして下さい。
まず、現在のディストリビューションを wsl -l -v
で調べます。
PS C:\> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2 Ubuntu-20.04-2 Running 2
Ubuntu-20.04-2が起動中なら実行を停止します。
PS C:\> wsl -t Ubuntu-20.04-2
Ubuntu-20.04を登録解除します。
PS C:\> wsl --unregister Ubuntu-20.04-2 登録を解除しています...