I have cloned a WSL distro using
wsl --export and
wsl --import, but now, running
wsl newdistro always logs me in as root. I understand that the
lxrun command is deprecated and want to avoid it. The docs recommend using
distroname.exe config, but that doesn't work, since this one doesn't have a corresponding executable.
I have cloned a WSL distro using
As of the time of this writing, there are at least three (let's call it 3.5) different methods of changing/setting the default user in a WSL instance. While the two that have already been mentioned still work, there is a Microsoft recommended way to do it that hasn't been mentioned yet in this question.
Method 1 -
The current Microsoft recommended way of setting the username in an instance is to create a
/etc/wsl.conf in the instance with the following setting:
Changing, of course, username to be your default username.
This is safer and less error-prone than the registry-based methods.
Method 2 - Registry Key
Setting the registry key per @harrymc's answer.
Method 3 - LxRunOffline
Semi-method 4 - Runtime user selection via
wsl commandline argument
The username can be selected when starting any WSL instance by:
wsl -u username or
wsl -d distroname -u username, etc.
wsl -d Ubuntu -u root.
The normal command syntax is for example:
ubuntu config --default-user new_user_name
However, this does not work for an imported distro, which is started by the following command :
wsl --distribution <DistributionName>
Try this undocumented method:
regeditand navigate to the key:
- Examine its subkeys for a distribution that has the right name in the
- Create or modify a DWORD item named
DefaultUidand set it to the user-id (uid) of your default user. Here root user is id
0while the first user id is 1000 (
If this does not work for your setup, you would need to run as:
wsl --distribution ubuntu -u user_name
For more information see :
If you are installing some custom distributions in WSL, you will not get a "distroname.exe" command to change the configuration. You may use LxRunOffline to change the default user. This toolset can be installed in Windows using
choco install lxrunoffline.
Get the default user id of a distro
LxRunOffline allows you get and set the default user id (
uid) for any installed distributions. For instance, if you have a distro named
newdistro you may check the default user using
gu (get default user) and
-n with the name of the distribution:
lxrunoffline gu -n newdistro
The command returns a number, the user id of the default user:
rootuser has the
- the default user created during the install has the
Set the default user id for a distro
If you want to set the
root as the default user, you can make it using
su (set default user) with
-n and the name of the distro, and
-v with the user id, i.e.,
0 for the
lxrunoffline su -n newdistro -v 0
If you are using Windows Terminal then you can configure a profile for your distribution.
In the Profiles settings for Windows Terminal select your distro's profile, then click the General Tab and under
Command line you can use one of the previously recommended options for the
For example, if you named your Profile
Ubuntu and your username is
bob, then you would set
Command line to
wsl.exe -d Ubuntu -u bob
While you're at it, you can configure the
Starting directory, aka the one opened by default when you open a terminal for your distro with:
Using the previous example, for a distro named
Ubuntu and a username of
bob, you would set
Starting directory to: