困ってた事
WSLを開発環境として使ってます。開発環境が散らからないように
-
WSLの環境には開発環境を入れず、docker環境で開発する
-
asdfを使って切り替えながら開発する
等、気を付けてるんですが -
GPUのドライバーをいれた
-
GUI関係のパッケージを入れてた
-
動かないからいろんなパッケージをとりあえずいれてみた
等の戻れない成長を繰り返していました。WSLのディスク領域も肥大化してます。
複数のWSL環境を持てる
朗報を発見。
WSL2に複数のdestro(Ubuntu等)を構築できるってこと。
これです。求めていたのは。
用途専用のWSL環境や、使い捨てのWSL2環境を用意すれば、WSL2の環境をクリーンに保てて助かるぅ。
検証時には検証用のWSLを使って検証したり、専用のWSLを用意するというだけの話ですが、
ポイントは、Ubunuのインストール直後のイメージを保存しておくこと。これがあると、初期状態のUbuntuを後から作れて便利です。
以下は、私の場合の作業記録です。
参考になることがあったら参照ください。
作業記録
Ubuntuをインストール(2022/10月現在、Ubuntu 22.04.1 LTSがインストールされる)
updateを実行しておく
sudo apt update
sudo apt upgrade
デフォルトのユーザを指定しておく
user-nameの部分を、自分のユーザ名(ubuntuをインストール時に指定したユーザ)に変更して実行
$ cat << EOF > /etc/wsl.conf
[user]
default=user-name
Ubuntuをexportして削除する
>wsl --shutdown Ubuntu
>wsl --export Ubuntu d:\Ubuntu-22.04.tar
>wsl --unregister Ubuntu
デフォルトではc:\にイメージが保存されている。d:\に保存したかったので、一端unrigisterで削除して以下でd:\にインストールしています。
Ubuntu-20.04をMicrosoft storeからinstall。updateや、wsl.confを同様に作成する。
Ubuntu-20.04.tarとしてexportして、unrigisterで削除
>wsl --shutdown Ubuntu-20.04
>wsl --export Ubuntu-20.04 d:\Ubuntu-20.04.tar
>wsl --unregister Ubuntu-20.04
デフォルトで使用するUbuntuを作成
> mkdir d:\wsl
> wsl --import Ubuntu-default d:\wsl\Ubuntu-default D:\ubuntu-22.04.tar
> wsl --set-default Ubuntu-default
使い捨て用Ubuntu22.04のWSL2を作成
> wsl --import Dev-22.04 d:\wsl\Dev-22.04 D:\ubuntu-22.04.tar
使い捨て用Ubuntu20.04のWSL2を作成
> wsl --import Dev-20.04 d:\wsl\Dev-20.04 D:\ubuntu-20.04.tar
旧ubuntu環境をリストア
>wsl --import Ubuntu-20.04 d:\wsl\Ubuntu-20.04 D:\ubuntu2004.tar
課題
調査中の課題です(ご存じの方コメント歓迎です)
ディストリビューション間の通信
ディストリビューション間でscpしたいとか、NFSサーバでホームディレクトリを共有したい。
方法調査中(ご存じの方コメント歓迎です)
dockerがdefaultのWSLからしか使えない
Docker Desktop環境は、set-defaultで指定したWSLで動作していて、
defaultのWSLからは、dockerコマンドが使えますが、そのほかのWSLからは、次のエラーがでて使用できません。
この問題も、ディストリビューション間の通信ができればこれも解決すると思うんですが・・・。
この問題が解決するまでは、dockerを使用するのはデフォルトのディストリビューションからだけにするしかない。
参考
https://devlights.hatenablog.com/entry/2021/05/29/070000
https://qiita.com/sakai00kou/items/63eb506eb87282268b44