什么是WSL2

WSL2(Windows Subsystem for Linux 2)是微软推出的第二代 Linux 子系统,于 2019 年正式发布并内置于 Windows 10 2004 版本及 Windows 11 中。

它允许开发者在 Windows 操作系统上,无需安装虚拟机或双启动,直接运行完整的 Linux 环境。

技术架构

与 WSL1 不同,WSL2 采用了全新的架构——通过一个轻量级的 Hyper-V 虚拟机运行真实的 Linux 内核,而不是通过系统调用翻译层模拟。

WSL1 架构

WSL2 架构

Linux 应用程序

系统调用翻译层(Pico Process)

Windows NT 内核

Linux 应用程序

真实 Linux 内核

轻量级 Hyper-V 虚拟机

Windows NT 内核(Hyper-V 层)

WSL2的核心优势

性能极致

  • Linux 原生文件系统(ext4)读写速度极快,I/O 性能媲美原生 Linux

  • 内存动态分配,按需使用,最大化利用系统资源

  • 启动速度通常在 1-5 秒内完成

完整Linux兼容性

  • 运行真实 Linux 内核,支持所有 Linux 系统调用

  • 原生支持 Docker 容器运行时,无需额外虚拟化层

  • 支持完整的 Linux 工具链:gcc、make、gdb、strace 等

  • 兼容 ELF 二进制文件,可运行任何为 Linux 编译的程序

深度Windows集成

  • 可从 Windows 文件资源管理器直接访问 Linux 文件系统(\\wsl$\)

  • 在 Linux 中可直接调用 Windows 可执行文件(如 explorer.exe、notepad.exe)

  • 与 VS Code Remote - WSL 扩展无缝集成

  • 支持 Windows Terminal,提供现代化的终端体验

  • Linux 程序可直接访问 Windows 剪贴板

开发体验友好

  • 开发服务器(Node.js、Python Flask 等)端口自动转发到 Windows

  • 支持 systemd(需配置),可管理 Linux 服务

  • 统一开发环境:前端、后端、DevOps 工具全部可用

WSL1 / WSL2 / 虚拟机横向对比

对比维度

WSL1

WSL2

传统虚拟机

架构

系统调用翻译层

轻量级 Hyper-V VM

完整虚拟机

Linux 内核

兼容层模拟

真实 Linux 内核

真实 Linux 内核

启动速度

极快(<1秒)

快(<5秒)

慢(30秒+)

文件系统性能

Windows文件快

Linux文件极快

较慢(共享目录)

内存占用

极低

低(动态分配)

高(固定分配)

系统调用兼容性

部分兼容

完全兼容

完全兼容

Docker 支持

不支持

原生支持

需额外配置

GPU/硬件访问

有限

支持 GPU 直通

有限

网络集成

共享 Windows 网络

虚拟网络(NAT)

独立网络

如何选择?

  • 日常开发、Docker 使用 → 推荐 WSL2(性能最佳,集成最好)

  • 遗留 Linux 软件(网络工具等) → 考虑 WSL1(网络行为更接近 Windows)

  • 需要完全隔离环境、桌面图形操作 → 考虑传统虚拟机

安装条件与安装方法

系统要求

项目

要求

操作系统

Windows 10 版本 2004(内部版本 19041)或更高,推荐 Windows 11

处理器

64 位 CPU,支持 SLAT(二级地址转换)

内存

最低 4GB,推荐 8GB+

Hyper-V

需在 BIOS/UEFI 中启用虚拟化技术(Intel VT-x / AMD-V)

磁盘空间

至少 10GB 可用空间(推荐 SSD)

安装前准备:开启虚拟化

使用WSL2的前提是需要CPU支持开启虚拟化,从任务管理器中可以查看是否开启虚拟化:

Windows10/11在BIOS中通常是默认开启的,如果未开启,可按照以下步骤开启:

  1. 重启电脑并进入 BIOS/UEFI(通常按 F2、F10、Del 或 Esc 键,和电脑品牌型号有关)

  2. 找到 Virtualization Technology(Intel VT-x)或 SVM Mode(AMD)

  3. 将其设置为 Enabled(启用)

  4. 保存设置并重启


安装

一键安装

# 安装 WSL 及默认 Ubuntu 发行版
wsl --install

# 安装完成后,重启电脑

# 重启电脑后,验证
wsl -l -v

手动安装

一键安装后,如果发现Linux版本不是自己想要的,可以继续安装其他版本

步骤一:启动WSL功能(如果一键安装过了,跳过)

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

# 启用虚拟机平台功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 重启电脑

步骤二:设置WSL2为默认版本

wsl --set-default-version 2

步骤三:安装指定Linux

# 查看可用发行版
wsl --list --online

# 安装 Ubuntu 22.04
wsl --install -d Ubuntu-22.04

步骤四:验证安装

# 查看已安装发行版及 WSL 版本
wsl --list --verbose

# 正常输出示例:
#   NAME            STATE           VERSION
#   Ubuntu-22.04   Running         2

# 查看 WSL 版本信息
wsl -l -v

Ubuntu初始化配置

1、创建用户

首次进入 Ubuntu,系统会提示创建用户:

Enter new UNIX username: myuser
New password: ********
Retype new password: ********

2、更新系统软件包

# 更新软件包列表并升级已安装软件
sudo apt update && sudo apt upgrade -y

# 安装常用基础工具
sudo apt install -y curl wget git vim build-essential unzip zip

3、换用国内镜像源(加速下载)

# 备份原始源配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为阿里云镜像(Ubuntu 22.04)
sudo tee /etc/apt/sources.list << 'EOF'
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
EOF

# 更新软件包列表
sudo apt update

4、安装开发工具栈

# 安装 Python 3 及 pip
sudo apt install -y python3 python3-pip python3-venv

# 安装 Node.js(使用 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts

# 安装 Java Development Kit
sudo apt install -y default-jdk

# 安装 Docker(WSL2 支持原生 Docker)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

5、配置Git

# 设置 Git 用户信息
git config --global user.name "Your Name"
git config --global user.email "your@email.com"

# 设置默认分支名称
git config --global init.defaultBranch main

# 设置凭据缓存
git config --global credential.helper store

与VS Code集成

VS Code 是 WSL2 开发的最佳拍档,安装 Remote - WSL 扩展后可在 Windows 上编辑 WSL2 文件:

# 在 WSL2 终端中,直接用 VS Code 打开项目
code .

# VS Code 会自动连接到 WSL2 环境
# 安装所需扩展:Ctrl+Shift+X -> Remote - WSL

提示:

在 VS Code 左下角可以看到连接状态显示为 "WSL: Ubuntu-22.04",

此时所有终端、调试、扩展都在 Linux 环境中运行,获得原生 Linux 开发体验。

与IDEA集成

  • IDEA和VS Code一样,也支持 Remote - WSL

  • 也可以直接打开WSL中的项目路径,例如:\\wsl.localhost\Ubuntu-20.04\home\qiye\develop\project\xxx

如果是直接接在WSL项目路径,有两个注意点:

  1. 项目路径注意不要放在/mnt/下,挂载目录坑多

  2. IDEA中Git 配置项Path to Git executable要配置WSL中的Git

常用命令速查

命令

说明

wsl --install

安装 WSL 及默认 Ubuntu 发行版

wsl --install -d Ubuntu-22.04

安装指定 Linux 发行版

wsl --list --online

列出可用的 Linux 发行版

wsl --list --verbose

列出已安装发行版及状态

wsl --set-default Ubuntu-22.04

设置默认发行版

wsl --set-version Ubuntu-22.04 2

将发行版升级到 WSL2

wsl --set-default-version 2

设置新安装默认使用 WSL2

wsl

启动默认 Linux 发行版

wsl -d Ubuntu-22.04

启动指定发行版

wsl --shutdown

关闭所有正在运行的发行版

wsl --terminate Ubuntu-22.04

终止指定发行版

wsl --status

查看 WSL 状态信息

wsl --update

更新 WSL 内核

wsl --export Ubuntu-22.04 backup.tar

导出发行版为 tar 文件

wsl --import Ubuntu-22.04 D:\WSL backup.tar

从 tar 文件导入发行版

wsl --unregister Ubuntu-22.04

注销并删除发行版

必要配置&使用技巧

.wslconfig 全局配置文件

在 Windows 用户目录(%USERPROFILE%\)下创建 .wslconfig 文件,可对 WSL2 进行全局配置:

# 文件路径:C:\Users\YourName\.wslconfig

[wsl2]
# 限制 WSL2 最大内存(默认为物理内存的 80%)
memory=8GB

# 分配给 WSL2 的 CPU 核心数
processors=4

# 交换空间大小
swap=2GB

# 启用本地主机转发(Windows 和 WSL 互通)
localhostForwarding=true

# 关闭 WSL2 自带防火墙(如有网络问题可尝试)
# networkingMode=mirrored   # Windows 11 22H2+ 新网络模式

# 启用 WSLg(GUI 应用支持)
guiApplications=true

wsl.conf 发行版配置

在 WSL2 Linux 发行版内部(/etc/wsl.conf),可进行每个发行版的独立配置:

# /etc/wsl.conf(在 Linux 内编辑)
[boot]
# 启用 systemd(Ubuntu 22.04+ 支持)
systemd=true

[automount]
# 自动挂载 Windows 驱动器
enabled=true
# 挂载路径前缀
root=/mnt/
# 挂载选项(设置权限)
options="metadata,umask=22,fmask=11"

[network]
# 设置主机名
hostname=my-wsl
# 生成 /etc/hosts
generateHosts=true
# 生成 /etc/resolv.conf
generateResolvConf=true

[interop]
# 允许在 WSL 中启动 Windows 进程
enabled=true
# 将 Windows PATH 追加到 Linux PATH
appendWindowsPath=true

使用技巧

Windows与Linux文件互访

# 在 Linux 中访问 Windows C 盘
cd /mnt/c/Users/YourName/Desktop

# 在 Windows 资源管理器中打开当前 Linux 目录
explorer.exe .

# 在 Linux 中打开 Windows 程序
notepad.exe myfile.txt
code.exe .   # 用 VS Code 打开当前目录

配置 WSL2 网络代理

# 在 ~/.bashrc 或 ~/.zshrc 中添加:
export WINDOWS_HOST=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
export HTTP_PROXY="http://$WINDOWS_HOST:7890"
export HTTPS_PROXY="http://$WINDOWS_HOST:7890"
export ALL_PROXY="socks5://$WINDOWS_HOST:7890"

SSH 密钥共享

# 从 Windows 复制 SSH 密钥到 WSL2
cp /mnt/c/Users/YourName/.ssh/id_rsa ~/.ssh/
cp /mnt/c/Users/YourName/.ssh/id_rsa.pub ~/.ssh/
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

将发行版迁移到其他磁盘

# 导出当前发行版
wsl --export Ubuntu-22.04 D:\Backup\ubuntu-backup.tar

# 注销原发行版
wsl --unregister Ubuntu-22.04

# 导入到新路径(如 D 盘)
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\Backup\ubuntu-backup.tar

配置 Oh My Zsh 提升终端体验

# 安装 Zsh
sudo apt install zsh -y

# 安装 Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 安装 Powerlevel10k 主题(推荐)
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

# 在 ~/.zshrc 中设置主题
ZSH_THEME="powerlevel10k/powerlevel10k"

总结

WSL2 代表了 Windows 与 Linux 融合的重要一步。对于开发者而言,它提供了:

  • 原生 Linux 内核的完整系统调用兼容性

  • 接近原生的文件 I/O 性能

  • 与 Windows 生态的无缝集成

  • 低资源占用的轻量级虚拟化

  • 与现代开发工具(VS Code、Docker、Git)的一流支持

无论你是 Web 开发者、DevOps 工程师还是系统程序员,WSL2 都能极大地提升你在 Windows 上的开发效率,让你在不放弃 Windows 生产力工具的同时,享受 Linux 开发生态的全部优势。