メモの日々


2023年01月05日(木) [長年日記]

[windows] WSLのディストリビューションを非Cドライブに移動した

CドライブでWSLが使用している領域が大きかったので、別のドライブへ移動した。やったことをメモ。

インストールされているディストリビューションの確認

> wsl -l -v
  NAME                   STATE           VERSION
* Debian                 Stopped         2
  docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2

このDebianを移動したい。

エクスポートする

移動するために対象のディストリビューションをエクスポートする。

--vhdオプションを付けた方が速くエクスポートできるようだ。

コマンドを実行したフォルダに巨大なファイルが作られるので注意。

> wsl --export Debian debian.vhdx --vhd
エクスポートが進行中です。これには数分かかる場合があります。
この操作を正しく終了しました。

インポートする

> wsl --import debian2 M:\kenichi\wsl\debian debian.vhdx --vhd
インポート中です。この処理には数分かかることがあります。
この操作を正しく終了しました。

> wsl -l -v
  NAME                   STATE           VERSION
* Debian                 Stopped         2
  docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2
  debian2                Stopped         2

Mドライブへ別名でインポートした。インポート時にも --vhd オプションが必要。

この段階でインポートしたディストリビューションが動くことを確認したらいい。Windows Terminalでdebian2を選べるようになっているはず。

既定のディストリビューションを変更する

今後はdebian2の方を使うので、それを既定に設定する。

> wsl --set-default debian2
この操作を正しく終了しました。

> wsl -l -v
  NAME                   STATE           VERSION
* debian2                Stopped         2
  docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2
  Debian                 Stopped         2

移動元のディストリビューションを削除する

インポートしたディストリビューションが動くことを確認できたら移動元の方は削除する。

これでCドライブの空き容量が増えた。

> wsl --unregister Debian
登録解除。
この操作を正しく終了しました。

> wsl -l -v
  NAME                   STATE           VERSION
* debian2                Running         2
  docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2

既定のユーザーを設定する

インポートしたディストリビューションは起動するとログインユーザがrootになる。これを変更するにはディストリビューション内に /etc/wsl.conf を作るのがいいようだ。日本語の説明はわかりにくかったので英語版から引用。

Warning

This command will not work for imported distributions, because these distributions do not have an executable launcher. You can instead change the default user for imported distributions using the /etc/wsl.conf file.

$ cat /etc/wsl.conf
[user]
default=kenichi