Windows Subsystem for Linux (WSL) 環境を、インストール時の場所から変更する方法です。
注意事項
本記事の手順でWSL環境を別のディレクトリに変更した場合、
- Windowsの機能でWSLのアンインストールをしてもインストール先が消えない。本記事の手順でアンインストールする
- WSL環境のリセットが機能しなくなる
(参考:リセット方法)Windows 10のWSL環境を初期化してクリーンな状態に戻す:Tech TIPS – @IT
となります。
特に、WSLで複数ディストリビューションをインストールしている場合は、場所を移動したディストリビューションが、デフォルトになっていない場合にリセットを実行すると、どうも Windowsの設定から消えてしまうようです。
リセットは実行しないようにして下さい。
なお、移動した場所を、元の場所に戻すとリセットは機能するようになります。
WSL環境を別の場所に移す
ここでは、例として移動先ディレクトリを d:\\wsl\ とします。
この後の手順で LxRunOffline.exe を使用します。
https://github.com/DDoSolitary/LxRunOffline/releases/latest
にアクセスし、LxRunOffline-vXXXX.zip をダウンロード(XXXX部分はバージョンによる)・展開すると、LxRunOffline.exe があります。
PowerShell を開き、LxRunOffline.exe があるディレクトリに移動します。
インストール済みディストリビューション名を確認します
.\LxRunOffline.exe list と実行すると、ディストリビューション名が表示されます。
この例では、Ubuntu-18.04 です。
PS C:\LxRunOffline-v3.4.0> .\LxRunOffline.exe list Ubuntu-18.04
次のコマンドを実行すると、インストール済みディストリビューションの場所が表示されます。
-n に続けて、先ほど確認したディストリビューション名を指定します。
PS C:\LxRunOffline-v3.4.0> .\LxRunOffline.exe get-dir -n Ubuntu-18.04 C:\Users\XXXXXX\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_xxxxxxxxxxxxx\LocalState
WSLのバックグラウンドプロセスが無いように、WSLを再起動しておきます。
次の記事の手順です。
次のコマンドを実行して、移動先ディレクトリにユーザに書き込み権限を設定します。
$env:USERNAME の場所もそのまま書いてください。
icacls D:\wsl /grant $env:USERNAME":(OI)(CI)(F)"
移動実行します。
次のコマンドを実行します。
-n オプションで、移動対象を指定します。
手前の手順で .\LxRunOffline.exe list で確認したディストリビューション名を指定します。
-d オプションで、移動先を指定します。
.\LxRunOffline.exe move -n Ubuntu-18.04 -d d:\wsl\Ubuntu-18.04
手前の手順でWSLを再起動しておかないと、この時下記のようにエラーになります。
[ERROR] The distro "Ubuntu-18.04" has running processes and can't be operated.
次のコマンドで -n に続けて、以前の手順で確認したディストリビューション名を指定します。
ディストリビューションの場所が表示されるので、変更されていることを確認します。
PS C:\LxRunOffline-v3.4.0> .\LxRunOffline.exe get-dir -n Ubuntu-18.04 d:\wsl\Ubuntu-18.04
WSL で複数ディストリビューションをインストールしている場合、デフォルトディストリビューションが変わっていないか確認します。
.\LxRunOffline.exe gd
デフォルトが変わっていた場合、次のコマンドで -n でデフォルトにするディストリビューション名を指定します。
.\LxRunOffline.exe sd -n Ubuntu-18.04
移動したWSL環境のアンインストール
[注意事項] でも説明の通り、場所を移動すると、Windows10の設定-アプリ-アプリと機能 からアンインストールしても、インストール先ディレクトリは消されずに残ります。
その為、ここでの手順でアンインストールして下さい。
まず、WSLのバックグラウンドプロセスが無いように、WSLを再起動しておきます。
次の記事の手順です。
次のコマンドでアンインストールします。
-n でディストリビューション名を指定します。
.\LxRunOffline.exe ui -n Ubuntu-18.04
参考
WSL+LxRunOfflineでシステムドライブ外に環境構築 – Qiita
(a)WSLをCドライブ以外の場所に置き,(b)homeも別の場所に置いて,(c)chmodも使えるようにする方法.(自分用メモ) | 萌えとかプログラミングとか
WSLで同一のLinuxディストリビューションを複数インストールする方法 | 東京大学 佐々木淳 研究室 沿岸環境学 海岸工学 環境水工学 水環境学
コメント