Hi,
this post contains some examples on how to interact with the Windows Subsystem for Linux. For an installation howto see my previous post.
List all available distributions for installation
wsl -l -o NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling openSUSE-42 openSUSE Leap 42 SLES-12 SUSE Linux Enterprise Server v12 Ubuntu-16.04 Ubuntu 16.04 LTS Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS
Install a distribution
D:\> wsl --install --distribution Ubuntu-20.04
Common status
D:\> wsl --status
List all installed distributions
D:\> wsl -l --all
A distribution within the subsystem will be automatically startet when command is executed or a terminal is openend.
List all running distributions
D:\> wsl -l --running
Set a wsl version for a distribution
D:\> wsl --set-version Ubuntu-20.04 2
Set the default wsl version
D:\> wsl --set-default-version 2
Execute a command in the default shell
D:\> wsl -d Ubuntu-20.04 cat /etc/issue Ubuntu 20.04 LTS \n \l
or
D:\> wsl -d Ubuntu-20.04 -- cat /etc/issue Ubuntu 20.04 LTS \n \l
and as user root
D:\> wsl -d Ubuntu-20.04 -u root apt update Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB] ....
open a terminal
D:\> wsl -d Ubuntu-20.04 To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details.
Or with the app execution aliases simply start a terminal by
D:\> debian
or Ubuntu
D:\> Ubuntu2004 To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details.
Accessing the windows filesystems from wsl. All windows disks are mounted unter /mnt/$Driveletter
michael@windev:/mnt/c/Users/Michael$ ls -l /mnt/ total 0 drwxrwxrwx 1 michael michael 512 Nov 21 12:55 c drwxrwxrwx 1 michael michael 4096 Nov 20 17:25 d drwxrwxrwx 1 michael michael 4096 Nov 20 17:25 m drwxrwxrwt 2 root root 40 Nov 22 21:10 wsl
Accessing the wsl linux filesystems from Windows with the wsl$ driver provider
D:\> dir \\wsl$\Ubuntu-20.04
Each Windows command could executed in a shell
michael@windev:/mnt/c/Users/Michael$ explorer.exe
Update the WSL 2 Kernel
D:\> wsl --update ... Kernel-Version: 5.10.60.1
Windows can show your Distributions under the navigation pane of the explorer. This can be switched on/off by setting System.IsPinnedToNameSpaceTree to 0 or 1
D:\> reg add HKEY_CURRENT_USER\Software\Classes\CLSID\{B2B4A4D1-2754-4140-A2EB-9A76D9D7CDC6} /ve /t REG_SZ /d Linux D:\> reg add HKEY_CURRENT_USER\Software\Classes\CLSID\{B2B4A4D1-2754-4140-A2EB-9A76D9D7CDC6} /v System.IsPinnedToNameSpaceTree /t REG_DWORD /d 1
Some settings can be configured by the app alias. The default user
D:\> ubuntu2004 config --default-user michael
Set the default distribution. If you omit the -d switch from the wsl command then this distribution is used as default.
D:\> wsl --set-default Ubuntu-20.04
Shutdown the wsl subsystem
D:\> wsl --shutdown
Terminate a wsl distribution
D:\> wsl --terminate Ubuntu-20.04
Unregister and delete the whole distribution (ext4.vhdx is deleted)
D:\> wsl --unregister Ubuntu-20.04
Also a whole distribution can exported to a tar file
D:\> wsl --export Ubuntu-20.04 D:\temp\ubuntu.tar
and imported from a tar file. The second parameter “D:\wsl\Ubuntu-20.04-imported” is the folder where the ext4.vhdx disk image is created
D:\> wsl --import Ubuntu-20.04-imported D:\wsl\Ubuntu-20.04-imported D:\temp\ubuntu.tar
Not tested yet (not included in 20H2, coming with Windows 11 Build 22000) : Mount a disk or device
D:\> wsl --mount
Not tested yet: Import a any/custom linux distribution
A custom linux image can installed when the distributor offers an tar file with the root filesystem. For example Alpine Linux
or you can convert docker os container into wsl images. See this post on howto do this…
By default the all files and folders unter /mnt not uses metedatas. This mens the permissions are set to 777 and cannot changed by chmod. This behavior can changed if you set
[automount]
options = "metadata"
in /etc/wsl.conf
Notes: Files where the wsl image are located: C:\Users\michael\AppData\Local\Packages. Each distribution has a subfolder. For example Ubuntu:
C:\Users\Michael\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc
The filesystem is located in an file called ext4.vhdx image in the LocalState folder.
Throubleshooting and commnon error
“WslRegisterDistribution failed with error 0x80070e19” => The Windows components Hyper V are not enabled. See my post
“Error: 0x800701bc WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel” => Install the latest Windows Updates
or
wsl --update
Michael