概要
WSL2の Linuxディストリビューションの仮想ディスク(vhdxファイル)を、Cドライブ以外に配置して使うための手順です。
WSL2の仮想ディスクはデフォルトでCドライブに配置されていますが、使っているとファイルサイズが大きくなります。Cドライブの空き容量が足りなくなったら移動すると良いです。
vhdxファイルが100GBを超えるくらい大きくなっていても、エクスプローラーでのファイルコピーには時間がかかりますが、その他の処理はすぐ終わります。
所要時間: 5~10分くらい
(1) WSLで Linuxをインストール
好きな Linuxディストリビューションをインストールして VHDXファイルを作成します。
※インストール済みのディストリビューションを移動する場合は、この作業は飛ばしてください
# インストールできる Linux 一覧を確認
PS> wsl -l -o
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
...
# 好きな Linux をインストール
PS> wsl --install -d Ubuntu-24.04
インストール中: Ubuntu 24.04 LTS
Ubuntu 24.04 LTS がインストールされました。
Ubuntu 24.04 LTS を起動しています...
# ユーザー名とパスワードを入力
Enter new UNIX username: [ユーザー名を入力]
New password: [パスワードを入力]
Retype new password: [パスワードを再入力]
# Linuxシェルが起動したら終了させる
$ exit
(2) VHDXファイルを配置場所へコピー
コピー作業の前に、WSLを終了します。
# WSLを終了する
PS> wsl --shutdown
# インストール済みの Linux 一覧を表示
PS> wsl -l -v
NAME STATE VERSION
* Ubuntu-24.04 Stopped 2
エクスプローラーで "C:\Users\ユーザー名\AppData\Local\Packages" を開いて、ディストリビューションのVHDXファイルを探します。Ubuntu 24.04 の場合は以下のフォルダにあります。
C:\Users\ユーザー名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_XXXXXXXXX\LocalState\
LocalStateフォルダ内の ext4.vhdx を別のドライブの好きな場所にコピーします。
(3) VHDXファイルを WSL にインポート
コピーした ext4.vhd (この例では "D:\XXX\My-Ubuntu-24\ext4.vhdx") を、新しい LinuxディストリビューションとしてWSLにインポートします。
# VHDXファイルを Linux「My-Ubuntu-24」としてインポート
PS> wsl --import-in-place My-Ubuntu-24 "D:\XXX\My-Ubuntu-24\ext4.vhdx"
# インストール済みの Linux 一覧を表示
PS> wsl -l -v
NAME STATE VERSION
* Ubuntu-24.04 Stopped 2
MY-Ubuntu-24 Stopped 2
# インポートした Linux「My-Ubuntu-24」を起動
PS> wsl -d My-Ubuntu-24
(4) 初期設定
インポートした Linux を起動すると、rootユーザーでシェルが起動するので、以下を実行します。
# wsl.conf を修正
root@HOSTNAME# echo "
[user]
default=<普段使うユーザー名>
[interop]
enabled=true
" >> /etc/wsl.conf
# ユーザーを変更
root@HOSTNAME# su - <普段使うユーザー名>
Password: [パスワードを入力]
# .bash_profile を作成
$ echo "
# カレントディレクトリをホームに設定
[[ \$SHLVL -eq 1 ]] && cd ~
# .bashrc を読み込み
if [[ -f ~/.bashrc ]] ; then
. ~/.bashrc
fi" >> ~/.bash_profile
# シェルを終了
$ exit
# rootのシェルを終了
root@HOSTNAME# exit
# WSLを終了
PS> wsl --shutdown
(5) 動作確認
# Linux「My-Ubuntu-24」を起動
PS> wsl -d My-Ubuntu-24
移動前に Dockerを使用していた場合、Dockerコンテナはすべて消えています。docker compose up
コマンドなどで作りなおします。
# Dockerコンテナを表示
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
(6) 古い仮想ディスクを削除
動作に問題がなければ、古い Linuxディストリビューションを削除します。この時、古い仮想ディスク (vhdxファイル) も自動的に削除されます。
# インストール済みの Linux 一覧を表示
PS> wsl -l -v
NAME STATE VERSION
* Ubuntu-24.04 Stopped 2
MY-Ubuntu-24 Stopped 2
# 古い Linuxディストリビューションを削除
PS> wsl --unregister Ubuntu-24.04
# インストール済みの Linux 一覧を表示。「Ubuntu-24.04」が消えた
PS> wsl -l -v
NAME STATE VERSION
* MY-Ubuntu-24 Stopped 2
参考にした記事