The Windows Subsystem for Linux (WSL) was introduced by Microsoft in the Windows 10 Anniversary Update. It allows users to run a full Linux user space in Windows. It is a much nicer approach for most applications than Cygwin, or using a Linux VM. It is not an emulator either. Think of it as GNU/Linux/Windows (apologies to Richard Stallman). This guide starts off with Microsoft’s instructions for installing the WSL, and then goes a few steps further by describing how to run graphical Linux applications.
Your PC must be running (at a minimum) a 64-bit version of Windows 10 with the Anniversary Update. The Creator’s Update is recommended.
To find your PC’s CPU architecture and Windows version/build number, open Settings>System>About. Look for the System Type and Version fields respectively, as shown in the screenshot below.
If your build is below 14393, try checking for updates.
You can enable the feature using a GUI or command-line interface.
Open a PowerShell prompt as administrator and run:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Restart your computer when prompted.
It is important that you DO restart when prompted as some of the infrastructure which the Windows Subsystem for Linux requires can only be loaded during Windows’ boot-up sequence.
Linux distributions can be installed using a script, or by using the Microsoft Store links below:
After installation your Linux distribution will be located at: %localappdata%\lxss\
This directory is marked as a hidden system folder for a very good reason:
Avoid creating and/or modifying files in this location using Windows tools and apps! If you do, it is likely that your Linux files will be corrupted and data loss may occur. Please read this blog post for more information.
The first time you launch a Linux distribution in Windows, you will be prompted to create a UNIX username and password.
This UNIX username and password has no relationship to your Windows username and password, and it can be different.
Use the same username that you use on remote Linux/UNIX systems, so you won’t need to specify it in individual configuration files, or every time you run commands like ssh
. Read more.
After you have set up your user, update the OS.
To do this on Debian/Ubuntu based distributions, run:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y
The Debian distribution for WSL is minimal, so many packages that you might expect to be installed, such as ca-certificates, are not installed. To fix this, run:
sudo apt install -y ca-certificates findutils command-not-found vim nano curl openssh-client less screen apt-utils top htop whois git python3-pip
Windows drives are mounted by their drive letters under /mnt
. For example, your Windows C: drive is accessible via /mnt/c.
To make it easier to access your Windows user directory, consider adding a symbolic link, such as:
ln -s /mnt/c/Users/Sean/ ~/winhome
On Amazon WorkSpaces, this your Windows user directory is located in /mnt/d/Users
.
That way, your Windows user directory is accessible from ~/winhome
.
In order to run Linux GUI applications using WSL, you must:
In order to run graphical Linux applications, you’ll need an X server.
VcXsrv is the only fully open source and up-do-date native X server for Windows. Download and run the latest installer, then locate the XLaunch shortcut in the Start Menu, and click it.
You will be greeted with a setup wizard. Accept the default options. On the last page of the wizard, click on the Save configuration button, and save the configuration file in %appdata%\Microsoft\Windows\Start Menu\Programs\Startup
, so vcXsrv will launch at startup without asking about these options, then click on the Finish button.
You may receive a prompt to allow it through your firewall. Cancel/deny this request! Otherwise, other computers on your network could access the server.
A X icon will appear in your system tray.
echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
. ~/.bashrc
If you use fish instead of bash:
echo "set -x DISPLAY localhost:0.0" >> ~/.config/fish/config.fish
. ~/.config/fish/config.fish
x11-apps
sudo apt-get install x11-apps
xeyes
A new window will open, containing a pair of eyes that will follow your mouse movements.
To use a GUI application from a server, simply use the -X
switch with the ssh
command, for example:
ssh -X user@server.example.com
And run the GUI application from the shell prompt.
Instead on installing the Linux version on Visual Studio Code on your WSL Linux distribution, install Visual Studio Code in Windows, and add the Remote Development extension pack.
After reloading Visual Studio Code, click on the green arrows at the bottom right corner of the window, and select Remote-WSL: New window
action.
A new window will open with a Linux shell and editor. You will be able to edit files on the Linux file system.
Any Visual Studio Code extensions need to be installed in your Windows instance of Visual Studio Code first, and then on the WSL instance.
Recommended extensions for information security professionals include:
This post was last modified on March 4, 2020 1:30 pm
View Comments
I followed all the steps, but when I start VcXsrv, it finish suddenly
A fatal error has occurred and VcXsrv will now exit
Cannot move old log file...
Please open xxxxx\VCXsrv.0.log for more information
This is the content of that log
Welcome to the VcXsrv X Server
Vendor: The VcXsrv Project
Release: 1.19.2.0
OS: Windows NT 6.2 build 9200 (64-bit)
Contact: marha@users.sourceforge.net
LoadPreferences: C:\Users\Sergio\AppData\Roaming\.XWinrc not found
LoadPreferences: Loading C:\Program Files\VcXsrv\system.XWinrc
Warning: Locale not supported by X, falling back to 'C' locale.
(II) AIGLX: enabled GLX_MESA_copy_sub_buffer
(II) AIGLX: enabled GLX_SGI_swap_control
(II) 103 pixel formats reported by wglGetPixelFormatAttribivARB
(II) GLX: Initialized Win32 native WGL GL provider for screen 0
winClipboardThreadProc - DISPLAY=127.0.0.1:0.0
OS maintains clipboard viewer chain: yes
Great article. I was actually looking for way to plot octave graphs in nice separate windows instead of the terminal. This solution is much more general that what I was searching for.
This worked like a charm for tkinter, thanks!
Worked great for X forwarding from a Linux machine to Windows over SSH. Thank you very much.
Worked here in surface pro 3. Thankss
i forget password, how to change?
See this post for details on how to reset the password https://askubuntu.com/a/808425
Worked here, thank you! :)
when I entered gedit command it's shoes this please help to find the solution
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
seems to work perfectly for me
Worked like a champ!