WSLのルートを別のドライブで使いたい
WSLのルートディレクトリ
以前セットアップしたWSLですが、開発環境としての役割が高まってきたことで、システムドライブのサイズが気になってきました。
セットアップしたときに少し触れましたが、wslのルートディレクトリは以下の場所に存在しています。
C:\Users\(ユーザ)\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
いろいろな事情でこんなディレクトリになったのでしょうけど、どうにかならなかったのでしょうか。
それはともかく、Cドライブを使うのはやめたいので、調べてみたらとても簡潔にまとまっている記事を見つけました。


本当に分かり易いので、手順の概要と少しだけ情報を付け加えさせていただきます。
前提として、すでにWSLがセットアップ済みであることが条件となります。
手順概要
LxRunOfflineのインストール
Chocorateryがインストール済みであれば、以下のコマンドでインストール。
(以下、管理者権限のPowerShellで実行してください)
PS> choco install lxrunoffline
またはリリースページからダウンロードする。

Linuxイメージのダウンロード
決め打ちですが、今セットアップしているUbuntu 18.04は以下のURLでダウンロードできます。
https://lxrunoffline.apphb.com/download/Ubuntu/bionic
別のイメージは、Wikiページで確認してください。
ボリュームの作成
PS> LxRunOffline i -n Ubuntu -d D:\wsl -f ubuntu-bionic-core-cloudimg-amd64-root.tar.gz
このコマンドが肝となります。
-n Ubuntu : 作成するボリューム名(WSLで認識する名前です)
-d D:/wsl : ボリュームの生成先(ここで指定したディレクトリにインストールされます。)
-f (ダウンロードしたイメージファイル)
これで指定したディレクトリにWSLのボリュームを作成できます!
作成したボリュームを既定にする
wsl.exeで起動するボリュームを既定にするには以下の通り。
PS D:\temp> wslconfig /list
Windows Subsystem for Linux ディストリビューション:
Ubuntu-18.04 (既定)
Ubuntu
#現在は初期にインストールした、Ubuntu-18.04が既定となっています。
PS D:\temp> wslconfig /setdefault Ubuntu #作成したボリューム名を指定します。
PS D:\temp> wslconfig /list
Windows Subsystem for Linux ディストリビューション:
Ubuntu (既定)
Ubuntu-18.04
これで既定が変わりました。
起動や初期設定
wslで起動するとrootでログインできていると思いますので、必要なアップデートやログインユーザの作成などを実施しましょう。


ボリュームの削除
PS> LxRunOffline ui -n Ubuntu
これでボリュームの削除ができます。
複数のWSL環境を使う
ボリュームの作成で、ボリューム名とインストールディレクトリを変えておけば複数の環境を作ることが可能です。
例えば、
PS> LxRunOffline i -n Ubuntu_prj1 -d D:\wsl_prj1 -f ubuntu-bionic-core-cloudimg-amd64-root.tar.gz
と、別のボリューム、インストール先を指定すれば新たな環境としてインストールされます。
PS> wslconfig /l
Windows Subsystem for Linux ディストリビューション:
Ubuntu (既定)
Ubuntu-18.04
Ubuntu_prj1 #新しいボリューム!
wsl起動時に-dオプションでボリューム(というかディストリビューションですね)を指定すれば、そのボリュームの環境に入ることが出来ます。
PS> wsl -d Ubuntu_prj1
これでWSL環境の切り分けができて、すっきりするのではないでしょうか。
以上です。