如果你是最近才开始折腾 Linux 环境,又不想为了一个命令行就装双系统或者天天开关虚拟机,那 WSL2 是目前 Windows 上最值得花半小时去搭好的东西。我以前也图省事用 VMware 跑 Ubuntu,后来发现无论怎么分配内存,开个 IDE、再启动几个服务,风扇都能起飞。切换到 WSL2 之后,日常写代码、跑脚本、玩 Docker、甚至折腾 CUDA 和 ROS2,全都直接在 Windows 桌面下干活,文件系统互通,启动速度以毫秒计,这种体验和虚拟机完全不在一个层次。
这篇主要讲我在第六周把 WSL2 + Ubuntu 完整跑通的过程,从环境检查、安装、换源、配置 systemd、安装 Docker、CUDA、图形界面,到各种“装完就翻车”的排查经验,一次性写清楚。我不会只贴命令,还会解释每个步骤为什么要这么做,方便你装完之后知其然也知其所以然。本文完全基于常见实践,不涉及任何特殊网络环境,镜像源也以国内高校与云厂商官方镜像为例。
1. 环境准备与前置条件
真正开始安装前,先把系统和固件层面的条件确认好。WSL2 不是简单的“一个安装包”,它依赖 Windows 的虚拟化平台和内核组件,前置条件缺一项,后面各种报错就会轮番上演。我见过太多人一上来就 wsl --install,结果卡在“启用虚拟机平台”或者 BIOS 里虚拟化开关没开,白白浪费很多时间。
1.1 检查 Windows 版本与虚拟化开关
WSL2 对 Windows 版本有硬性要求。Windows 10 需要 2004 及以上版本(内部版本号 19041 以上),Windows 11 全版本都支持。系统太老的话,建议先用 Windows Update 把系统补丁打满,否则功能组件可能不完整。
Windows 上检查虚拟化是否开启很简单:打开任务管理器,切到“性能”选项卡,看“CPU”那一栏右下角是否有“虚拟化:已启用”。如果没有,需要进 BIOS/UEFI 把 Intel VT-x 或者 AMD-V 打开,这一步在 WSL2 里面是硬依赖。第六周我重新折腾新机器时,检查完发现虚拟化没启用,BIOS 里改完设置保存重启,问题直接解决。另外需要确认主板固件里是否保留了足够的内存映射空间,极少数机器开了虚拟化但仍报错 0x80370102,把“内存完整性”那些安全功能关掉试试,这只是排查思路,真正的操作麻烦对照自己机器实际情况来。
1.2 启用 Windows 功能
这里说的“Windows 功能”指控制面板里的“启用或关闭 Windows 功能”面板。WSL2 需要两个核心组件:适用于 Linux 的 Windows 子系统 和 虚拟机平台。你可以通过面板手动勾选,也可以用管理员身份打开 PowerShell 执行以下两条命令:
powershell复制dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
执行完提示重启就重启,这个步骤不能跳过,因为底层驱动和虚拟化服务需要重新初始化。我以前急着继续,没重启就往下走,结果 wsl 命令全部不识别。这个教训提醒我,WSL2 的组件安装和驱动加载必须靠重启来生效,省不掉。
1.3 安装 WSL2 内核并设置默认版本
功能组件启用后,还需要安装 WSL2 的 Linux 内核更新包。这一步是 WSL2 和 WSL1 最大的区别所在:WSL1 用的是翻译层模拟 Linux 系统调用,WSL2 直接跑在轻量级 Hyper-V 虚拟机里,拥有完整 Linux 内核,所以兼容性比 WSL1 好非常多。安装方式也很简单,管理员 PowerShell 执行:
powershell复制wsl --update
这个命令会拉取最新的内核组件。然后设置默认版本:
powershell复制wsl --set-default-version 2
检查一下状态:
powershell复制wsl --status
wsl --version
如果第一行显示“默认版本:2”,就可以去装 Ubuntu 发行版了。从这里开始,你实际上已经成功了一大半,因为内核和虚拟化都就位了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装 Ubuntu 发行版与初始配置
WSL2 本身只是一个运行时,你需要再选择一个具体的 Linux 发行版。微软商店里可选的有 Ubuntu、Debian、Kali Linux、openSUSE 等,甚至还有 Fedora Remix。但绝大多数教程和软件包都默认你用的是 Ubuntu,因为它资料最多,遇到问题最容易搜到靠谱解答。
2.1 用命令行安装 Ubuntu 22.04 LTS
市面上常见的 Ubuntu 版本里,22.04 LTS 属于已经打磨得很稳定的长期支持版,无论是做 AI 开发、安装 CUDA、跑 ROS2,各种预编译包基本都能对上。这里我推荐直接用命令行安装,比去商店手动点更可控:
powershell复制wsl --install -d Ubuntu-22.04
这个命令会自动下载、注册发行版,第一次安装完成后会自动弹出 Ubuntu 终端。注意:如果你的 Windows 已经装过旧版 WSL,可能需要先跑一次 wsl --shutdown 再执行上面的命令。安装完成后,Ubuntu 终端里会提示你创建 UNIX 用户名和密码,这个用户名和 Windows 用户名是独立的,密码输入时屏幕不显示是正常现象,不要以为是卡了。
创建用户名的时候,建议避开纯数字开头,也不要带空格和特殊符号。后面很多编译工具和 Shell 脚本默认假定用户目录是 /home/用户名,如果用户名太奇怪,可能会在配置 SSH、ROS 工作空间时踩坑。
提示:如果只想快速体验,也可以直接以 root 身份登录。设置完普通用户后,使用
sudo passwd root给 root 设置一个密码,后续用su切换。但日常操作还是建议用普通用户 + sudo,避免误删系统文件。
2.2 换源与系统更新
Ubuntu 默认的软件源在国外,国内下载速度经常惨不忍睹。安装完的第一步不是急着装软件,而是把 apt 源替换成国内镜像站,这一步能让你后续 apt install 的速度产生质变。
先备份原始源文件:
bash复制sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
然后编辑 /etc/apt/sources.list。Ubuntu 22.04 的源格式和旧版不同,以清华源为例,把文件内容替换成下面这些:
bash复制deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
注意版本代号:22.04 是 jammy,20.04 是 focal,24.04 是 noble。如果你装的是 24.04,得把 jammy 换成 noble,别照抄。编辑完执行:
bash复制sudo apt update
sudo apt upgrade -y
apt update 是拉取软件包索引,apt upgrade 是真正系统升级。首次升级大概会拉取几百兆的更新,但换了国内源之后速度很快。这一步能把你刚装的 Ubuntu 打磨到最新状态,避免后面装 CUDA 或 ROS2 时因为依赖库版本太老而报错。
2.3 安装基础工具链
Ubuntu 默认环境很精简,很多你可能觉得“应该自带”的东西都没装。我习惯装完系统后先安装一套基础工具,后面编译软件时就不用反复补装:
bash复制sudo apt install -y build-essential git curl wget vim net-tools \
ca-certificates gnupg lsb-release software-properties-common
build-essential 包含了 gcc、g++、make 等编译必须的组件,这是最核心的一个。装好之后顺手验证一下编译器是否正常:
bash复制gcc --version
make --version
git --version
如果都输出了版本号,说明基础环境已经通了。很多人抱怨“WSL2 里 apt install 总报 hash sum mismatch”,大部分情况是网络波动导致的源索引损坏,换个时间再试,或者 sudo apt clean 清掉缓存就能解决。
2.4 启用 systemd
Ubuntu 22.04 默认在 WSL2 里是不启用 systemd 的,而 systemd 是现代 Linux 管理服务(比如 systemctl 启动 docker、ssh)的核心工具。如果你发现 systemctl 命令报错,说明 systemd 还没开。
启用方法很简单:编辑 /etc/wsl.conf 文件,确保有以下内容:
bash复制[boot]
systemd=true
保存后在 Windows PowerShell 里执行 wsl --shutdown,再重新打开 Ubuntu 终端,执行:
bash复制systemctl list-units --type=service --state=running
如果输出一堆服务条目,说明 systemd 已经正常工作。这一步对后续安装 Docker、配置 SSH、自启动服务非常关键,不启用的话很多服务管理命令都用不了。
3. 图形界面、输入法与 Windows 文件互通
很多初学者装 WSL2 前最大的顾虑是:“没有图形界面,我怎么像用虚拟机一样操作 Ubuntu?”实际上,新版 WSL2 已经内置了 WSLg,轻量 GUI 应用可以直接弹窗显示,不需要额外装 VNC 或者 X Server。
3.1 验证 WSLg 并安装图形应用
WSLg 是微软把 Linux GUI 应用通过 RDP 协议集成进 Windows 的解决方案,只要你的 Windows 版本够新,装完 WSL2 后 WSLg 默认就是启用的。你可以直接开一个需要图形界面的应用测试一下,比如安装最简单的文本编辑器:
bash复制sudo apt install -y gedit
gedit
如果屏幕上弹出 gedit 窗口,说明图形显示链路是通的。更直观的验证是安装文件管理器:
bash复制sudo apt install -y nautilus
nautilus
会弹出类似 Windows 资源管理器的窗口。WSLg 的表现比我想象中稳定,窗口缩放、复制粘贴文字、跨应用拖拽基本都没问题,日常轻度使用完全够。如果你需要完整的 Ubuntu 桌面体验,也可以安装 xrdp 或 VNC,但个人建议没必要,WSL2 的最佳使用方式还是命令行为主、GUI 为辅。
3.2 中文输入法的配置方案
中文输入法是很多刚接触 WSL2 的人绕不过去的坑。WSLg 默认虽然能显示中文,但输入法还得自己装。我试过两套方案:fcitx5 和搜狗输入法 Linux 版,最终留在 fcitx5 + 谷歌拼音。
bash复制sudo apt update
sudo apt install -y fcitx5 fcitx5-chinese-addons
安装完成后,在 Ubuntu 终端里运行:
bash复制im-config -n fcitx5
然后重启 WSL(wsl --shutdown 后再进入)。重启后,在 fcitx5 配置界面添加“拼音”输入法,通过 Ctrl + 空格 切换。注意输入法必须和 GUI 应用配合使用,在纯终端里容易出现候选框不显示的情况。这是因为 WSLg 的 Wayland 环境对输入法支持还不够完美,如果只是写代码,也可以用 VSCode 的拼音插件替代。
3.3 高效访问 Windows 文件系统
WSL2 不是隔离的孤岛,Windows 和 Linux 两侧的文件系统都能互相访问。从 Ubuntu 里访问 Windows 盘,路径是这样:
bash复制cd /mnt/c/Users/你的用户名/Desktop
从 Windows 访问 Linux 文件,可以在资源管理器地址栏输入:
code复制\\wsl$\Ubuntu-22.04\home\你的用户名
这串路径是 WSL2 的虚拟磁盘映射,Windows 程序可以直接读写 Linux 目录下的文件,比如用 Windows 的 IDEA 打开 Linux 里的项目源码,操作起来毫无违和感。
还有个实用命令:在 Ubuntu 终端里输入 explorer.exe .,会自动打开 Windows 资源管理器并定位到当前 Linux 目录。这招用来把 Linux 下的文件拷贝到 Windows 桌面非常方便,省得敲一长串 cp 命令。
注意:跨文件系统的读写性能有损耗。在
/mnt/c下编译大型项目,或者跑数据库,速度比放在 Linux 原生文件系统里慢不少。我的习惯是代码放 Linux 侧(~/projects),临时文件放 Windows 侧,既保证编译速度又方便用 Windows 工具查看。
4. 开发环境扩展:Docker、CUDA 与 ROS2
WSL2 装机的高光时刻在于,很多原本需要独立 Linux 机器才能跑的开发环境,现在 Windows 桌面下直接就能用。我第六周的目标是从零搭出一套能跑 AI 训练、容器化部署和 ROS2 仿真的环境,这部分确实花了最多时间,但也最值得。
4.1 Docker 的两种安装方式
WSL2 里跑 Docker 有两种思路:使用 Docker Desktop,或者在 Ubuntu 里原生化安装 Docker Engine。Docker Desktop 对新手更省心,它自带图形管理界面,能自动和 WSL2 集成,但商业使用有许可证限制。原生化安装 Docker Engine 则更接近服务器部署环境,后面生产环境怎么配,本地就怎么配,我推荐这种方式。
在 Ubuntu 里安装 Docker Engine 的步骤:
bash复制sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
装完后启动 Docker:
bash复制sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
第三条命令是把当前用户加入 docker 组,这样以后运行 docker 命令就不用每次加 sudo 了。重新登录终端后验证:
bash复制docker run hello-world
如果看到 “Hello from Docker!”,说明容器环境已经跑通。第六周我在这个基础上直接把公司项目用的 MySQL、Redis、Nginx 全容器化了,Windows 本机不用装任何服务端软件,用完就删容器,干净得不行。
4.2 CUDA 与 GPU 直通配置
如果你是做 AI 相关工作的,WSL2 一个很大的价值就是 GPU 直通。Windows 下的 NVIDIA 驱动可以直接共享给 WSL2 里的 Linux 环境,无需在 Linux 里单独装显卡驱动,就能跑 CUDA、PyTorch、TensorFlow 这类计算任务。
前提条件:
- Windows 侧安装新版 NVIDIA 驱动(版本号 470+)
- WSL2 里确认能看到 GPU:
bash复制nvidia-smi
如果输出类似 NVIDIA-SMI 的信息,并且右上角显示 CUDA Version,说明 GPU 已经成功直通。接下来安装 CUDA Toolkit,这里建议去 NVIDIA 官网选对应 Ubuntu 版本,以 22.04 为例,运行官方提供的 deb 安装命令即可。安装完配置环境变量:
bash复制export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
建议把这两行追加到 ~/.bashrc 里,然后 source ~/.bashrc。验证 CUDA 编译器:
bash复制nvcc --version
能输出版本号就说明 CUDA 环境已经就位。这时候你可以在 WSL2 里直接 pip install torch,PyTorch 默认会调用 CUDA,跑一个小矩阵运算:
python复制import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
输出 True 和你的显卡型号,说明 GPU 环境完全打通。这种方案比之前在 Windows 里直接装 CUDA 舒服太多,Linux 下各种预编译包和源码编译兼容性都好得多。
4.3 ROS2 安装要点
ROS2 在 WSL2 里安装跟原生 Ubuntu 区别不大,但有几个小坑值得单独说一下。先确认 Ubuntu 版本对应的 ROS2 发行版:Ubuntu 22.04 对应 ROS2 Humble。安装步骤按 ROS 官方文档走就行,核心流程是:
bash复制sudo apt install -y software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install -y curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
然后添加 ROS2 软件源、安装桌面版:
bash复制sudo apt update
sudo apt install -y ros-humble-desktop
source /opt/ros/humble/setup.bash
这里最容易出问题的是环境变量。ROS2 依赖的 source 命令需要在每次新终端里执行,建议把下面这行加到 ~/.bashrc:
bash复制echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
还有个细节:WSL2 里跑 ROS2 的图形工具 rviz2 或 gazebo 时,如果窗口黑屏,先在 Windows 侧确认显卡驱动是新版,然后检查 WSLg 是否正常,排障时可以用 echo $WAYLAND_DISPLAY 或 echo $DISPLAY 看图形环境变量是否存在。多数情况是没重启 WSL,导致 WSLg 没启动完整。
5. 日常使用技巧与问题排查实录
WSL2 不是装完就完事了,日常使用中总会遇到各种奇奇怪怪的问题。这一节把我在第六周踩过的坑、以及身边朋友问得最多的排查记录统一整理出来,按问题分类写成速查表,方便你遇到的时候直接对号入座。
5.1 网络连接与 DNS 解析异常
WSL2 的默认网络模式是 NAT,IP 地址每次重启可能变化。大部分情况下你不需要关心这个,因为 Windows 通过 localhost 就能直接访问 WSL2 里的服务,比如在 WSL2 里启动了一个 8080 端口的服务,Windows 浏览器打开 http://localhost:8080 就能访问。
但如果遇到 apt update 时 DNS 解析失败,或者 ping 不通外网,多半是 DNS 配置文件有问题。常见修复方法是在 /etc/wsl.conf 里加一行:
bash复制[network]
generateResolvConf = true
然后重新生成 /etc/resolv.conf:
bash复制sudo rm /etc/resolv.conf
sudo sh -c 'echo "nameserver 223.5.5.5" > /etc/resolv.conf'
sudo chattr +i /etc/resolv.conf
chattr +i 是给文件加不可修改属性,防止 WSL2 重启时自动覆盖自定义的 DNS 配置。如果之后又想恢复自动生成,执行 sudo chattr -i /etc/resolv.conf 就行。这只是常规网络配置,不涉及任何特殊用途。
5.2 启动报错与 WSL 版本冲突
初学者最常见的报错之一是:
code复制WSL 2 requires an update to its kernel component.
这个提示说明内核组件版本太老,在管理员 PowerShell 里执行 wsl --update 即可。如果仍然报错且 Windows Update 也无法完成更新,可以手动下载新版 WSL2 内核安装包,装完重启电脑,基本都是这个问题。
另一个高频报错是:
code复制The virtual machine could not be started because a required feature is not installed.
这说明 Hyper-V 相关功能没完全启用。回到第 1 节,重点检查“虚拟机平台”是否勾选。如果确认勾选了还是报错,可以去 BIOS 里确认虚拟化真的被开启了。极少数情况是电脑上还有旧版 VM 工具在抢占 Hyper-V 资源,把不用的虚拟机软件退出再试。
5.3 WSL2 内存与磁盘占用过高
WSL2 虽然轻量,但默认会占用很大一部分物理内存。如果没有限制,它可能会把可用内存吃到 50% 以上,这是因为 Linux 会把空闲内存用作文件缓存。解决方案是在 Windows 用户目录下创建 .wslconfig 文件,内容可以这样设置:
ini复制[wsl2]
memory=6GB
processors=4
swap=8GB
localhostForwarding=true
然后执行 wsl --shutdown 重启 WSL 生效。文件路径必须是 C:\Users\你的用户名\.wslconfig,别放错位置。memory 字段建议根据物理内存大小按需设定,比如 16GB 内存的机器给 6GB,32GB 内存给 12GB。
磁盘占用方面,WSL2 使用虚拟磁盘 VHDX 文件,删掉 Linux 里的文件后磁盘空间不会自动还给 Windows,VHDX 文件会只增不减。清理方法是:
bash复制wsl --shutdown
diskpart
进入 diskpart 后,选择虚拟磁盘文件并执行压缩命令。这里具体命令因路径而异,核心思路是先卸载 VHDX 再 compact,操作前务必备份重要数据。如果你不想折腾命令,也可以直接重新导出导入实例,同样能达到瘦身效果。旧版也可以用 Optimize-VHD 在管理员 PowerShell 里压缩,但新版 WSL 建议直接走 wsl --manage 相关指令,不同 Windows 版本差别比较大,建议以官方文档为准。
5.4 彻底删除与重装 WSL2 发行版
如果你想从头再来,没必要去“设置”里卸载。用一行命令即可:
powershell复制wsl --unregister Ubuntu-22.04
这个命令会删除该发行版的所有数据,包括虚拟磁盘里的全部文件,执行前必须确认没有需要保留的数据。删除后想重装,直接执行:
powershell复制wsl --install -d Ubuntu-22.04
如果你需要保留旧发行版的文件,也可以先导出成 tar 文件备份:
powershell复制wsl --export Ubuntu-22.04 D:\ubuntu-backup.tar
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\ubuntu-backup.tar
这种按需备份、恢复的方式,效果相当于虚拟机的快照,适合在折腾环境前先做一次保险。
5.5 文件权限与中文乱码问题
WSL2 里访问 /mnt/c 下的 Windows 文件时,可能遇到权限显示为 777 或 755 的情况,这是因为跨文件系统的权限映射规则和 Linux 原生文件系统不同。普遍不影响使用,但如果某些脚本因为权限过宽而拒绝执行,可以给文件显式加上可执行权限:
bash复制chmod +x /mnt/c/your_script.sh
中文乱码则通常是因为语言环境没设置。在 /etc/environment 或 ~/.bashrc 里设置:
bash复制export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
优先考虑用 UTF-8 编码运行所有 Windows 侧生成的文件。Windows 自带记事本保存过的文本默认是带 BOM 的 UTF-8,Linux 侧解析偶尔会出现 \ufeff 前缀,如果是写脚本,建议统一用 VSCode 重新保存为 UTF-8 无 BOM 格式。
5.6 SSH 连接与远程开发配置
WSL2 里的 SSH 服务默认不对外暴露。如果你只想从 Windows 本机连接 WSL2,可以直接用 VS Code 的 Remote - WSL 插件,它走的是内部管道,不涉及网络端口。需要让局域网内其他设备连接时,才需要配置 SSH 服务端:
bash复制sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
WSL2 的 NAT 模式意味着局域网设备不能直接通过 WSL2 自身 IP 访问,需要在 Windows 侧设置端口转发代理。这里操作起来比较绕,而且在不同 Windows 版本上行为不完全一致。对大多数本地开发场景,远程连接不是重点,真正生产环境建议部署到云服务器或专用 Linux 主机,本地开发则用 VS Code Remote 插件就够了。
6. 将 WSL2 打造为我习惯的开发环境
环境能跑起来只是第一步,用得顺手才是关键。最后这部分不是硬核配置,而是我结合第六周实际使用后总结出来的一套“舒适区搭建”组合,目的是让你在 Windows 下拥有接近原生 Linux 的体验。
6.1 Windows Terminal 与多标签管理
Windows 自带的终端程序已经足够好用,但 Windows Terminal 更方便管理多标签。它支持在同一窗口里开多个 Ubuntu Shell、PowerShell、CMD 标签页,还能自定义背景和配色方案。我曾经同时开一个 Ubuntu 跑开发服务器、一个 PowerShell 查看系统日志、一个连到远程服务器,切换极其顺滑。
Ubuntu 里还可以安装 zsh + oh-my-zsh,提升命令行交互体验:
bash复制sudo apt install -y zsh
chsh -s $(which zsh)
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
装完重启终端后,你会看到带 git 状态、语法高亮等功能的提示符。这套搭配虽然不是必需,但用起来能明显提高日常敲命令的舒适度。
6.2 开发目录规划与跨系统协作
我在 Linux 侧创建了固定的开发目录,结构大致如下:
bash复制mkdir -p ~/projects/{ai,web,ros,lab}
cd ~/projects
git clone ...
Windows 侧则用软链接或直接映射方式快速访问。在 PowerShell 里可以把 WSL 路径映射为 Windows 盘符,但我更推荐直接用 VS Code 打开 WSL 项目目录,这样所有编译、调试、终端、版本控制全在一个窗口内完成,效率比两边来回切换高很多。
6.3 常用软件安装清单
最后列一份我整理的基础软件清单,装完之后基本能覆盖日常开发需求:
| 软件 | 用途 | 安装命令 |
|---|---|---|
| htop | 系统监控 | sudo apt install -y htop |
| tree | 目录树 | sudo apt install -y tree |
| jq | JSON 处理 | sudo apt install -y jq |
| python3-pip | Python 包管理 | sudo apt install -y python3-pip |
| nodejs / npm | JavaScript 运行时 | sudo apt install -y nodejs npm |
| glances | 全局系统监控 | pip install glances |
| net-tools | 网络工具 | sudo apt install -y net-tools |
| tldr | 命令速查 | sudo apt install -y tldr |
这些工具都是通用性的,装好之后你在 WSL2 里干活会顺手很多。特别是 tldr,当你想不起某个命令的完整参数时,一条 tldr tar 就能看到精简版帮助,比翻 man 手册快得多。
写在最后:我的体会
把 WSL2 当作主力开发环境之后,我最直观的感受是:Windows 和 Linux 的边界几乎消失了。你可以像用普通软件一样启动一个 Ubuntu 终端,Windows 文件随手可以拖进 Linux 环境,GPU 也能跨系统共享,整套体验非常接近一台原生的 Linux 工作站。
如果非要总结几条实操心得,第一,所有涉及网络或者 DNS 的排障,先把 /etc/resolv.conf 和 .wslconfig 检查一遍,绝大部分问题都集中在这些基础配置上。第二,装 CUDA、Docker 这类重量级软件之前,一定先确认 systemd 已经启用,否则服务管理会非常痛苦。第三,折腾环境的时候多做备份,wsl --export 一条命令的时间成本远低于环境弄坏后从头再来。
WSL2 的可扩展性还体现在它能跑的真实场景非常多,像嵌入式开发板挂载、原生化 Docker 容器、AI 模型训练这类需求,全都能在 Windows 桌面下无缝完成。如果你也想把开发环境从传统虚拟机迁过来,又担心这担心那,直接照着前五章跑一遍,半小时内你会感受到这种“Windows + 真 Linux 内核”组合带来的效率提升。
