Troubleshooting Windows Subsystem for Linux
For support with issues related to WSL, please see our GitHub repo:
Search for any existing issues related to your problem
For technical issues, use the product repo: https://github.com/Microsoft/wsl/issues
For issues related to the contents of this documentation, use the docs repo: https://github.com/MicrosoftDocs/wsl/issues
Submit a bug report
For bugs related to WSL functions or features, file an issue in the product repo: https://github.com/Microsoft/wsl/issues
Submit a feature request
To request a new feature related to WSL functionality or compatibility, file an issue in the product repo: https://github.com/Microsoft/wsl/issues
Contribute to the docs
To contribute to the WSL documentation, submit a pull request in the docs repo: https://github.com/MicrosoftDocs/wsl/issues
Terminal or Command Line
Lastly, if your issue is related to the Windows Terminal, Windows Console, or the command-line UI, use the Windows terminal repo: https://github.com/microsoft/terminal
Bash loses network connectivity once connected to a VPN
If after connecting to a VPN on Windows, bash loses network connectivity, try this workaround from within bash. This workaround will allow you to manually override the DNS resolution through
- Take a note of the DNS server of the VPN from doing
- Make a copy of the existing resolv.conf
sudo cp /etc/resolv.conf /etc/resolv.conf.new
- Unlink the current resolv.conf
sudo unlink /etc/resolv.conf
sudo mv /etc/resolv.conf.new /etc/resolv.conf
a. Delete the first line from the file, which says "# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line.".
b. Add the DNS entry from (1) above as the very first entry in the list of DNS servers.
c. Close the file.
Once you have disconnected the VPN, you will have to revert the changes to
/etc/resolv.conf. To do this, do:
sudo mv resolv.conf resolv.conf.new
sudo ln -s ../run/resolvconf/resolv.conf resolv.conf
Starting WSL or installing a distribution returns an error code
Follow these instructions to collect detailed logs and file an issue on our GitHub.
Updating Bash on Ubuntu on Windows
There are two components of Bash on Ubuntu on Windows that can require updating.
The Windows Subsystem for Linux
Upgrading this portion of Bash on Ubuntu on Windows will enable any new fixes outlines in the release notes. Ensure that you are subscribed to the Windows Insider Program and that your build is up to date. For finer grain control including resetting your Ubuntu instance check out the command reference page.
The Ubuntu user binaries
Upgrading this portion of Bash on Ubuntu on Windows will install any updates to the Ubuntu user binaries including applications that you have installed via apt-get. To update run the following commands in Bash:
Apt-get upgrade errors
Some packages use features that we haven't implemented yet.
udev, for example, isn't supported yet and causes several
apt-get upgrade errors.
To fix issues related to
udev, follow the following steps:
Write the following to
/usr/sbin/policy-rc.dand save your changes.
#!/bin/sh exit 101
Add execute permissions to
chmod +x /usr/sbin/policy-rc.d
Run the following commands:
dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl
"Error: 0x80040306" on installation
This has to do with the fact that we do not support legacy console. To turn off legacy console:
- Open cmd.exe
- Right click title bar -> Properties -> Uncheck Use legacy console
- Click OK
"Error: 0x80040154" after Windows update
The Windows Subsystem for Linux feature may be disabled during a Windows update. If this happens the Windows feature must be re-enabled. Instructions for enabling the Windows Subsystem for Linux can be found in the Installation Guide.
Changing the display language
WSL install will try to automatically change the Ubuntu locale to match the locale of your Windows install. If you do not want this behavior you can run this command to change the Ubuntu locale after install completes. You will have to relaunch bash.exe for this change to take effect.
The below example changes to locale to en-US:
sudo update-locale LANG=en_US.UTF8
Installation issues after Windows system restore
- Delete the
%windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linuxfolder.
Note: Do not do this if your optional feature is fully installed and working.
- Enable the WSL optional feature (if not already)
- lxrun /uninstall /full
- Install bash
No internet access in WSL
Some users have reported issues with specific firewall applications blocking internet access in WSL. The firewalls reported are:
In some cases turning off the firewall allows for access. In some cases simply having the firewall installed looks to block access.
Permission Denied error when using ping
For Windows Anniversary Update, version 1607, administrator privileges in Windows are required to run ping in WSL. To run ping, run Bash on Ubuntu on Windows as an administrator, or run bash.exe from a CMD/PowerShell prompt with administrator privileges.
For later versions of Windows, Build 14926+, administrator privileges are no longer required.
Bash is hung
If while working with bash, you find that bash is hung (or deadlocked) and not responding to inputs, help us diagnose the issue by collecting and reporting a memory dump. Note that these steps will crash your system. Do not do this if you are not comfortable with that or save your work prior to doing this.
To collect a memory dump
Change the memory dump type to "complete memory dump". While changing the dump type, take a note of your current type.
Use the steps to configure crash using keyboard control.
Repro the hang or deadlock.
Crash the system using the key sequence from (2).
The system will crash and collect the memory dump.
Once the system reboots, report the memory.dmp to email@example.com. The default location of the dump file is %SystemRoot%\memory.dmp or C:\Windows\memory.dmp if C: is the system drive. In the email, note that the dump is for the WSL or Bash on Windows team.
Restore the memory dump type to the original setting.
Check your build number
To find your PC's architecture and Windows build number, open
Settings > System > About
Look for the OS Build and System Type fields.
To find your Windows Server build number, run the following in PowerShell:
systeminfo | Select-String "^OS Name","^OS Version"
Confirm WSL is enabled
You can confirm that the Windows Subsystem for Linux is enabled by running the following in PowerShell:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
OpenSSH-Server connection issues
Trying to connect your SSH server is failed with the following error: "Connection closed by 127.0.0.1 port 22".
Make sure your OpenSSH Server is running:
sudo service ssh status
and you've followed this tutorial: https://help.ubuntu.com/lts/serverguide/openssh-server.html.en
Stop the sshd service and start sshd in debug mode:
sudo service ssh stop sudo /usr/sbin/sshd -d
Check the startup logs and make sure HostKeys are available and you don't see log messages such as:
debug1: sshd version OpenSSH_7.2, OpenSSL 1.0.2g 1 Mar 2016 debug1: key_load_private: incorrect passphrase supplied to decrypt private key debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_rsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_dsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_ecdsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_ed25519_key
If you do see such messages and the keys are missing under
/etc/ssh/, you will have to regenerate the keys or just purge&install openssh-server:
sudo apt-get purge openssh-server sudo apt-get install openssh-server
"The referenced assembly could not be found." when enabling the WSL optional feature
This error is related to being in a bad install state. Please complete the following steps to try and fix this issue:
If you are running the enable WSL feature command from PowerShell, try using the GUI instead by opening the start menu, searching for 'Turn Windows features on or off' and then in the list select 'Windows Subsystem for Linux' which will install the optional component.
Update your version of Windows by going to Settings, Updates, and clicking 'Check for Updates'
If both of those fail and you need to access WSL please consider upgrading in place by reinstalling Windows 10 using installation media and selecting 'Keep Everything' to ensure your apps and files are preserved. You can find instructions on how to do so at the Reinstall Windows 10 page.
Correct (SSH related) permission errors
If you're seeing this error:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.
To fix this, append the following to the the
[automount] enabled = true options = metadata,uid=1000,gid=1000,umask=0022
Please note that adding this command will include metadata and modify the file permissions on the Windows files seen from WSL. Please see the File System Permissions for more information.