这次我们来看一个很多人都会遇到的问题:Windows 上想用 Linux,是不是只能装 VMware 或 VirtualBox?
其实不一定。如果只是为了跑 Linux 命令、做 Web 开发、学习运维知识、跑一些自动化脚本,更轻量的做法是使用微软官方的 WSL,也就是 Windows Subsystem for Linux,中文叫“适用于 Linux 的 Windows 子系统”。WSL 的意义在于:你不需要下载 Linux 镜像、不需要手动分区、不需要给虚拟机分配 CPU 和内存,也不需要等几十秒开机。安装好之后,直接在 Windows 终端里输入wsl或发行版名称,几秒钟就能进入一个可用的 Linux 环境。
WSL 有两个核心特点需要先理解。第一,它有两种运行模式:WSL1 是系统调用翻译层,早期性能受限;WSL2 则是一个轻量级虚拟机,内部跑的是真正的 Linux 内核,执行兼容性和性能都更好,现在新安装的系统默认都使用 WSL2。第二,它不是传统意义上被隔离死的虚拟机,Windows 和 Linux 之间可以互相访问文件,WSL 里启动的 Web 服务也能直接在 Windows 浏览器里通过localhost访问,这种体验和 VMware 完全不同。
这篇文章会带你从零开始,把 WSL 的安装、启动、文件互访、服务发布、批量任务、性能观察和常见问题完整过一遍。如果你以前装虚拟机只是为了跑几个 Linux 命令,这篇文章能帮你省掉大量折腾时间。
1. 核心能力速览
先把最关键的信息放在前面,方便快速判断 WSL 适不适合你。
| 能力项 | 说明 |
|---|---|
| 项目类型 | Windows 系统级 Linux 运行环境,WSL2 基于轻量级虚拟机 |
| 官方来源 | 微软主导开发,WSL2 内核部分开源 |
| 主要功能 | Linux 命令环境、开发工具链、Docker、Web 服务、Node/Python/Java 开发 |
| 支持平台 | Windows 10 2004 及以上、Windows 11 |
| 安装方式 | 一行命令wsl --install,也可以从 Microsoft Store 安装发行版 |
| 是否支持 GUI | WSLg 支持运行 Linux 图形界面应用 |
| 启动方式 | Windows Terminal / CMD / PowerShell 输入wsl或发行版名称 |
| 是否支持 API | 不直接提供接口,但 WSL 内启动的服务可被 Windows 通过 localhost 访问 |
| 是否支持批量任务 | 支持,Linux shell 脚本、cron、systemd 都可以使用 |
| 适合场景 | 开发、运维、学习 Linux、Docker、替代传统虚拟机日常使用 |
从上面这张表可以看出,WSL 覆盖了大多数“在 Windows 上使用 Linux”的日常场景,而且安装成本比传统虚拟机低一个量级。需要注意的是,WSL2 底层确实是一个虚拟机,但它不需要单独管理镜像、不需要在 BIOS 里反复调整、不需要手动配置网络,操作系统层面的隔离和启动调度全部由 Windows 完成,因此用户几乎感知不到“虚拟机”的存在。
2. 适用场景与使用边界
2.1 适合什么场景
WSL 最适合下面几类需求:
- Web 后端开发:在 WSL 里装 Node.js、Python、Go、Java,编译和运行 Linux 环境下的依赖,比在 Windows 原生环境里处理路径差异要省心很多。
- 运维学习:练习 Linux 命令、写 Shell 脚本、学习 systemd 服务管理、测试 Nginx 配置。
- Docker 容器:Docker Desktop 可以直接使用 WSL2 作为后端,容器运行在原生 Linux 内核上,性能远好于 Windows 容器或 Hyper-V 虚拟机。
- 高校课程 / 实验:很多课程要求 Linux 环境,但没必要为几节课装一个完整桌面虚拟机。
- 数据处理和自动化:用 Linux 下的命令行工具做批量文件处理、日志分析、定时任务。
2.2 和传统虚拟机怎么选
并不是说 WSL 能完全替代 VMware 或 VirtualBox,两者适合不同的人。放一张对比表会更清楚:
| 对比项 | WSL 2 | VMware / VirtualBox |
|---|---|---|
| 安装时间 | 命令行几分钟完成 | 需要下载 ISO、分盘、配置,耗时较长 |
| 启动速度 | 秒级进入 Shell | 完整 Linux 启动通常需要几十秒 |
| 内存占用 | 按需分配,相对可控 | 需要提前分配固定内存 |
| 文件互访 | 自动挂载,目录直接访问 | 需要共享文件夹配置 |
| 图形桌面 | 仅支持单窗口 GUI 应用 | 完整 Linux 桌面环境 |
| 内核能力 | 受微软管理,可加载部分模块 | 接近真实物理机,可加载自定义内核模块 |
| USB 直通 | 较新版本支持部分 USB 设备 | 支持更完整 |
| 适合人群 | 开发、运维、命令行用户 | 需要完整 Linux 桌面或硬件直通的用户 |
如果你只是想把 Linux 当作一个“命令行工具箱”来用,WSL 是最优解。如果你需要一个完整的 Linux 桌面给同事演示、需要跑内核模块、需要频繁插拔外部硬件,那传统虚拟机仍然不可替代。
2.3 使用边界与合规提醒
WSL 本质是一个本地开发环境,不要把它当成生产服务器来使用。跨发行版文件权限、内核版本、系统调用完整度都和生产环境有差异。另外,在 WSL 中执行的代码、下载的依赖、部署的服务,仍然要遵守对应的开源协议、软件许可和公司内部安全规定。不要用 WSL 运行未授权软件,也不要将未取得授权的数据对外提供访问。
3. 环境准备与前置条件
开始安装之前,先确认三件事:Windows 版本、CPU 虚拟化、系统组件状态。
3.1 系统版本要求
WSL 的完整安装命令wsl --install需要 Windows 10 2004(Build 19041)及以上,或者 Windows 11。更早的 Windows 版本也可以装 WSL1,但体验和安装方式差别较大,建议直接升级系统或者手动开启系统功能后安装旧版 WSL,不推荐在新项目中继续使用旧版。
在 PowerShell 或 CMD 中执行以下命令可以快速查看系统版本:
ver如果系统版本太旧,建议先做 Windows Update,把系统补丁打全再继续。WSL 的很多体验改进都是通过系统更新和 Store 应用更新下发的,保持系统较新状态能避免大量奇怪问题。
3.2 开启 CPU 虚拟化
WSL2 依赖 CPU 虚拟化技术,也就是 Intel 的 VT-x 或 AMD 的 SVM。大多数近几年的 CPU 默认开启,但部分品牌机 BIOS 默认关闭。
先判断机器是否已开启虚拟化。打开任务管理器,切换到“性能”选项卡,选择 CPU,右下角会显示“虚拟化:已启用”或“虚拟化:已禁用”。如果显示已禁用,需要重启电脑进入 BIOS/UEFI,找到 Intel Virtualization Technology 或 SVM Mode 选项并启用。
也可以在 PowerShell 中执行:
systeminfo输出中查找“Hyper-V 要求”部分,可以查看虚拟化相关的固件状态。需要注意的是,即使这里显示未开启,如果你只是用 WSL1,也可以不依赖虚拟化;但 WSL2 和 Docker Desktop 的 WSL2 后端都必须开启。
3.3 需要启用的 Windows 功能
WSL 依赖两个 Windows 可选功能:“适用于 Linux 的 Windows 子系统”和“虚拟机平台”。新版本执行wsl --install时会自动启用,但如果手动安装或安装失败,可以在这里检查:
- 控制面板 - 程序 - 启用或关闭 Windows 功能。
- 勾选“适用于 Linux 的 Windows 子系统”。
- 勾选“虚拟机平台”。
- 如果之前用 Hyper-V,也建议确保 Hyper-V 相关功能没有被破坏。
修改 Windows 功能后需要重启。这个步骤很容易被忽略,很多 WSL 安装失败的案例都和“功能没启用”有关。
4. 安装部署与启动方式
4.1 一行命令安装默认发行版
打开 PowerShell 或 Windows Terminal,以管理员权限运行:
wsl --install这条命令会完成三件事:启用 WSL 功能、启用虚拟机平台、下载并安装默认的 Ubuntu 发行版。安装完成后系统会提示重启电脑。
重启后,开始菜单会出现 Ubuntu 图标,点击后它会进行首次初始化,并提示创建 Linux 用户名和密码。注意:这个用户名不需要和 Windows 用户名一致,它是独立的 Linux 账户,会默认加入 sudo 组,日常操作需要管理员权限时用sudo即可。
4.2 改装其他发行版
如果不想使用默认的 Ubuntu,可以先用以下命令查看当前支持的发行版列表:
wsl --list --online输出会列出 Ubuntu、Ubuntu-22.04、Debian、kali-linux、openSUSE 等发行版名称。安装指定发行版:
wsl --install -d Debian这里以 Debian 为例,实际名称以wsl --list --online的输出为准。多个发行版可以共存,安装完成后可以用命令切换。
4.3 检查安装结果和运行状态
安装完成后,建议先确认一下 WSL 的版本和默认发行版:
wsl --version wsl -l -vwsl -l -v的输出会列出每个发行版的名称、状态和版本号。正常情况下你会看到类似下面这样的结果,状态是 Stopped,版本是 2:
NAME STATE VERSION * Ubuntu Stopped 2如果 VERSION 是 1,可以手动把默认版本切到 WSL2:
wsl --set-default-version 2也可以单独指定某个发行版使用 WSL2:
wsl --set-version Ubuntu 24.4 启动方式
启动 WSL 的方式非常多,任选一种:
- 在 PowerShell、CMD 或 Windows Terminal 中直接输入
wsl,会进入默认发行版。 - 输入发行版名称,比如
ubuntu,会直接进入对应发行版。 - 在 Windows Terminal 中新建标签页,可以选择 Ubuntu 或其他已安装发行版的 Shell。
- 输入
wsl -d Ubuntu可以指定进入某发行版。
进入之后,默认是你首次创建的用户目录。命令行提示符会从 Windows 的PS C:\>变成 Linux 的用户名@主机名:/home/用户名$,看到这个提示符,说明环境已经可用。
4.5 导入导出与迁移
WSL 发行版可以通过wsl --export和wsl --import做镜像备份和迁移。例如把 Ubuntu 导出为 tar 包:
wsl --export Ubuntu D:\wsl-backup\ubuntu.tar恢复时先卸载旧发行版,再导入:
wsl --unregister Ubuntu wsl --import Ubuntu D:\wsl\ubuntu D:\wsl-backup\ubuntu.tar注意:wsl --import恢复的发行版默认登录用户是 root,而不是原先创建的普通用户。如果需要恢复普通用户身份,可以在导入后写一个/etc/wsl.conf或在启动时指定--user 用户名。这个备份方案适合整机迁移、测试环境复制,也能用于清理 vhdx 磁盘体积。
5. 功能测试与效果验证
环境装好之后,不要急着开始配置各种工具,先做一轮功能验证,确保最核心的几项能力没有问。
5.1 Linux 基本命令环境测试
进入 WSL 后,先确认系统版本和基础命令:
uname -a cat /etc/os-release whoami pwd ls -la如果你看到Linux开头的内核信息,并且whoami返回你创建的用户名,说明内核和用户态工作正常。接下来更新软件源索引:
sudo apt update && sudo apt upgrade -y这一步能验证网络连通性、软件源配置以及 sudo 权限是否正常。如果这里卡住或报网络错误,先检查 DNS 和镜像源,问题排查部分有对应方案。
5.2 Windows 与 Linux 文件互访测试
文件互访是 WSL 日常使用中最高频的能力。WSL 会把 Windows 的所有磁盘自动挂载到/mnt下,比如 C 盘对应/mnt/c,D 盘对应/mnt/d:
cd /mnt/c/Users/你的Windows用户名/Desktop ls -la反过来,在 Windows 文件资源管理器地址栏输入下面的路径,可以访问 WSL 里家目录的文件:
\\wsl$\Ubuntu\home\用户名也可以直接用更现代的地址:
\\wsl.localhost\Ubuntu\home\用户名这里有一个重要建议:跨文件系统的读写性能损耗很明显。在/mnt/c下跑大型项目、执行npm install或git status,速度会比在 WSL 自己的 Linux 文件系统里慢不少。因此推荐的目录规划是:代码和工作数据放在 WSL 的~/projects目录,Windows 和 Linux 之间只交换文件,不要跨系统直接跑项目。
5.3 本地开发服务与 localhost 互通测试
WSL2 默认开启了 localhost 转发,也就是说 WSL 里启动的 Web 服务,Windows 浏览器可以直接通过http://localhost:端口访问。先做一个最简单的验证:
mkdir ~/webdemo && cd ~/webdemo echo 'hello wsl' > index.html python3 -m http.server 8000然后在 Windows 浏览器打开http://localhost:8000,如果能看到hello wsl,说明网络转发正常。这里重点要注意:服务监听地址不要写成127.0.0.1,建议监听0.0.0.0,否则某些场景下 Windows 侧访问会失败。当服务启动后,任务管理器里会看到一个叫vmmem或vmmemWSL的进程,这就是 WSL2 虚拟机的资源占用体现。
5.4 WSLg 图形应用测试
在 Windows 11 和较新的 Windows 10 版本中,WSL 已经支持 WSLg,可以直接运行 Linux 图形应用。以 Ubuntu 为例,安装并运行一个简单的文本编辑器:
sudo apt install gedit -y gedit如果系统支持 WSLg,Windows 桌面上会弹出 gedit 窗口,标题栏显示的是 Linux 应用,看起来就像是原生 Windows 程序。这个能力对偶尔需要图形界面工具的场景很有帮助,比如运行某些 Linux 专用的 IDE、图片查看器或课程实验软件。但它的定位是“应用窗口”,而不是完整桌面,所以不要期待它能替代虚拟机桌面。
5.5 Docker 和常用开发工具验证
WSL 最常见的用途之一是配合 Docker。安装 Docker Desktop 时,在设置里选择 “Use WSL 2 instead of Hyper-V” 后端,之后 Docker 容器实际运行在 WSL2 的 Linux 内核中,性能要比旧版 Hyper-V 方案好很多。
在 WSL 里也可以直接安装 nginx 做反向代理测试:
sudo apt install nginx -y sudo service nginx start curl http://localhost看到 nginx 欢迎页面的 HTML 输出,说明系统服务管理、网络监听、端口访问这条链路全部正常。
6. 接口服务与批量任务
WSL 本身不提供某种“API 服务”,但它是一个完整的 Linux 环境,所以完全可以当作开发环境来启动各种接口服务,并且 Windows 侧可以直接调用。
6.1 在 WSL 中启动 API 服务,被 Windows 调用
以一个 Flask 应用为例。在 WSL 中创建文件app.py:
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello from WSL" if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)安装依赖并启动:
pip3 install flask python3 app.py然后回到 Windows,用 curl 调一下:
curl http://localhost:5000看到返回Hello from WSL,说明 Windows 和 WSL 之间的服务互通已经打通。这个链路很关键,意味着你完全可以在 Windows 上用 PyCharm 写代码、在 WSL 里跑 Linux 版本的解释器和依赖,甚至把 WSL 里的服务接到本机的自动化流程里。
6.2 批量处理脚本
既然是完整 Linux 环境,批量任务自然可以用 Shell 脚本实现。比如目录下有大量图片需要压成缩略图,假设已经安装了 ImageMagick:
#!/bin/bash for f in *.jpg; do convert "$f" -resize 640x480 "${f%.jpg}_small.jpg" done更通用的场景是批量重命名、批量打包、批量日志清理。在执行批量任务时,建议先加set -e,任何一步出错就停止,避免中间产物不一致:
#!/bin/bash set -e mkdir -p /tmp/backup for f in /mnt/d/data/*.log; do echo "处理 $f" gzip "$f" done6.3 定时任务与 systemd
WSL 的新版本已经内置 systemd 支持。如果需要在 WSL 里跑定时任务,可以在/etc/wsl.conf中启用 systemd:
[boot] systemd=true保存后执行wsl --shutdown重启 WSL。再次进入后,运行:
systemctl status cron如果服务状态正常,就可以用crontab -e配置定时任务了。这个能力让 WSL 从一个“临时 Shell”变成了真正可以做服务编排的开发机,比如定时跑数据同步、定时备份目录、定时触发测试脚本。
7. 资源占用与性能观察
7.1 如何观察 WSL 的资源占用
打开任务管理器,在“进程”或“详细信息”标签里找vmmem或vmmemWSL,这个进程代表 WSL2 虚拟机的整体资源占用。WSL2 内存分配策略和普通虚拟机不同,它不会一次性吃掉你设定的固定值,而是按需增长,并在空闲时释放一部分。因此,看到 vmmem 占用几个 G 是正常现象,不一定是内存泄漏。
在 WSL 内部用下面命令可以看具体的内存和 CPU 情况:
free -h nprocfree -h显示的内存总量可能不等于物理内存大小,因为 WSL2 会根据 Windows 的整体内存状态调整可用内存。如果发现 WSL 占用过高,可以主动关闭:
wsl --shutdown这个命令会关闭所有发行版和后台虚拟机,释放对应内存。下次输入wsl时会自动冷启动。
7.2 用 .wslconfig 限制内存和 CPU
如果机器内存本身不大,建议新建C:\Users\你的用户名\.wslconfig文件,显式限制 WSL2 的资源上限。内容示例:
[wsl2] memory=4GB processors=4 swap=2GB localhostForwarding=true修改完必须执行wsl --shutdown,再重新进入,配置才会生效。这里可以用memory=4GB限制内存,processors=4限制使用 4 个 CPU 核,swap=2GB控制交换分区大小。需要注意,memory设得太小会导致大项目编译或容器运行时 OOM,建议根据开发需求调整。
7.3 文件系统性能注意点
WSL 有两种文件系统路径:一种是 WSL 自己的虚拟磁盘(对应~/),一种是 Windows 盘符挂载(对应/mnt/c)。在~/下执行git status、npm install、pip install,执行效率接近真实 Linux;而在/mnt/c下执行同样操作,因为要经过 9P 协议跨系统转发,性能会明显下降。
日常使用原则很简单:代码和项目放~/下,需要和 Windows 交换的文件放到/mnt/c,避免在/mnt/c上直接跑编译流水线。想让磁盘占用可控,可以定期执行wsl --shutdown,再压缩虚拟磁盘文件,或在迁移时导出再导入一次。
8. 常见问题与排查方法
这里列出的都是实际使用中比较高频的问题,既包含安装阶段,也包含运行阶段。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 运行 wsl 提示“适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续” | WSL 内核或 Store 组件版本过旧 | 执行wsl --version查看版本 | 执行wsl --update,再重启终端 |
wsl --install安装失败 | Windows 功能未启用或虚拟化未开启 | 检查“虚拟机平台”功能和 BIOS 虚拟化状态 | 启用功能,重启,再次安装 |
| 打开 WSL 一直卡在“正在安装...” | Store 下载异常或网络受限 | 查看网络,尝试wsl --update | 从 Microsoft Store 手动安装发行版,或下载离线安装包 |
| WSL 内无法解析域名 | DNS 配置异常 | 执行cat /etc/resolv.conf | 在/etc/wsl.conf设置generateResolvConf=false,手动配置 DNS |
| Windows 浏览器不能访问 WSL 里的 localhost 服务 | localhostForwarding 被关闭或服务监听地址错误 | 检查.wslconfig,检查服务监听地址 | 设置localhostForwarding=true,服务监听0.0.0.0 |
wsl --import后登录用户变成 root | WSL 导入的发行版没有保留默认用户设置 | 查看登录用户 | 启动时指定--user 用户名,或修改/etc/wsl.conf |
| 磁盘空间被 WSL 占满且释放不了 | vhdx 虚拟磁盘不自动压缩 | 查看 vhdx 文件大小 | 导出再导入,或使用 diskpart Compact |
| 忘记 Linux 用户密码 | 密码丢失 | 管理员 PowerShell 执行wsl -u root | 进入后执行passwd 用户名重置密码 |
8.1 常见启动错误详解
最常遇到的启动错误就是“适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续”。这个提示通常会带一个命令行路径,建议的操作是:
wsl --update如果wsl --update也失败,检查系统时间、Windows Update 服务是否正常,或者从 Microsoft Store 更新“Windows Subsystem for Linux”应用。这类问题和系统组件版本强相关,升级系统补丁往往能一并解决。
8.2 老版本系统安装失败
Windows 10 2004 之前的系统没有wsl --install命令,需要手动启用功能,然后下载内核更新包。更稳妥的方式是先升级 Windows,再使用官方安装方式。不建议在旧系统上继续使用 WSL1,因为 WSL2 的功能和性能优势明显,很多新特性不会回移植到 WSL1。
8.3 磁盘和备份思路
WSL2 的数据都存放在一个名为ext4.vhdx的虚拟磁盘文件里,位置通常在你的 Windows 用户目录下的 AppData 中。如果这个文件越来越大,常规删除 WSL 内部文件并不能让 vhdx 自动缩小。最有效的清理方式是wsl --export导出、wsl --unregister删除、再wsl --import导入,这样新的 vhdx 文件会按实际数据量重新分配。
9. 最佳实践与使用建议
9.1 数据目录管理
建议从一开始就规划好目录结构:
- WSL 家目录下建
~/projects、~/tools、~/data。 - Windows 交换目录单独建一个,比如
C:\Users\你的用户名\wsl-exchange。 - 大文件、素材、备份统一放在 Windows 盘符,通过
/mnt/c访问;代码、依赖、环境配置放在~/projects。
这样既保证了 Linux 侧的性能,又方便 Windows 侧用资源管理器打开文件。如果直接在 WSL 里访问 Windows 桌面目录里的项目,长期看到编译和版本管理操作明显变慢,不要怀疑 WSL 性能,大概率是目录放错了位置。
9.2 软件源换国内镜像
Ubuntu 默认软件源在海外,apt update速度可能不稳定。在国内环境中,建议把软件源替换为国内镜像,比如阿里云镜像。操作时先备份原文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后根据 Ubuntu 版本替换源地址。不同 Ubuntu 版本的源文件格式不一样,旧版本直接在/etc/apt/sources.list替换域名,新版 Ubuntu 24.04 之后使用了/etc/apt/sources.list.d/ubuntu.sources这种 deb822 格式。操作前先确认版本再修改,改完执行:
sudo apt update如果出现apt update报错,说明源格式不匹配,恢复备份文件即可。这一步能显著提升安装软件的速度,但不要随意修改系统的其他源配置,以免影响后续更新。
9.3 备份与克隆
定期导出 WSL 发行版是防止数据丢失最简单的途径。只需要一条命令:
wsl --export Ubuntu D:\wsl-backup\ubuntu-20250101.tar导出文件是完整的磁盘镜像,可以放到其他磁盘或网盘保存。结合 Windows 任务计划程序,可以让它按月自动执行。比如写一个脚本backup-wsl.bat:
@echo off set BACKUP_DIR=D:\wsl-backup set DATE=%date:~0,4%%date:~5,2%%date:~8,2% wsl --export Ubuntu %BACKUP_DIR%\ubuntu-%DATE%.tar然后用 Windows 任务计划程序定时运行这个 bat 文件。注意备份前先执行wsl --shutdown,否则导出耗时久且可能不一致。
9.4 安全与合规
WSL 是一个本地 Linux 环境,不能因为它是“Windows 自带功能”就忽略安全问题。建议做到:
- WSL 内不要使用 root 账户开发,日常操作用普通用户加
sudo。 - 如果 WSL 里启动了对外可见的服务,要确认监听地址和防火墙规则,避免开发服务暴露到局域网。
- 涉及公司代码、客户数据、未授权素材时,先确认使用边界和授权范围。
- 批量任务、定时脚本要加日志,出现问题才能快速定位。
10. 总结与下一步
如果不想折腾 VMware,WSL 是目前 Windows 上跑 Linux 成本最低的路径。最值得尝试的一行命令就是wsl --install,装上之后先做两个验证:用wsl -l -v确认是 WSL2,再在 WSL 里启动一个服务,用 Windows 浏览器访问 localhost。这两个点通了,日常 Linux 开发需求基本都能覆盖。
最容易踩的坑有三个:一是 WSL 内核或 Store 组件过旧,启动时报“必须更新到最新版本”,执行wsl --update解决;二是整个项目放在/mnt/c下导致 IO 慢,代码要放到~/;三是 vhdx 磁盘只增不减,需要导出再导入来收缩空间。
后续可以继续扩展的方向包括:给 WSL 配置 Docker Desktop 后端跑容器、启用 systemd 管理服务、使用 WSLg 运行 Linux 图形应用,以及用wsl --export/wsl --import做整机迁移。把这些能力用熟之后,你会发现在 Windows 上开发 Linux 应用,已经不需要再开一个笨重的虚拟机了。