====== WSL2 ディストリビューションの複製 ======
--- //[[http://www.y2sunlight.com|y2sunlight]] 2020-12-07//
[[wsl2:top|WSL2に戻る]]
関連記事
* [[wsl2:install|WSL2 インストール]]
* [[wsl2:command|WSL2 コマンドリファレンス]]
* [[wsl2:interop|WSL2 LinuxとのWindowsの相互運用性]]
* WSL2 ディストリビューションの複製
* [[wsl2:terminal|Windows ターミナル]]
リンク
* [[https://docs.microsoft.com/en-us/windows/wsl/reference|Command Reference for Windows Subsystem for Linux]] --- Microsoftドキュメント
本章では、「[[wsl2:install|WSL2 インストール]]」でインストールした Ubuntu-20.04 を例に、WSL2のLinuxディストリビューションを複製する方法を説明します。
-----
===== ストレージファイルの所在 =====
Microsoft Store からインストールした Linux ディストリビューションは以下の場所にあります。
{User Home}\AppData\Local\Packages\
このフォルダ下にパッケージ毎のフォルダがありそこにインストールされます。例えば、本編の「[[wsl2:install|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
* '''' は ''wsl -l -v'' で調べたディストリビューション名です。
* '''' にはエクスポートする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
* '''' には任意のディストリビューション名を指定できます。
* ''''にはインポート先のフォルダを指定します。
* '''' にはインポートする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 -u
* はディストリビューション名を指定します。
* はユーザ名を指定します。省略すると root で実行されます。
=== 実行例 ===
先にインポートした 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
* はディストリビューション名を指定します。
=== 実行例 ===
先にインポートした 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
登録を解除しています...
\\