WSL安装教程

365 阅读2分钟

步骤 1 - 启用适用于 Linux 的 Windows 子系统

管理员身份运行PowerShell

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

步骤 2 - 检查运行 WSL 2 的要求

Win10

对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。

检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。

步骤 3 - 启用虚拟机功能

管理员身份运行PowerShell

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

步骤 4 - 下载 Linux 内核更新包

  1. 下载最新包:

  2. 运行上一步中下载的更新包。(双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

步骤 5 - 将 WSL 2 设置为默认版本

管理员身份运行PowerShell

wsl --set-default-version 2

步骤 6 - 安装所选的 Linux 分发

  1. 打开Microsoft Store,并选择你偏好的 Linux 分发版。

  2. 安装 Windows 终端 | Windows Terminal(可选)

步骤 7 - 设置Windows Terminal

默认配置文件:Ubuntu-20.04

启动目录:\wsl\Ubuntu-20.04\home\('子系统的主机名')\

步骤 8 - WSL设置代理

获取Windows主机IP (WSL2 不再能正常访问localhost的各种端口)

  1. 通过查看 Linux 下的 DNS 设置可以得到 Windows 主机的地址:

cat /etc/resolv.conf

  1. 代理服务器自动设置工具(可选)

Windows 主机 IP 在每次重启后都会变化,因此需要 一个 bash 脚本以便在 shell 启动时自动设置代理服务器,也可以使用下面的命令直接获取安装:

// 中文版

curl -o wslproxy -L git.io/Jfo6z

sudo bash ./wslproxy install

// 英文版

curl -o wslproxy -L git.io/Jfo62

sudo bash ./wslproxy install

  1. Windows防火墙设置

在设置代理服务器后,发现仍然无法正常连接 Windows 上的服务。研究很长时间后才发现,

Windows 防火墙居然拦住了来自 WSL 的请求!!!(Windows 认为 WSL 的虚拟网卡是公用网络,因此任何阻止公用网络入站请求的防火墙策略都会拦住 WSL 发过来的请求)

解决方法:

  • 首先我们使用 PowerShell 命令行创建一条给 WSL 网卡的防火墙策略:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

  • 然后进入 Windows 的防火墙和网络保护设置,在界面下方点击高级设置,提权后会打开高级安全 Windows Defender 防火墙窗口
  • 在高级安全 Windows Defender 防火墙中选择入站规则,并在右侧找到你使用的代理软件,然后禁用对应的阻止公用网络的规则