如果你手里有一个必须在 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] default=yourname这是很多人遗漏的一个环节,不设置的话每次打开 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,点击左下角的远程管理按钮,或者直接按快捷键Ctrl+Shift+P打开命令面板,输入“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 里按Ctrl+Shift+P,选择“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如果你的项目涉及 Docker,WSL2 里可以直接安装 Docker Engine,也可以安装 Docker Desktop 并启用 WSL2 后端。我个人更推荐直接在 WSL 里安装 Docker Engine,因为这样不用在 Windows 上多跑一个守护进程,也更贴合 Linux 原生习惯。
3.4 让 Cursor 界面显示中文,顺手调整语言细节
“cursor怎么设置中文”和“cursor汉化”算是高频搜索词。Cursor 默认界面语言是跟随系统语言或者英文,如果想把界面改成中文,不需要借助任何第三方汉化补丁,直接在命令面板里操作即可。
按Ctrl+Shift+P,输入“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). Can't operate.解决办法是在/etc/wsl.conf里添加:
[boot] systemd=true然后在 Windows 侧执行wsl --shutdown重启 WSL。开启 systemd 后,systemctl就能正常管理 Docker、SSH 等服务了。
嵌入式方向的朋友也经常会问 WSL 能不能用来做交叉编译,比如 RK3588、树莓派这类 ARM 平台的项目。我的回答是可以,而且挺好用。WSL2 支持 KVM 加速,但大部分时候我们不需要跑虚拟机,只需要把交叉编译工具链安装到 Ubuntu 里,然后直接在make时指定交叉编译器前缀即可。比如 RK3588 相关的 SDK 一般会自带aarch64-linux-gnu-前缀的工具链,解压到 WSL 后,设置PATH指向工具链目录,然后执行:
export CROSS_COMPILE=aarch64-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导入 rootfs |
| Windows 提示 wsl needs updating | WSL 工具版本过旧 | 在 PowerShell 执行wsl --update,然后wsl --shutdown |
| Cursor 连接 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 update |
WSL 里systemctl不可用 | 系统缺少 systemd | 在/etc/wsl.conf开启systemd=true后重启 WSL |
| Ubuntu 登录默认是 root | 使用wsl --import导入导致 | 创建普通用户并在/etc/wsl.conf设置default用户 |
| 中文界面没生效 | 没有选择语言包 | Ctrl+Shift+P输入 Configure Display Language 选择中文 |
在 WSL 里python找不到 pip | 未安装 python3-pip | sudo apt install python3-pip |
| CUDA 在 WSL 里不可用 | Windows 显卡驱动未装或 WSL 未更新 | 更新驱动,执行wsl --update,确认nvidia-smi输出 |
binwalk安装失败 | 源里没有该包或源过旧 | sudo apt update后重试,或通过 pip 安装 |
这张表里的每一条都是实际开发中被反复问到的,也是我自己踩过之后才意识到“原来不是只有我一个人遇到这种情况”的痛点。把它收藏起来,遇到问题按图索骥,能省不少时间。
最后分享一个我个人的习惯。每次在 WSL 里改了/etc/wsl.conf或者装了新的系统组件,我不会急着直接关掉终端,而是执行一次wsl --shutdown再重新进入,把系统状态彻底重置一遍。这个习惯帮我避免了很多“改了配置不生效”“内核模块没加载”的怪问题。WSL 本身最值得信任的一点就是它可以随时被重置,环境搞坏了不丢数据,关掉重开就好。等你真正把项目在 WSL Ubuntu 里跑起来,再用 Cursor 打开那个目录的时候,你会发现 Windows 不再是你做 Linux 开发的障碍,反而成了顺手的外壳。