VHDXファイルを別ドライブに移動する
目的
- WSL2の仮想ハードディスクファイルであるVHDXファイルをデフォルトのCドライブから別ドライブに移動する
- VHDXファイルを数10GB以上になるので、Cドライブのディスクスペースを節約できる
- ここではUbuntu-20.04を対象とする
1. WSLを終了する
> wsl -l -v
NAME STATE VERSION
* Debian Stopped 1
Ubuntu-20.04 Running 2
> wsl --shutdown Ubutu-20.04
> wsl -l -v
NAME STATE VERSION
* Debian Stopped 1
Ubuntu-20.04 Stopped 2
- wslコマンドでディストリビューションを確認してから終了する
2. 既存のVHDXファイルをバックアップする
> cd $env:LOCALAPPDATA
> dir -name *ubuntu*
CanonicalGroupLimited.Ubuntu20.04onWindows_...
> cd CanonicalGroupLimited.Ubuntu20.04onWindows_...\LocalState
> cp .\ext4.vhdx D:\tmp\ext4.vhdx
- デフォルトでは%LOCALAPPDATA%以下にある
- ディストリビューションのパッケージ名は上のようにして探す
- <パッケージ名>\LocalState\ext4.vhdxが目的のファイルで、それを適当な場所(ここではD:\tmp\ext4.vhdx)にコピーしてバックアップする
3. 既存のUbuntu-20.04をアンインストールする
> wsl --unregister Ubuntu-20.04
登録を解除しています...
- wslコマンドでunregisterする(が、する必要ないかも)
- 設定アプリを起動して、Ubuntu-20.04をアンインストールする
4. Ubuntu-20.04をインストールしなおす
- MSストアでUbuntu-20.04をインストールする
- Ubuntu-20.04を起動して、ユーザー名、パスワードなどを設定する
- Ubuntu-20.04を終了する
5. バックアップしたVHDXファイルに戻す
> mkdir D:\WSL # (1)
> cd D:\WSL
> mkdir Ubuntu-20.04
> cd D:\WSL\Ubuntu-20.04
> wsl --shutdown Ubuntu-20.04 # (2)
> wsl --export Ubuntu-20.04 D:\tmp\wsl.tar # (3)
> wsl --unregister Ubuntu-20.04 # (4)
> wsl --import Ubuntu-20.04 D:\WSL\Ubuntu-20.04 D:\tmp\wsl.tar # (5)
> cp D:\tmp\ext4.vhdx D:\WSL\Ubuntu-20.04\ext4.vhdx # (6)
> ubuntu2004.exe config --default-user [username] # (7)
- (1) Dドライブに新しいVHDXファイルの置き場所D:\WSL\Ubunutu-20.04を作成する
- (2) Ubunutu-20.04をいったん終了する
- (3) Ubunutu-20.04をExportしてwsl.tarとして保存する
- (4) Ubunutu-20.04を登録解除する
- (5) Exportしたwsl.tarをImportする
- (6) ext4.vhdxファイルを最初にバックアップしたファイルで上書きする(ファイルサイズが大きいので時間が掛かる)
- (7) デフォルトユーザーを設定する(usernameは以前と同じものにする)
参考
https://github.com/MicrosoftDocs/WSL/issues/412