一、历史背景
从今往前推十多年,微软因Linux免费、开源抢了Windows不少市场份额和营收,于是该公司CEO Steve Ballmer 还曾公开宣称 Linux 是「癌症」。但随着技术转移动互联网,云计算,微软为了与VMware等虚拟化厂商竞争,它在Hyper-V虚拟化平台上增加了对Linux的原生支持,用HV虚拟化跑Linux,这种方式需要消耗大量的系统资源,并且宿主机(Host OS)与Linux虚拟机(Guest OS)两者数据传输也很麻烦,于是在2017年,发布了适用于Linux的windows子系统,全名叫Windows Subsystem for Linux,简称WSL。在2019年,微软又基于HV架构,推出了WSL第二版叫,WSL2。
二、WSL2是什么?
WSL2(Windows Subsystem for Linux 2)是微软开发的第二代Windows子系统,允许用户在Windows系统上原生运行Linux环境。它是WSL1的升级版本,通过更深入的架构改进提升了性能、兼容性和功能性。
三、WSL2的核心作用
-
无缝运行Linux应用 直接在Windows上执行Linux命令行工具、脚本和应用程序(如Python、GCC、Docker等),无需双系统或安装第三方虚拟化软件如vmware workstation,Visualbox。
-
高性能
-
基于轻量级虚拟机(Hyper-V)运行完整的Linux内核,文件I/O和系统调用性能显著优于WSL1。
-
尤其适合需要大量文件操作的任务(如代码编译、数据库操作)。
-
-
与Windows深度交互
-
访问Windows文件系统(通过
/mnt/c
等路径),双向调用Windows和Linux程序。 -
支持GPU加速(CUDA/DirectML)和网络端口互通。
-
-
简化运维与学习
-
运维人员可在Windows上直接使用Linux工具(如
grep
、awk
、ssh
)。 -
学习Linux命令和脚本的便捷平台。
-
四、WSL2与WSL1功能对比
功能/特性 | WSL 1 | WSL 2 |
---|---|---|
架构 | 基于兼容层的模拟,无完整Linux内核 | 基于完整的Linux内核,使用轻量级虚拟机(Hyper-V) |
性能 | 相对较低,文件系统操作较慢 | 性能显著提升,尤其在I/O密集型操作中(如文件系统操作) |
系统调用支持 | 不完全支持Linux系统调用,兼容性有限 | 完全支持Linux系统调用,兼容性更好 |
文件系统 | Linux应用程序文件存储在Windows文件系统中 | 使用虚拟磁盘(VHDX)存储Linux文件系统,性能更好 |
文件系统访问 | 通过跨平台共享的Windows文件系统进行访问 | 使用虚拟机内的ext4文件系统,性能更优 |
内核支持 | 没有Linux内核,模拟Linux系统调用 | 包含完整的Linux内核,支持Docker等容器应用 |
硬件支持 | 只能访问Windows硬件资源 | 支持更多硬件功能,如GPU加速、网络功能等 |
兼容性 | 只能运行较简单的Linux命令和工具 | 支持更广泛的Linux应用程序和服务 |
Docker支持 | 不支持 | 完全支持,可以运行Docker容器 |
内存和CPU使用 | 依赖于Windows内存管理 | 使用虚拟机独立管理内存和CPU,具有更高的性能 |
启动速度 | 启动较快 | 启动时间稍长,但性能更强 |
网络功能 | 不完全支持网络功能 | 支持完整的网络功能,支持容器网络配置 |
跨Windows和Linux文件系统性能 | 性能较好,适合频繁访问Windows文件系统 | 性能较差,访问Windows文件系统较慢 |
systemd支持 | 不支持 | 支持 |
IPv6支持 | 支持 | 支持 |
与VMware/VirtualBox兼容性 | 兼容 | 不兼容较老版本的VMware和VirtualBox |
五、安装WSL2子系统要求
-
Windows 10 x64 1903之后的版本或arm64 2004之后的版本。
-
Windows 11。
-
x64/arm64都可以,但如果是arm64,刚要求Linux虚拟机也是arm架构的。
-
家庭版,专业版,教育版,企业版都可以。
-
硬件甚至是虚拟化嵌套也无问题。
六、安装WSL2
点击“控制面板”,“程序和功能”,“启用或关闭Windows功能”,勾选“适用于Linux的Windows子系统”,“虚拟机平台”,再点“确定”。
程序安装完后,点“立即重新启动”。
如果只选择第一项“适用于Linux的Windows子系统”,不勾选“虚拟机平台”,则安装的是wsl初版。
七、安装Linux系统
WslRegisterDistribution failed with error: 0x800701bc 错误解决办法
PS C:\Users\david> wsl --update 正在安装: 适用于 Linux 的 Windows 子系统 已安装 适用于 Linux 的 Windows 子系统。 PS C:\Users\david>
先查询WSL 2支持哪些Linux系统
PS C:\Windows\system32> wsl --list --online 以下是可安装的有效分发的列表。 请使用“wsl --install -d <分发>”安装。 NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS Ubuntu-24.04 Ubuntu 24.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 openSUSE-Leap-15.6 openSUSE Leap 15.6 SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5 SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6 openSUSE-Tumbleweed openSUSE Tumbleweed
PS C:\Users\david> wsl --install -d ubuntu 正在下载: Ubuntu [==========================49.6% ] PS C:\Users\david> wsl --install -d ubuntu 正在下载: Ubuntu 正在安装: Ubuntu [==========================97.7%========================= ] PS C:\Users\david> wsl --install -d ubuntu 正在下载: Ubuntu 正在安装: Ubuntu wsl: 此计算机上不支持嵌套虚拟化。==========================] 已成功安装分发。它可通过 “wsl.exe -d Ubuntu” 启动
PS C:\Users\david> wsl -l -v NAME STATE VERSION * Ubuntu Running 2
PS C:\Users\david> wsl -d Ubuntu wsl: 此计算机上不支持嵌套虚拟化。 Provisioning the new WSL instance Ubuntu This might take a while... Create a default Unix user account: david New password: Retype new password: passwd: password updated successfully To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/pro System information as of Mon May 12 22:59:00 CST 2025 System load: 0.0 Processes: 32 Usage of /: 0.1% of 1006.85GB Users logged in: 0 Memory usage: 7% IPv4 address for eth0: 172.18.178.23 Swap usage: 0% This message is shown once a day. To disable it please create the /home/david/.hushlogin file. david@DESKTOP-5604J48:/mnt/c/Users/david$ david@DESKTOP-5604J48:/mnt/c/Users/david$ more /etc/os-release PRETTY_NAME="Ubuntu 24.04.2 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.2 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo david@DESKTOP-5604J48:/mnt/c/Users/david$ ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 10.255.255.254/32 brd 10.255.255.254 scope global lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:ce:03:32 brd ff:ff:ff:ff:ff:ff inet 172.18.178.23/20 brd 172.18.191.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::215:5dff:fece:332/64 scope link valid_lft forever preferred_lft forever
安装OracleLinux8.7版本
PS C:\Windows\system32> wsl --install -d OracleLinux_8_7
八、其它扩展
离线下载地址
https://aka.ms/wslubuntu https://wslstorestorage.blob.core.windows.net/wslblob/Ubuntu2404-240425.AppxBundle https://aka.ms/wslubuntu2204 https://aka.ms/wsl-kali-linux-new https://aka.ms/wsl-oraclelinux-8-5 https://aka.ms/wsl-oraclelinux-7-9 Add-AppxPackage .\app_name.appx Appx 包下载完成后,您可以通过双击 appx 文件开始运行新的分发。(在此步骤完成之前,该命令不会显示发行版已安装)。wsl -l 如果您使用的是 Windows Server,或者在运行上述命令时遇到问题,您可以在 Windows Server 文档页面上找到替代安装说明,通过将文件更改为 zip 文件来安装文件。.appx 安装分配后,请按照说明为新的 Linux 分配创建用户帐户和密码。