開発環境の構築 #3 WSL2 ディストリビューション保存場所移行

前々回前回で、WSL2 + Ubuntu + Docker 環境はあっさりできた。

インストールしたディストリビューションは、エクスプローラーのアドレス \\wsl$\ でアクセスできる。実際は C:\Users\name\AppData\Local\ に保存されているようなので、Cドライブ以外に移していく。

## WSL 停止

1. タスクトレイのDockerマークを右クリックし、Quit Docker Desktop をクリックして停止する
2. PowerShell で wsl --shutdown を実行

## WSL 現状確認

PowerShell で wsl -l -v 実行


  NAME                   STATE           VERSION
* Ubuntu-20.04           Stopped         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

## 移行先フォルダ作成

今回は D:\wsl とした。

## 現ディストリビューションをエクスポート

エクスポート先のドライブは D:\Temp とした。


wsl --export Ubuntu-20.04 D:\Temp\Ubuntu-20.04.tar
wsl --export docker-desktop D:\Temp\docker-desktop.tar
wsl --export docker-desktop-data D:\Temp\docker-desktop-data.tar

## 現ディストリビューションを解除

エクスポートが完了したので、現在のディストリビューションを解除する


wsl --unregister Ubuntu-20.04
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

wsl -l -v で確認。

## ディストリビューションをインポート

先ほど、エクスポートしたものをインポートしていく


wsl --import Ubuntu-20.04 D:\wsl\Ubuntu-20.04 D:\Temp\Ubuntu-20.04.tar
wsl --import docker-desktop D:\wsl\docker-desktop D:\Temp\docker-desktop.tar
wsl --import docker-desktop-data D:\wsl\docker-desktop-data D:\Temp\docker-desktop-data.tar

wsl -l -v で確認。

D:\Temp は必要ないので削除。バックアップとして残しておいてもいい。

## Ubuntu ログイン時のユーザーが root になる

ディストリビューションを別ドライブしたことで、ログイン時ユーザーが root になってしまったので修正する。

1. PowerShell で wsl --shutdown を実行。Docker を起動していたら同じくシャットダウン。
2. PowerShell で Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); }; を実行
3. PowerShell で WSL-SetDefaultUser Ubuntu-20.04 [UserName] を実行

## 参考

Windows 10 WSLのイメージ保管先変更
WSLでimport、export、デフォルトユーザー名を変更