Warning
As I switched the OS, I am not updating this script or fixing bugs anymore.
Have a look at the issue tab for some known issues.
Happy to merge PRs with fixes.
PowerShell script to move WSL 1 and WSL 2 distros VHDX file to a different location.
Warning
This script uses official
wsl
commands and was used by a lot of people. Nevertheless some people had weird issues that resulted in broken WSL disks. Make sure you have a backup of your data, so you can restore in case of an error.
Interactive way of moving wsl for Windows PowerShell.
./move-wsl.ps1
- Select your distro
- Enter your target (i.e.
D:\wsl target\ubuntu
)
Before moving Docker WSL make sure to stop the Docker service. Otherwise Docker will crash and you may need to reset it to factory defaults.
Set your default user inside your distro by adding the following configuration to your /etc/wsl.conf
.
[user]
default=YOUR_USERNAME
If the file doesn't exist create it manually. Then exit your distro, terminate it (wsl -t YOUR_DISTRO
) and start it again. For further options see Microsoft Docs.
Some distributions also allow settings the default user via command line with YOUR_DISTRO config --default-user YOUR_USER
(e.g. ubuntu config --default-user johndoe
). Make sure to shutdown your distro before (wsl -t YOUR_DISTRO
).
Since we need to unregister to import it with the same name, the standard distro can be switched. Just set your standard distro again:
wsl -s YOUR_DISTRO
On import the distro will be registered with the current default WSL version. You can set your default WSL version with wsl --set-default-version <Version>
.
When the WSL version was accidentally changed while moving, you can set the version with wsl --set-version <Distro> <Version>
.