Installing WSL 2

Installing WSL 2

2020-11-29. Category & Tags: WSL2, Windows Sub System, Docker

Pre-requirements #

  • Windows 10 May 2020 (2004) // or older Windows 10 May 2019 (1903) / or Windows 10 November 2019 (1909)
  • A computer with Hyper-V Virtualization support

Steps Overview #

  • Enable WSL 2
  • Enable ‘Virtual Machine Platform’
  • Set WSL 2 as default
  • Install a Linux distro
  • Download the lateest kernel to update [ref]

Powershell CML #

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart  # Enable WSL
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart  # Enable ‘Virtual Machine Platform’
# Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart  # older win10
wsl --set-version Ubuntu 2  # convert current installed
wsl --set-default-version 2  # for future installations

ref: OMG

Debug #

cannot resovle domains #

Solution: disable auto-generation of resolv.conf by editing /etc/wsl.conf inside the WSL sys:

generateResolvConf = false

then shutdown WSL to restart WSL so this config could take effect by wsl.exe --shutdown.
Later, the /etc/resolv.conf could be modified as needed.

no network #

cmd as admin:
wsl --shutdown
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
:: and restart windows

If does not work, do the following inside WSL before the above commands in Windows.

# Fix network issues
# Delete auto-generated files
[[email protected] user]# rm /etc/resolv.conf || true
[[email protected] user]# rm /etc/wsl.conf || true

# Enable changing /etc/resolv.conf
# Enable extended attributes on Windows drives
[[email protected] user]# cat <<EOF > /etc/wsl.conf
generateResolvConf = false

enabled = true
options = "metadata"
mountFsTab = false

# Use cn & google nameservers for DNS resolution
[[email protected] user]# cat <<EOF > /etc/resolv.conf

ref: github