追記(2024.09.11):export
したイメージをimport
するとユーザがroot
になってしまうという仕様の対応方法を追記
WSL(Windows Subsystem for Linux)用の作業イメージを作ってガシガシテストしたいなと思ったことはないですか?
自分は普段はDocker
を使用している事が多いのですが、Xっぽいアプリのある作業になると現状ではWSL版のUbuntuイメージ
のほうが作業しやすかったりします。(例えばEclipse
のインストールが必要だったり🥲)ただ、WSLでは同じOSのイメージのインストールではできないようで、といっても古いバージョンを改めてつくるというのも変な感じです。そこで、現状あるイメージのコピーを作成する方法を自分の為にまとめておきます。
- WSLのOSイメージの複製方法
- 初期状態の確認
- wsl --exportを使用してOSイメージを出力
- wsl --importを使用して、先程作成したOSイメージを取り込む
- wsl --distributionを使用して作成したOSイメージを起動する
- (作業イメージが不要になったら)wsl --unregisterでOSイメージごと削除する
- おわりに
WSLのOSイメージの複製方法
今回はインストール済のWSL
のOSをコピーする方法になります。サンプルに使用するのはWSL版Ubuntu24.04 LTS
です。
作業手順は以下になります。
wsl --export
を使用してOSイメージを出力(tarファイルの作成)wsl --import
を使用して、先程作成したOSイメージを取り込むwsl --distribution
を使用して作成したOSイメージを起動する- (作業イメージが不要になったら)
wsl --unregister
でOSイメージごと削除する
という順に作業を行います。
初期状態の確認
作業を行う前にまずターミナル(cmd
、powershell
どちらでもいいと思いますが、個人的にはpowershell
の方がおすすめ)を開いてwsl -l -v
を実行して確認します。
PS> wsl -l -v
現状ではWSL
のデフォルトのディストリビューションはUbuntu24.04LTS
になっています。今回はこれを流用して新しいイメージを作成します。
wsl --export
を使用してOSイメージを出力
ではUbuntu24.04 LTS
に対して wsl --export
を使用してtarファイルの作成を行います。exportコマンド
はサブオプションとして直接ディスクイメージを作成する--vhd
もありますが、デフォルトのtarファイル
のほうが使いやすそうです。
まず、WSL
で作成するイメージの置き場となるフォルダを作成しておきます。わかりやすくするためにCドライブのルートにwsl_imagesフォルダ
を作成し、その下に今回格納するubuntu_javaフォルダ
を作成します。作成後はフォルダに移動しておきます。
PS> cd \ PS> mkdir .\wsl_images PS> mkdir .\wsl_images\ubuntu_java PS> cd .\wsl_images\ubuntu_java
続いてwsl --export
を使用してOSイメージを出力します。今回は新しく作ったイメージにJava
のインストールするのでエクスポート名をUbuntu22.04-Java.tar
としました。
実行の一般系は以下の様になります。
wsl --export 【対象とするOSイメージ】【tarファイル】
PS> wsl --export Ubuntu-22.04 Ubuntu22.04-Java.tar
実行するとカレントフォルダにファイルが生成されます。
wsl --import
を使用して、先程作成したOSイメージを取り込む
tarファイル
ができたら、wsl --import
を実行してWSLに取り込みます。
実行の一般系は以下の様になります。
wsl --import 【作業イメージ名】 【イメージの保存フォルダ】【tarファイル】
PS> wsl --import Ubuntu22.04-Java C:\wsl_images\ubuntu_java\ .\Ubuntu22.04-Java.tar
実行が成功するとフォルダにext4.vhdx
が生成されます。
wsl -l -v
コマンドでも認識されていることが確認できるほか
エクスプローラーのナビゲーション表示のLinux
をみると作成したインポートしたイメージが追加されています。
wsl --distribution
を使用して作成したOSイメージを起動する
ここまできたら後は作成したイメージをwsl --distribution
で起動します。
実行の一般系は以下の様になります。(注意)このまま実行するとrootユーザでログインしてしまいます。回避するには以下の追記も御覧ください。
wsl --distribution 【作業イメージ名】 または wsl -d 【作業イメージ名】
wsl -d Ubuntu22.04-Java
これで新しく作成したイメージでの作業が実行できるようになりました。
追記(2024.09.11)
export
したイメージをimport
して起動すると、ログイン時にユーザがroot
になってしまうという仕様があるようです🙄
そのため、ログインユーザを指定したい場合には起動時に-uオプション
を指定する必要がるようです。
wsl --distribution 【作業イメージ名】-u 【ログインユーザ名 】
(作業イメージが不要になったら)wsl --unregister
でOSイメージごと削除する
作業後にもし不要となった場合にはwsl --unregister
を実行することでOSイメージの削除とともにWSLからの登録も削除されます。
実行の一般系は以下の様になります。
wsl --unregister【作業イメージ名】
PS> wsl --unregister Ubuntu22.04-Java
tarファイル
や作成フォルダに関しては削除されないので、必要があれば削除してください。
おわりに
WSL
の既存イメージをコピーして作業用のイメージ作成しました。これで失敗を恐れずガシガシ設定をいじることができるかなと思います。
また、今回の過程で作成したtarファイル
はバックアップファイルとしても使用できるので助かりますね。