# 什么是 WSL
WSL 是适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。
# 什么是 WSL2
WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是 提高文件系统性能,以及添加 完全的系统调用兼容性。
这一新的体系结构改变了这些 Linux 二进制文件与 Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。
单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。
# 环境要求
若要更新到 WSL 2,需要运行 Windows 10。
- 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
- 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
- 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手 (opens new window)更新 Windows 版本。
若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 更新到“设置”菜单中的最新 Windows 版本。
# 步骤 1 - 启用适用于 Linux 的 Windows 子系统
需要先启用 「适用于 Linux 的 Windows 子系统」可选功能,然后才能在 Windows 上安装 Linux 子系统。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 步骤 2 - 启用虚拟机功能
安装 WSL 2 之前,必须启用「虚拟机平台」可选功能。 计算机需要 虚拟化功能 (opens new window) 才能使用此功能。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。
# 步骤 3 - 下载 Linux 内核更新包
下载最新包:
运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择 “是” 以批准此安装)
安装完成后,将 WSL 2 设置为默认版本。
打开 PowerShell,执行:
wsl --set-default-version 2
# 步骤 4 - 安装需要的 Linux 系统
打开 Microsoft Store (opens new window),并选择你需要的的 Linux 发行版。

以下是 Ubuntu 常用版本的直达链接:
在发行版的页面中,选择 「获取」。
「获取」完成后,点击「启动」即可进入 Linux 系统(首次启动需要等待 1~2 分钟进行初始化部署,未来的所有启动时间应不到一秒)。
首次进入系统,需要为新系统创建「账户」和「密码」

完成后,即可正常使用 Linux 系统。
# Tips
# 安装完成后如何进入系统?
以应用形式启动:
在 「Microsoft Store」安装的 Linux 发行版会以 UWP 应用形式安装在本地,可以在「开始菜单」找到对应的 Linux 发行版系统直接启动。

在命令行启动:
在 「powershell」、「cmd」、「Windows Terminal」中直接键入发行版系统名字,如 「ubuntu」,即可直接进入系统。

# 如何为 Linux 发行版系统配置代理?
WSL2 基于 Hyper-V 运行,从 Linux 子系统访问 Windows 首先需要找到 Windows 的 IP。随后,需要将 Linux proxy 与 windows 代理端口绑定。
Windows 代理软件需要开启 「允许局域网访问」或 「Allow LAN」。
整理命令如下:
export windows_host=`cat /etc/resolv.conf|grep nameserver|awk '{print $2}'`
export ALL_PROXY=socks5://$windows_host:7890(这里输入 windows 中代理软件的端口)
export HTTP_PROXY=$ALL_PROXY
export http_proxy=$ALL_PROXY
export HTTPS_PROXY=$ALL_PROXY
export https_proxy=$ALL_PROXY
# WSL 2 中如何访问 GPU?
请查看 GPU 支持入门 (opens new window)教程。
# 如何访问本地 Windows 的数据?
系统会自动为本地计算机上的硬盘驱动器创建装入点,通过这些装入点可以轻松访问 Windows 文件系统。
/mnt/<drive letter>/
示例用法:运行 `cd /mnt/c` 访问 c:\
# 如何迁移 WSL 镜像?
# 查看全部 wsl
wsl -l --all -v
# 导出 wsl
wsl --export Ubuntu d:\wsl-ubuntu.tar
# 注销 wsi
wsl --unregister Ubuntu
# 导出 wsl 到 新地址
wsl --import Ubuntu d:\wsl-ubuntu d:\wsl-ubuntu.tar --version 2
# 更改默认用户
Ubuntuconfig --default-user yourname
# 出现 “参考的对象类型不支持尝试的操作” 如何解决?
# 重启后执行
netsh winsock reset