WSL2を使ってみる その5(同じバージョンのディストリビューションを複数インストール、Ubuntu 22.04)
はじめに
今回はWSL2で同じバージョンのUbuntu環境をもう一つインストールしました。
元々インストールしていたWSL2のUbuntu 22.04の環境を壊したくなかったので、別でインストールする方法を探していました。AI系のソフトウェアだとCUDAやCondaなどのバージョンが依存して困ることがあったので、Ubuntu環境ごと切り替えても使えるようにしたいと思っています。
▼以前の記事はこちら
ディストリビューションのインポート
最初にUbuntu 20.04をインストールしようとしました。
▼以下のページにUbuntu 20.04のイメージがあります。
https://cloud-images.ubuntu.com/releases/focal/release
しかし、このページのものはWSL用ではないのでインストールできません。試してみると失敗しました。
▼ubuntu-20.04-server-cloudimg-amd64.tar.gzをインストールしてみました。

▼この後の手順で失敗しました。

WSL用のイメージファイルが必要です。
▼親ディレクトリに移動していくと一覧があり、wslフォルダもそこにありました。
https://cloud-images.ubuntu.com
Ubuntu 22.04以降のものだけがありました。
▼今回は以下のリンクからダウンロードしました。
https://cloud-images.ubuntu.com/wsl/jammy/current
▼ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gzをダウンロードしました。

ダウンロードしたものをインポートします。
▼WSL2のコマンドは以下のページに書かれています。
https://learn.microsoft.com/ja-jp/windows/wsl/use-custom-distro#import-the-tar-file-into-wsl
PowerShellを管理者権限で起動し、以下の形式のコマンドでインポートします。
wsl.exe --import <Distro> <InstallLocation> <FileName> [Options]私の環境の場合は以下のように実行しました。なおUbuntu22.04なのにUbuntu2004になっていますが、その前に検証していたものの名残で間違えました。後で名前を変更します。
mkdir W:\Ubuntu2004_GS
wsl --import Ubuntu2004_GS "W:\Ubuntu2004_GS" "C:\Users\mgs_1\Downloads\ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz"▼問題なくインポートできました。

以下のコマンドで追加されているかどうか確認できます。
wsl -l -v▼Ubuntu2004_GSとして追加されています。

以下のコマンドで環境を有効化できます。
wsl -d Ubuntu2004_GS▼rootとしてログインされました。

この時点ではユーザー名やパスワードの設定画面が起動せず、rootとしてログインしているようでした。
なお、失敗した場合はファイルを削除して、登録を解除すれば再度イントールできます。
wsl --unregister Ubuntu2004_GS▼以前も同じように、登録を解除してから再インストールしました。
ターミナルを起動する
先程はrootとしてログインしていましたが、ユーザーを登録してログインできるようにします。Ubuntu環境を有効にしてから以下のコマンドを実行しました。
adduser <ユーザー名>
usermod -aG sudo <ユーザー名>▼パスワードの入力も求められました。

▼/homeディレクトリに登録したユーザー名のフォルダがあることが確認されました。

/etc/wsl.confを編集して、デフォルトのユーザーを設定しました。
sudo nano /etc/wsl.conf▼[user]の欄にdefault=<ユーザー名>と記述しました。

この後PowerShellを開き直し、再度Ubuntu環境を有効化すると、登録したユーザーでログインされました。
▼ディレクトリはWindowsのものになっているのですが、cdコマンドを引数無しで実行するとユーザーディレクトリに移動できました。

▼Ubuntu 22.04になっています。

コピーを作成して名前を変更する
恥ずかしながら、Ubuntu 22.04なのにUbuntu2004という名前にしてしまっていたので、変更しました。WSL2のコマンドで一度現在の環境をエクスポートし、別名でインポートすることで対処しました。
まずは以下のコマンドでtarファイルをエクスポートしました。
wsl --export Ubuntu2004_GS ubuntu2004_gs.tar▼問題なく実行できました。

▼実行ディレクトリにtarファイルが作成されていました。

以下のコマンドでインポートします。
wsl --import Ubuntu2204_GS W:\Ubuntu2204_GS ubuntu2004_gs.tar▼リストにも追加されていました。

▼ちゃんとUbuntu 22.04として起動していました。

名前を間違えていた環境は登録を解除して削除しました。
wsl --unregister Ubuntu2004_GS▼フォルダの中も空になっていました。

ショートカットを作成する
普段ならWindowsのスタートボタンを押すと、Ubuntuのターミナルを起動できるアプリケーションが用意されていました。
▼こんな感じです。

今回は見当たらなかったので、ショートカットをデスクトップに作成しておきました。
▼デスクトップ上を右クリックすると、新規作成の欄にショートカットがあります。

▼Ubuntu環境を有効にするときのコマンドをもとにショートカットを作成します。


▼ショートカットが追加されました!ダブルクリックすると、ログインした状態のターミナルが表示されました。

なおターミナルのプルダウンメニューには追加されていたので、こちらからでもターミナルに入れます。
▼選択すると、ユーザーディレクトリから始まりました。

最後に
これまで各バージョンのUbuntu環境は1つだけ利用していたのですが、これで複数の環境を構築して利用できそうです。
最近試していた3D Gaussian Splatting関連の環境構築も、今回の検証に合わせて別のPCで構築しようと思っています。
▼Node-REDでWSL2を利用してUbuntu環境のコマンドを実行するマニアックなノードも開発していたのですが、さらに環境を切り分けたノードに改良できそうです。


