Windows下用WSL2 + Ubuntu + Cursor搭建Linux开发环境全指南

📅 发布时间:2026/9/24 18:32:51
Windows下用WSL2 + Ubuntu + Cursor搭建Linux开发环境全指南
如果你手里有一个必须在 Ubuntu 下才能跑起来的项目又不想折腾双系统或者被虚拟机卡到怀疑人生那么 WSL 基本是 Windows 上最舒服的一条路。最近我把手头的 Python 数据处理、PyTorch 训练脚本和嵌入式交叉编译工程都迁到了 WSL 里的 Ubuntu 环境日常编辑器也从 VS Code 换成了 Cursor用了一个多月下来最大的感受是环境隔离得干净终端出问题不会把整个 Windows 搞乱而且 Cursor 可以直接打开 WSL Ubuntu 里的项目目录AI 补全、终端命令、调试器全部跑在 Linux 侧体验上跟一台真正的 Linux 开发机没什么区别。这篇内容我不打算写成官方文档式的教程而是把“从零装好 WSL Ubuntu到用 Cursor 打开项目干活”这条路上会遇到的坑、需要理解的关键点、以及一些常规教程不会告诉你的细节完整梳理一遍。适合刚接触 WSL 的新手也适合已经在用但还没在 Cursor 里打通 WSL 的开发者。1. 为什么要把项目丢进 WSL 的 Ubuntu 里1.1 在 Windows 上做 Linux 开发的三种选择在 Windows 上写 Linux 程序常见的路子无非三种虚拟机、双系统、WSL。先说双系统性能损耗最小但来回切换要重启机器上同时挂着 Windows 和 Linux 两个系统硬盘分区、引导、驱动层面都容易出幺蛾子对于我这种一天要在 Windows 办公软件和 Linux 编译环境之间反复横跳的人来说实在不现实。虚拟机则胜在隔离彻底但 VMware 或 VirtualBox 跑一个完整桌面版 Ubuntu动辄占掉 4GB 以上的内存磁盘镜像几十个 GB开机启动慢文件共享、端口映射、GPU 直通这些配置也得花不少时间。WSL 的全称是 Windows Subsystem for Linux相当于微软在 Windows 内核上做的一个轻量级 Linux 兼容层。它不需要完整模拟一台电脑而是直接复用 Windows 的内核服务来运行一个真实的 Linux 用户态环境。早期 WSL1 是翻译系统调用性能上有瓶颈后来 WSL2 改用真正的轻量级虚拟机里面跑一个完整的 Linux 内核兼容性大幅提升。你现在在 Windows 应用商店里装的 Ubuntu默认走的就是 WSL2。它启动只需一两秒内存可以动态分配文件系统也更接近原生 Linux这也是我这几年在 Windows 上做嵌入式、Python、Docker 相关工作时首选它的原因。1.2 WSL2 的工作方式以及它比虚拟机好在哪WSL2 的本质是一个由 Windows 管理的轻量级虚拟机但这个虚拟机没有传统虚拟机的启动过程也没有图形界面管理工具它更像是一个被 Windows“包养”的后台进程。你在 Windows 终端里输一条wsl命令几秒钟之内就能进入一个完整的 Ubuntu shell。日常开发用到的gcc、python3、make、apt这些命令全部在 Ubuntu 环境里执行行为与原生 Linux 一致。我在实际开发中比较在意的几个点一是内存占用WSL2 默认使用动态内存不跑任务的时候它只占很少资源跑大编译任务时它会按需申请二是文件性能WSL2 内部文件系统是 ext4在~/project这类 Linux 原生目录里编译项目速度远快于放在/mnt/c下的 Windows 文件三是端口和网络的集成WSL2 里的服务可以直接通过 localhost 在 Windows 浏览器里访问开发 Web 应用和 API 服务几乎不需要额外配置。相比之下传统虚拟机光是配置端口转发、共享目录和安全策略就要折腾半天所以我个人非常推荐在 Windows 上做 Linux 开发时优先选择 WSL2。提示如果你只是跑一些简单的 Linux 命令WSL1 也能胜任但涉及 Docker、CUDA、大量文件读写时一定要用 WSL2。检查方法是在 PowerShell 里执行wsl -l -v看到 VERSION 是 2 就对了。2. WSL 和 Ubuntu 的安装每一步都可能踩坑2.1 一行命令开启 WSL但版本坑要提前留意如果你用的是 Win10 21H2 以上或 Win11安装 WSL 其实已经非常简单。以管理员身份打开 PowerShell执行wsl --install这条命令会自动完成三件事启用 Windows 的“适用于 Linux 的 Windows 子系统”功能、启用虚拟机平台、下载并安装默认的 Ubuntu 发行版。安装完成后重启系统Windows 会自动弹出一个 Ubuntu 窗口让你设置用户名和密码。但这里有个非常常见的坑很多人在执行wsl --install时系统提示“无法下载”“找不到发行版”或者卡住不动尤其是网络情况不理想的时候。这是我在多台电脑上反复遇到过的。如果安装中途失败第一步先确认 Windows 功能里“虚拟机平台”和“适用于 Linux 的 Windows 子系统”是否都已经勾选然后到 BIOS 里确认 CPU 虚拟化Intel VT-x 或 AMD-V是开启状态。检查虚拟化是否启用可以在任务管理器“性能”标签页里看“虚拟化”这一项。另外还要注意一个细节wsl --install默认装的是 Ubuntu 的最新 LTS 版本如果你系统语言的区域设置为中文它可能会从中国区镜像下载速度时快时慢。遇到下载问题不要反复重试同一条命令因为之前下载的临时文件可能已经在系统里留下了脏缓存。建议先执行wsl --list --online查看可用的发行版列表再指定版本安装比如wsl --install -d Ubuntu-22.04这样能更精确地控制发行版版本也避免误装到别的系统。2.2 wsl --install 慢到怀疑人生怎么办搜索“wsl install太慢了怎么解决”的人非常多因为 WSL 的发行版镜像实际是从微软的服务器或者 Ubuntu 官方源下载的网速受地区和网络环境影响很大。我第一次在一台新笔记本上装 WSL 时进度条卡在 0 不动了近十分钟一度以为机器死机了。如果遇到安装速度极慢我推荐两条路。第一条是直接手动下载发行版的 appx 包然后双击安装。你可以到微软官方的 WSL 发行版下载页面选择对应版本的 Ubuntu appx 文件用浏览器下载往往比命令行里下载稳定。下载完成后直接把文件后缀改成 zip 解压里面有一个install.exe或.appx文件右键以管理员权限安装即可。第二条路是使用 WSL 的离线导入方式。这个在“wsl离线安装ubuntu”这个需求里很常见。你需要先拿到一个 Ubuntu 的 rootfs 压缩包比如ubuntu.tar.gz然后在 Windows 里找个目录存放执行wsl --import Ubuntu D:\WSL\Ubuntu D:\Downloads\ubuntu.tar.gz --version 2这条命令会把压缩包导入到 WSL 里并把发行版命名为 Ubuntu。注意和常规安装不同--import方式默认不会创建默认用户你第一次进入时会以 root 身份登录。解决办法是进入系统后创建一个普通用户并设置默认用户后面我会细说。这个方法非常适合网络条件差、又急需环境的场景你只要想办法拿到一个完整的 rootfs 镜像就能在离线状态下完成安装。注意使用wsl --import导入的只是命令行环境没有自带图形界面但日常开发完全够用。如果之后想要 Ubuntu 桌面需要额外安装 GUI 相关组件但我不建议在 WSL 里跑完整桌面资源开销会明显增加而且并不是 WSL 的设计初衷。2.3 装完之后先做这三件事系统装好、能进入 Ubuntu shell 之后先别急着直接在 Cursor 里打开项目我建议按下面的顺序做一轮初始化能省掉后面一大堆问题。第一步更新软件源和系统。上网搜“ubuntu安装gcc失败”这类问题大部分情况下都是软件源没更新、或者旧源已经失效导致的。进入 shell 后执行sudo apt update sudo apt upgrade -y如果你在境内建议把/etc/apt/sources.list里的官方源手动换成国内镜像源比如清华、阿里云的镜像这能显著提升 apt 的下载速度。否则后续安装 gcc、python3-pip、binwalk 这些工具时等待时间会非常煎熬。第二步安装日常开发的基础工具。我自己一般会一次性装好这些sudo apt install -y build-essential python3 python3-pip git curl wget unzipbuild-essential包含了 gcc、g、make 等编译工具链Ubuntu 上编译 C/C 项目基本离不开它。很多时候你在 Ubuntu 里执行make提示找不到命令就是因为没装这个包。第三步检查wsl --version和内核版本。如果你在 Windows 上执行wsl --update或是看到“wsl needs updating”的提示说明本机 WSL 工具版本过旧。旧版 WSL 在挂载、性能、兼容性上都有不少已知问题最简单的解决办法是在 PowerShell 里执行wsl --update升级完成后执行wsl --shutdown重启 WSL确保新版本生效。对于 rootfs 导入方式安装的用户还需要手动创建普通用户。方法是在 root 登录状态下useradd -m -s /bin/bash yourname passwd yourname echo yourname ALL(ALL:ALL) ALL /etc/sudoers然后用su yourname切换到普通用户。如果想让这个用户成为默认登录用户可以在/etc/wsl.conf里加上[user] defaultyourname这是很多人遗漏的一个环节不设置的话每次打开 WSL 都是 root权限过大容易误删系统文件而且 Cursor 连接后也会以 root 身份做事非常不安全。3. Cursor 打开 WSL Ubuntu 项目的完整流程3.1 Cursor 凭什么能直接打开 Linux 项目Cursor 本质上是一个基于 VS Code 的编辑器底层继承了 VS Code 那套远程开发架构。这套架构的核心思路是编辑器界面跑在 Windows 上但文件系统、终端、语言服务和调试器都跑在远端服务器上也就是 WSL 里的 Ubuntu 环境。你在 Windows 上看到的文件树实际上是 Cursor 通过远程协议拉取并展示的你在 Cursor 里打开终端这个终端直接连到 WSL 的 bash你在代码里按 F5 启动调试实际运行调试器的也是 WSL 里的 Python 或 Node.js。这意味着什么意味着你的项目环境和代码之间是“零距离”的。比如我在 Windows 上用 Cursor 打开一个位于 WSL 里的 PyTorch 项目当我写代码时Cursor 用来做代码补全和 AI 分析的上下文可以读取到 WSL 里的 Python 解释器信息、依赖包版本、甚至.venv里的包结构命令行里python train.py用的也是 WSL 里的 CUDA 环境而不是 Windows 上那个没有 GPU 加速的 Python。这件事对开发者来说特别重要因为很多人刚开始用 Cursor 时会困惑“我明明已经装了 WSL为什么在 Cursor 里打开终端还是 Windows 的 PowerShell”。原因很简单Cursor 默认启动的是 Windows 侧窗口你需要在新建窗口时明确选择连接到 WSL编辑器才会以远程模式运行。3.2 从远程窗口连接到 WSL在 Cursor 里打开 WSL 项目最干净的方式是使用远程窗口连接。具体步骤是这样的打开 Cursor点击左下角的远程管理按钮或者直接按快捷键CtrlShiftP打开命令面板输入“WSL”关键字选择“Remote-WSL: New Window”然后在下拉列表里选中你的 Ubuntu 发行版。如果这是第一次连接Cursor 会在后台自动安装一个 WSL 扩展随后打开一个新窗口。在这个新窗口的左下角你会看到一个绿色的“WSL: Ubuntu”标识这就说明你已经进入了远程模式。远程模式打开后点击菜单栏的“文件 - 打开文件夹”在弹出的路径选择框里输入或浏览到 WSL 里的项目路径。注意这里不要选择/mnt/c/下的路径那是 Windows 文件系统挂载过来的性能差、权限也可能有问题要选择 Linux 原生的目录比如/home/yourname/projects/myapp。如果你之前已经在 Windows 上写过代码可以把C:\Users\xxx\projects\myapp里的文件复制到 WSL 里cp -r /mnt/c/Users/xxx/projects/myapp ~/projects/后续的开发、编辑、运行都尽量在~目录下进行这样才能充分利用 WSL2 的文件系统性能。这里我要强调一个非常关键的概念你打开项目的位置决定了这套工作流的好坏。很多人把项目放在 Windows 盘符下然后在 WSL 里用/mnt/c/...访问文件读写速度会严重下降。我实测过一个包含大量小文件的 Node.js 项目在/mnt/c下跑npm install可能需要几分钟放到 WSL 原生目录下只需要几十秒。原因在于 WSL2 跨文件系统访问时需要经过 9P 协议转换IO 性能大打折扣。所以务必把项目真正放在 Linux 侧。提示如果 Cursor 连接 WSL 后提示“无法启动服务器”大概率是 WSL 版本过旧或者 Ubuntu 系统内的 glibc 版本不兼容。先在 PowerShell 里执行wsl --update再进入 Ubuntu 执行sudo apt upgrade -y把系统组件更新到较新版本一般就能解决。3.3 在 WSL 环境里配置 Python、PyTorch 和常用工具打开项目后你会发现Cursor 的终端已经默认是 Ubuntu 的 bash当前目录就是项目目录。这时你可以直接在终端里配置环境我用得最多的是 Python 和 PyTorch这里给出一套非常通用的流程。先确认 Python 环境。Ubuntu 22.04 自带的 Python 3.10 通常够用我习惯使用venv建立独立的虚拟环境避免把系统 Python 搞乱sudo apt install -y python3-venv python3 -m venv .venv source .venv/bin/activate激活虚拟环境后在 Cursor 里按CtrlShiftP选择“Python: Select Interpreter”再选择刚才创建的.venv/bin/python。这样 Cursor 的代码补全、类型解析和 AI 分析就能准确读取到虚拟环境里的包信息。如果是做深度学习相关的项目需要搭建 PyTorch 环境可以在激活虚拟环境后按照 PyTorch 官网给出的 pip 命令安装。比如对于 CUDA 12.1 版本pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121如果在境内执行这条命令很慢可以使用国内 PyPI 镜像来安装 CPU 版本或者先通过镜像下载 PyTorch 的 wheel 文件再本地安装。GPU 加速方面WSL2 支持 NVIDIA CUDA前提是 Windows 侧已经安装了 NVIDIA 显卡驱动并且 WSL 里不需要再装驱动。只要执行wsl --update后nvidia-smi命令能正常输出就说明 GPU 可以被 WSL 内的 PyTorch 使用。除了 Python 环境我还建议在 WSL 里安装一些通用的调试和系统工具。比如sudo apt install -y htop neofetch tree lsof stracehtop用来实时看 CPU 和内存占用lsof用来排查端口占用strace用来追系统调用。这些都是排查问题时的好帮手。有些项目还会用到 binwalk这是一个固件分析和文件提取工具嵌入式方向会经常遇到安装方式同样是sudo apt install -y binwalk如果你的项目涉及 DockerWSL2 里可以直接安装 Docker Engine也可以安装 Docker Desktop 并启用 WSL2 后端。我个人更推荐直接在 WSL 里安装 Docker Engine因为这样不用在 Windows 上多跑一个守护进程也更贴合 Linux 原生习惯。3.4 让 Cursor 界面显示中文顺手调整语言细节“cursor怎么设置中文”和“cursor汉化”算是高频搜索词。Cursor 默认界面语言是跟随系统语言或者英文如果想把界面改成中文不需要借助任何第三方汉化补丁直接在命令面板里操作即可。按CtrlShiftP输入“Configure Display Language”回车后在列表里找到“中文(简体)”选择后 Cursor 会提示安装对应语言包并重启。重启后界面就变成中文了。如果你在远程 WSL 窗口里打开这个设置它影响的是当前窗口的界面语言不会影响你项目文件和代码内容的编码。有一点要特别注意Cursor 设置中文后AI 对话窗口、代码注释生成和提示词默认行为并不会自动切换成中文。Cursor 的 AI 回答语言是由当前对话的语境和系统提示词决定的。如果你希望 AI 在辅助写代码时使用中文回复可以在对话里直接说明“请用中文回答”或者在所有对话的自定义指令里配置一条“Keep responses in Chinese”。这个细节很多人不知道设置之后体验会好很多。另外“cursor提示词泄露”这个热词其实是前段时间社区在讨论“系统提示词被用户套出来”的话题。对普通用户而言你只需要知道Cursor 的提示词本身是官方设定的你问不出来什么也没关系关键是你自己的代码数据要保护好。如果公司项目有严格保密要求建议在 Cursor 设置里检查是否开启了“Codebase Indexing”等会发送代码上下文的功能必要时关闭隐私相关的数据分析开关。4. WSL 环境下的调试技巧与日常坑4.1 文件互访和路径转换别再写错那种地址用 WSL 开发时Windows 和 Linux 之间的路径转换是最容易让人懵的地方。Windows 里的C:\Users\myname\AppData到了 WSL 里会变成/mnt/c/Users/myname/AppData反过来你从 WSL 里访问 Windows 目录也要在路径前面加/mnt/。如果你需要在脚本里自动做转换可以用wslpath命令。比如wslpath C:\Users\myname\Desktop\file.txt # 输出 /mnt/c/Users/myname/Desktop/file.txt反向转换wslpath -w /home/myname/project # 输出 C:\Users\myname\AppData\Local\Packages\...或类似挂载路径这个命令在做跨系统文件操作时非常实用。比如我在 Windows 上的 “下载” 目录拉下来一个数据集想在 WSL 里解压我可以直接在 bash 里用/mnt/c/Users/xxx/Downloads/dataset.zip的路径去访问。但要记住大文件处理最好先复制到 WSL 侧再操作否则 IO 性能损耗会让你怀疑机器配置。还有一点很反直觉WSL1 和 WSL2 对/mnt/c的访问性能完全不同。WSL1 直接访问 Windows 文件系统速度尚可WSL2 则是通过网络协议挂载性能下降明显。所以“在 Windows 盘符上建项目、在 WSL 里运行”这个做法在 WSL2 下就是错误的活法。正确姿势是项目文件都在 Linux 侧偶尔需要交换文件时才走/mnt/c。4.2 gcc 装不上、环境变量改坏后的急救方法我见过不少刚接触 Ubuntu 的用户上来的第一个坑是sudo apt install gcc报错或者是安装后gcc命令仍然提示找不到。这种情况十有八九是软件源的问题。Ubuntu 官方源在境外某些环境下连接不稳定导致 apt 索引拉不下来或者下载一半超时。最快的解决办法是切换镜像源。你可以手写/etc/apt/sources.list也可以用软件源管理工具。我个人推荐直接手动改成清华源编辑文件前先备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vim /etc/apt/sources.list然后把里面的源地址整体替换成https://mirrors.tuna.tsinghua.edu.cn/ubuntu/保存后执行sudo apt update后续安装速度会有质的飞跃。另一个高频问题是把环境变量改坏了。比如你往.bashrc或/etc/environment里加了错误的PATH导致所有命令都提示command not found连ls、sudo都用不了。遇到这种情况不要慌更不要直接重装系统。因为 shell 启动时会读取配置文件如果配置里有语法错误或覆盖了 PATH命令就找不到。急救方法有两种第一种如果当前终端还开着只是新开终端才报错可以直接用绝对路径调用命令/usr/bin/vim ~/.bashrc /usr/bin/sudo /usr/bin/apt update第二种如果连当前会话都坏了可以先用wsl -u root从 Windows 侧进入 root 用户再修复普通用户的配置文件。因为 root 用户有自己独立的.bashrc你可以在 root shell 里直接编辑/home/yourname/.bashrc把它里面写错的 PATH 改回来。配置文件里添加环境变量的正确姿势是export PATH$PATH:/your/new/path一定要保留原来的$PATH而不是写成export PATH/your/new/path。这个错误我刚开始用 Linux 时也犯过会直接导致系统命令全部找不到。4.3 WSL 里的 Docker 和嵌入式交叉编译体验如果你在 Windows 上搞过 Docker一定体会过 Docker Desktop 的笨重。而 WSL2 本身就是一个完整的 Linux 环境完全可以把它当作 Docker 的宿主机。在 WSL 的 Ubuntu 里安装 Docker Engine 之后所有容器都跑在 Linux 内核上性能表现和原生 Linux 没区别。我自己的做法是在用wsl --import或标准安装的 Ubuntu 里执行 Docker 官方安装脚本然后执行systemctl enable docker让 Docker 服务随 WSL 启动。这里有个小坑某些精简版 WSL 镜像里没有 systemd启动时报System has not been booted with systemd as init system (PID 1). Cant operate.解决办法是在/etc/wsl.conf里添加[boot] systemdtrue然后在 Windows 侧执行wsl --shutdown重启 WSL。开启 systemd 后systemctl就能正常管理 Docker、SSH 等服务了。嵌入式方向的朋友也经常会问 WSL 能不能用来做交叉编译比如 RK3588、树莓派这类 ARM 平台的项目。我的回答是可以而且挺好用。WSL2 支持 KVM 加速但大部分时候我们不需要跑虚拟机只需要把交叉编译工具链安装到 Ubuntu 里然后直接在make时指定交叉编译器前缀即可。比如 RK3588 相关的 SDK 一般会自带aarch64-linux-gnu-前缀的工具链解压到 WSL 后设置PATH指向工具链目录然后执行export CROSS_COMPILEaarch64-linux-gnu- make整个过程不需要真实硬件编译完成后再把镜像文件拷贝到 Windows 侧用烧录工具写入开发板。相比在 Windows 上装一堆 cygwin 环境或者在虚拟机里跑命令行WSL 的体验要顺手得多。注意WSL 里访问 USB 设备需要通过 USB/IP 或者 Windows 侧的驱动映射最简单的方式是用 Windows 版烧录工具处理硬件连接部分WSL 只负责编译和脚本操作避免在 USB 转发上花时间。4.4 binwalk、系统修复等折腾向使用场景WSL 不只是跑正经开发的很多折腾向工具也可以在 Ubuntu 里用。比如分析固件时常用的 binwalk在 Ubuntu 里一条命令就能装好sudo apt install -y binwalk有一次我在逆向一个路由器固件包需要在 Linux 环境下提取文件系统镜像直接在 WSL 里执行binwalk -e firmware.bin几秒就拆完了。由于 WSL 的文件系统和 Linux 完全一致很多在原生 Linux 上能跑的脚本在这里都能直接跑。再比如系统修复场景。不少人在 WSL 里做完 apt 升级后发现系统有些包坏了或者某个软件依赖冲突。修复思路也和原生 Linux 一样sudo apt --fix-broken install sudo dpkg --configure -a如果你连登录密码都忘了网上搜“ubuntu 忘记登录密码”的解决方案其实是针对完整 Linux 系统的。在 WSL 里更简单直接在 PowerShell 里执行wsl -u root进入 root 后执行passwd yourname就能重置密码完全不需要像物理机那样进 recovery 模式。中文输入法也是很多人纠结的点。WSL2 默认支持 WSLg可以显示 Linux 图形程序但中文字体输入法需要额外配置。开发场景里我一般不在 WSL 里输入中文因为代码、注释和英文文档完全够用。如果真的要在 WSL 的图形应用里输入中文可以安装 fcitx 或 ibus 并配置好输入法框架但这属于 GUI 层面的折腾不建议没有桌面需求的用户碰。5. 常见问题速查表我整理了一张在 Cursor 打开 WSL Ubuntu 项目过程中最常遇到的速查表方便你遇到问题时快速定位。症状可能原因解决方法wsl --install卡住或极慢网络下载不稳定手动下载 appx 包安装或用wsl --import导入 rootfsWindows 提示 wsl needs updatingWSL 工具版本过旧在 PowerShell 执行wsl --update然后wsl --shutdownCursor 连接 WSL 失败WSL 或 Ubuntu 系统组件过旧更新 WSL执行sudo apt upgrade -y升级 glibc 等组件项目放在/mnt/c下编译很慢WSL2 跨文件系统 IO 性能差把项目复制到~目录下开发打开 WSL 终端显示command not found环境变量 PATH 被改坏用/usr/bin/vim或wsl -u root修复配置文件gcc安装失败apt 软件源连接不稳定更换国内镜像源后apt updateWSL 里systemctl不可用系统缺少 systemd在/etc/wsl.conf开启systemdtrue后重启 WSLUbuntu 登录默认是 root使用wsl --import导入导致创建普通用户并在/etc/wsl.conf设置default用户中文界面没生效没有选择语言包CtrlShiftP输入 Configure Display Language 选择中文在 WSL 里python找不到 pip未安装 python3-pipsudo apt install python3-pipCUDA 在 WSL 里不可用Windows 显卡驱动未装或 WSL 未更新更新驱动执行wsl --update确认nvidia-smi输出binwalk安装失败源里没有该包或源过旧sudo apt update后重试或通过 pip 安装这张表里的每一条都是实际开发中被反复问到的也是我自己踩过之后才意识到“原来不是只有我一个人遇到这种情况”的痛点。把它收藏起来遇到问题按图索骥能省不少时间。最后分享一个我个人的习惯。每次在 WSL 里改了/etc/wsl.conf或者装了新的系统组件我不会急着直接关掉终端而是执行一次wsl --shutdown再重新进入把系统状态彻底重置一遍。这个习惯帮我避免了很多“改了配置不生效”“内核模块没加载”的怪问题。WSL 本身最值得信任的一点就是它可以随时被重置环境搞坏了不丢数据关掉重开就好。等你真正把项目在 WSL Ubuntu 里跑起来再用 Cursor 打开那个目录的时候你会发现 Windows 不再是你做 Linux 开发的障碍反而成了顺手的外壳。