Why Move Your WSL Distribution?
By default, WSL stores its Linux distributions in the C:\Users\ directory. This folder is often located on the system drive, which may have limited space compared to secondary drives like D: or E:. As your projects grow, so does the size of the virtual hard disk associated with your Ubuntu installation. Moving this file to a larger partition helps manage storage efficiently and keeps your system drive uncluttered.
Additionally, some users prefer to separate their development environments from their personal user profiles for backup purposes. Having the WSL distro in a dedicated folder makes it easier to version control, archive, or move between machines using external storage. If you are dealing with large datasets or extensive compilation caches, relocating the distro can significantly improve performance by reducing I/O contention on the system partition.
Exporting the Current Distro
The safest way to migrate any WSL distribution is to export it first. This creates a tarball containing all your files, configurations, and installed packages. Open PowerShell or Command Prompt as an Administrator, as these operations require elevated privileges to access system-level components.
First, verify that your Ubuntu 20.04.6 instance is running correctly by listing your installed distributions:
wsl --list --verbose
Identify the name of your current Ubuntu instance, typically something like Ubuntu-20.04. Then, use the --export flag to save the entire filesystem to a tar file. Choose a temporary location with enough free space to hold the compressed archive.
wsl --export Ubuntu-20.04 C:\Temp\ubuntu-backup.tar
This command may take several minutes depending on the amount of data stored in your Linux environment. Once completed, verify that the .tar file exists and has a reasonable size. Do not delete this file until you have confirmed the new installation works perfectly.
Unregistering the Old Instance
Before registering the new instance, you must remove the reference to the old one from the WSL registry. This step is crucial because WSL does not allow two instances with the same name to coexist, even if they point to different locations. Attempting to register a new instance with an existing name will result in an error.
Use the --unregister command followed by the distribution name. This action deletes the internal WSL metadata but does not affect the exported tar file you just created.
wsl --unregister Ubuntu-20.04
After unregistering, you can manually delete the old virtual hard disk files from C:\Users\ if you wish to reclaim space immediately. However, keeping them until the migration is verified provides a safety net. If you encounter issues during the import phase, you can simply re-import from the original package location.
Importing to the New Location
With the old instance removed, you can now register a new instance pointing to your desired directory. Create the target folder structure where you want your new WSL distro to reside, for example, D:\WSL\Ubuntu20.04.
Use the --import command to create a new instance. You must specify a new name for this instance, such as Ubuntu-New, since the original name is now available but we are creating a fresh registration.
wsl --import Ubuntu-New D:\WSL\Ubuntu20.04 C:\Temp\ubuntu-backup.tar --version 2
The --version 2 flag ensures that the new instance uses WSL 2, which is the recommended architecture for performance and compatibility. The second argument is the installation root directory, and the third is the source tar file. This process extracts the tarball into the new location, recreating your entire Linux environment.
Once the import completes, verify the new installation by listing your distributions again. You should see Ubuntu-New listed with status Running or Stopped.
Setting Up the New User
A common issue after importing a distro is that the default user might be set to root rather than your original username. To fix this, open the new instance:
wsl -d Ubuntu-New
If you find yourself logged in as root, you need to configure the default user. Edit the /etc/wsl.conf file inside the WSL instance:
nano /etc/wsl.conf
Add the following lines, replacing yourusername with your actual Linux username:
[user]
default=yourusername
Save the file and exit. Restart the WSL service from PowerShell to apply the changes:
wsl --shutdown
When you launch wsl -d Ubuntu-New again, it should automatically log you in as your standard user. You can now clean up the temporary tar file and the old package folders to free up disk space.
Frequently Asked Questions
Will my files be lost during migration?
No, your files are preserved because the export/import process copies the entire filesystem. However, always keep the backup tar file until you confirm the new instance works correctly to avoid accidental data loss.
Can I rename the distro after importing?
You cannot directly rename a registered distro. You must unregister the current instance and re-import it with the desired name, or create a new alias using shortcuts. The --import command sets the name at creation time.
Does moving the distro affect WSL 2 performance?
Moving the distro to a faster drive, such as an SSD, can slightly improve I/O performance. However, the core performance gains come from using WSL 2 instead of WSL 1, which is ensured by the --version 2 flag.
What if I forget my Linux password after migration?
If you are locked out, boot into root mode by adding /bin/bash to your wsl command or editing /etc/wsl.conf to default to root. Then reset the password using the passwd command within the terminal.
Is it safe to delete the AppData folder after migration?
Yes, once you have verified that the new instance runs correctly and contains all your data, you can safely delete the old files from AppData\Local\Packages to reclaim significant disk space.