简介:这份资源面向希望在 Windows 11 上搭建 Linux 开发环境的开发者,尤其是需要源码管理、代码编译与软件包管理的软件工程人员。内容围绕 WSL2 与 Ubuntu 20.04 的安装配置展开,重点覆盖非系统盘安装方案,帮助硬盘空间紧张或希望优化系统盘的用户合理规划磁盘分区。资源包共 3 个文件,包含 1 个 inscode 项目配置文件、1 个 html 页面和 1 个 gitignore 忽略规则文件,压缩包约 8KB,体量轻巧,便于快速获取与查阅。已有 118 人学习下载,适合作为环境搭建的参考起点。读者可从中获得从启用 WSL 功能、设置默认版本到解压安装的完整思路,并借助附带的 bash 常用命令参考,快速熟悉文件操作、目录切换与权限管理等基础操作,降低在 Windows 与 Linux 之间切换的门槛,提升日常开发与团队协作效率。
1. 为什么我劝你在 Win11 上先装 WSL2 再谈 Ubuntu
很多人拿到一台新 Win11 机器,第一反应是装 VMware 或 VirtualBox,再拖一个 Ubuntu 镜像进去。结果 4790K 这类老 U 上虚拟机卡到怀疑人生,win11运行vmware 卡顿成了搜索框里的常客。其实对绝大多数开发场景,你根本不需要完整虚拟机——WSL2 就是微软官方给的轻量级 Linux 子系统,底层是真正的 Linux 内核跑在 Hyper-V 虚拟化层上,但和 Windows 的文件、网络、显卡是打通的。
这篇讲的就是在 Win11 下把 WSL2 和 Ubuntu 装到能干活的程度:从开启虚拟化功能、装发行版、迁移到 D 盘,到中文输入法、CUDA、Docker 这些真正会卡住你的环节。适合两类人:一是刚换 Win11 想搭 Linux 开发环境的新手,二是被虚拟机性能折磨过、想换条路的老手。装完之后你会在 Windows 里直接敲wsl进 Ubuntu,文件互访、GPU 调用、端口互通都是默认能力,不用再折腾共享文件夹那套玄学。
2. 装之前先把 Win11 的底子铺好:虚拟化、版本与磁盘
2.1 确认 CPU 虚拟化和 Win11 版本
WSL2 依赖 Hyper-V 的虚拟化能力,第一步不是敲命令,而是确认硬件和系统版本。任务管理器 → 性能 → CPU,看右下角「虚拟化」是不是「已启用」。如果是「已禁用」,得先进 BIOS 打开 Intel VT-x 或 AMD-V,这一步不做,后面所有命令都会以wsl2 尚未准备就绪报错收场。
系统版本用winver看,Win11 家庭版和专业版都支持 WSL2,但家庭版没有 Hyper-V 管理器图形界面,功能得靠命令行开。另外win11 26h2这类新版本对 WSL 的支持更完整,如果你还在老版本上,建议先更新系统win11,避免内核组件缺失。
# 以管理员身份打开 PowerShell,查看系统版本和虚拟化状态 winver systeminfo | findstr /i "Hyper-V 虚拟化"systeminfo里如果看到「已检测到虚拟机监控程序」或 Hyper-V 要求全部为「是」,说明底子没问题。注意win11管理员权限是必须的,普通 PowerShell 执行启用功能会直接拒绝。
2.2 用一条命令开启 WSL 所需功能
老教程会让你手动勾选「适用于 Linux 的 Windows 子系统」和「虚拟机平台」两个功能再重启,现在 Win11 可以一条命令搞定。wsl2安装使用虚拟机平台这个热搜词说的就是这个环节。
# 管理员 PowerShell 执行,一次性安装 WSL 及所需虚拟化组件 wsl --install # 如果只想装功能不装发行版,用下面这条 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --install会自动启用两个功能、下载最新内核、把默认版本设为 WSL2,并装上 Ubuntu。执行完必须重启,重启后系统会让你设置 Ubuntu 的用户名和密码。这里有个坑:密码输入时屏幕不显示任何字符,不是卡住了,正常盲打回车即可。
如果wsl --install报「无法解析服务器名称」或下载极慢,就是wsl2下载慢的典型症状,后面避坑章节会讲怎么处理。
2.3 把发行版迁到 D 盘,别让 C 盘爆掉
默认情况下 Ubuntu 的虚拟磁盘ext4.vhdx放在C:\Users\你的用户名\AppData\Local\Packages\下,用着用着几十 G 就没了。win11 wsl2迁移到d盘是刚需,操作分三步:导出、注销、导入。
# 1. 查看已安装发行版名称 wsl -l -v # 2. 导出到 D 盘(Ubuntu-22.04 换成你的实际名称) wsl --export Ubuntu-22.04 D:\wsl\ubuntu22.04.tar # 3. 注销 C 盘上的原实例 wsl --unregister Ubuntu-22.04 # 4. 导入到 D 盘指定目录,并指定为 WSL2 wsl --import Ubuntu-22.04 D:\wsl\Ubuntu-22.04 D:\wsl\ubuntu22.04.tar --version 2 # 5. 设置默认登录用户(否则会以 root 登录) ubuntu2204 config --default-user 你的用户名导出文件是 tar 格式,导入后原来的用户名密码都保留。--version 2必须显式写,否则可能按 WSL1 导入。导入完成后wsl -l -v应该看到 STATE 为 Running、VERSION 为 2。这一步做完,C 盘空间就彻底解放了,后续所有数据都落在 D 盘。
3. Ubuntu 装完先做这几件事:换源、中文输入法、环境变量
3.1 换国内源并更新,解决下载慢
刚装好的 Ubuntu 默认指向境外源,apt update能等到天荒地老。换成国内镜像源是第一个该做的优化。
# 备份原源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # Ubuntu 22.04 用 sed 批量替换为清华源 sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list sudo sed -i 's@//.*security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list # 更新索引并升级 sudo apt update && sudo apt upgrade -yUbuntu 24.04 的源配置改到了/etc/apt/sources.list.d/ubuntu.sources,格式是 deb822,不能照搬上面的 sed。ubuntu 24.04 lts配置教程里最容易翻车的就是这点,24.04 用户请直接编辑那个新格式文件,把URIs:字段改成镜像地址。
换源后apt速度会有数量级提升。如果ubuntu安装gcc失败,八成是源没换或索引没更新,先sudo apt update再装。
3.2 中文输入法:WSLg 下最省事的方案
ubuntu中文输入法怎么设置是高频问题。WSL2 现在自带 WSLg,能直接跑图形程序,输入法推荐用 fcitx5 + 拼音,比 ibus 在 WSLg 下稳定。
# 安装 fcitx5 和中文输入法引擎 sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 # 配置环境变量,写入 ~/.bashrc cat >> ~/.bashrc << 'EOF' export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx EOF source ~/.bashrc装完在图形程序里用fcitx5 -d启动,托盘会出现图标,Ctrl+空格切换中英文。注意 WSLg 的输入法只在 WSLg 图形应用里生效,纯终端里不需要输入法。如果托盘不显示,检查是不是没装fcitx5-config-qt配置工具。
3.3 环境变量配置别踩 PATH 覆盖的坑
ubuntu环境变量配置错误最常见的后果是ls、cd这些基础命令全找不到,因为 PATH 被覆盖了。正确做法是追加而不是覆盖。
# 错误示范:这样写会让系统命令全部失效 export PATH=/opt/mytool/bin # 正确示范:把新路径追加到原有 PATH 前面 export PATH=/opt/mytool/bin:$PATH # 永久生效写入 ~/.bashrc 或 ~/.profile echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc改完~/.bashrc记得source ~/.bashrc。如果已经手滑覆盖了 PATH 导致命令全废,用绝对路径/usr/bin/vi ~/.bashrc进去改回来,或者重开一个终端用export PATH=/usr/bin:/bin临时救急。这个后悔药一定要记住。
4. 让 WSL2 真正能干活:CUDA、Docker 与文件互访
4.1 WSL2 里装 CUDA 跑 GPU 计算
wsl2安装cuda的关键认知:不要在 WSL 里装显卡驱动,驱动由 Windows 侧提供,WSL 里只装 CUDA Toolkit。这是和裸机装 CUDA 最大的区别,装错了会各种报错。
# 先确认 Windows 侧已装好 NVIDIA 驱动,然后在 WSL 里验证 nvidia-smi # 如果能正常输出显卡信息,再装 CUDA Toolkit wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt update sudo apt install -y cuda-toolkit-12-4 # 配置环境变量 echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrcnvidia-smi能出结果说明 Windows 驱动和 WSL 的 GPU 直通正常。如果报「command not found」,先检查 Windows 侧驱动版本,ubuntu查看显卡驱动在 WSL 里查的是 Windows 驱动映射,不是独立的 Linux 驱动。CUDA 版本要和你的 PyTorch/TensorFlow 版本对齐,别盲目装最新。
4.2 在 WSL2 里跑 Docker
ubuntu 安装docker在 WSL2 下有两种路线:装 Docker Desktop for Windows 并开启 WSL 集成,或者在 Ubuntu 里直接装 Docker Engine。前者图形化管理方便,后者更轻量。
# 在 Ubuntu 内直接装 Docker Engine sudo apt install -y ca-certificates curl gnupg 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 $(. /etc/os-release && echo $VERSION_CODENAME) 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 组,免 sudo sudo usermod -aG docker $USER加组后要重新登录 WSL 才生效。WSL2 里跑 Docker 用的是自己的内核,不需要 Docker Desktop 也能跑,但如果你同时用 Windows 侧 Docker,建议统一走 Docker Desktop 的 WSL 集成,避免两套 daemon 打架。
4.3 Windows 与 Ubuntu 文件互访的正确姿势
WSL2 里访问 Windows 文件走/mnt/c/、/mnt/d/,Windows 访问 Linux 文件走\\wsl$\Ubuntu-22.04\。但有个性能铁律:跨文件系统操作极慢。
# 在 WSL 里访问 Windows D 盘 cd /mnt/d/projects # 查看 WSL 发行版名称,用于 Windows 侧访问 wsl -l -v # Windows 资源管理器地址栏输入:\\wsl$\Ubuntu-22.04\home\你的用户名血泪经验:项目代码一定要放在 Linux 文件系统内(比如~/projects),不要放在/mnt/c/下跑。跨系统读写要走 9P 协议,npm install或编译大型项目时能慢十倍。需要和 Windows 共享的文件,用软链接或定期同步,别直接在/mnt下开发。
5. 避坑与排查:WSL2 装 Ubuntu 最常见的 5 个翻车现场
5.1 wsl --install 卡住或下载极慢
现象:执行wsl --install后长时间无响应,或下载 Ubuntu 镜像进度条几乎不动。
原因:WSL 组件和发行版镜像默认从微软境外服务器拉取,国内网络环境下容易超时。
解决:先wsl --install --no-distribution只装 WSL 核心,再手动从微软商店或离线包安装 Ubuntu。离线场景用wsl --import导入本地 tar 包,完全绕开在线下载。win10 离线安装wsl2的思路在 Win11 上同样适用。
5.2 启动报「WSL2 尚未准备就绪」
现象:wsl命令报WslRegisterDistribution failed或「参考的对象类型不支持尝试的操作」。
原因:虚拟化功能没开全,或内核组件版本过旧,也可能是第三方虚拟化软件(如旧版 VMware)占用了 Hyper-V。
解决:确认 BIOS 虚拟化已开,管理员执行dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart后重启,再wsl --update更新内核。装了 VMware 的话升级到支持 Hyper-V 共存的新版本。
5.3 迁移到 D 盘后默认用户变成 root
现象:wsl --import之后进 Ubuntu 直接是 root,原来的普通用户没了。
原因:--import不会保留默认用户设置,会回退到 root。
解决:用发行版专属命令重设,Ubuntu 22.04 是ubuntu2204 config --default-user 用户名,24.04 是ubuntu2404 config --default-user 用户名。如果命令不存在,进/etc/wsl.conf加[user]段指定default=用户名。
5.4 apt 更新报错或 gcc 装不上
现象:sudo apt update报 404 或 GPG 错误,ubuntu安装gcc失败提示依赖不满足。
原因:源地址和系统版本不匹配,或 24.04 用了 22.04 的源格式。
解决:先lsb_release -a确认版本,22.04 改/etc/apt/sources.list,24.04 改/etc/apt/sources.list.d/ubuntu.sources。GPG 错误用sudo apt-key adv或更新 keyring 解决。装 gcc 前先sudo apt update刷新索引。
5.5 图形程序起不来或输入法不生效
现象:WSLg 里跑 GUI 程序黑屏,或 fcitx5 装了但切不出中文。
原因:WSLg 需要 Win11 较新版本,环境变量没配对,或输入法守护进程没启动。
解决:wsl --update升级到最新 WSLg,确认~/.bashrc里三个 IM 环境变量都写了,手动fcitx5 -d启动守护进程。还不行就sudo apt install --reinstall fcitx5重装。
6. 进阶:用 wsl.conf 固化配置,让环境一次装好不再折腾
装完能跑只是及格,真正省心的是把配置固化下来,重装或迁移时不用再手动调一遍。WSL 提供了/etc/wsl.conf这个黑匣子,能在发行版启动时自动应用设置。
# /etc/wsl.conf 示例配置 [boot] systemd=true # 启用 systemd,很多服务依赖它 [user] default=yourname # 默认登录用户,迁移后不用再 config [interop] enabled=true appendWindowsPath=true # 是否把 Windows PATH 追加进来 [automount] enabled=true options="metadata,umask=22,fmask=11" # 让 /mnt 下文件权限正常systemd=true是重点,Ubuntu 22.04 之后 WSL 支持 systemd,开了之后systemctl才能用,Docker、数据库这些服务管理才正常。改完wsl.conf要wsl --shutdown完全重启才生效,不是关个终端就行。
再进一步,把整套环境写成脚本,重装时一条命令跑完:
#!/bin/bash # setup-wsl.sh 一键初始化脚本 set -e # 换源 sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y # 基础工具 sudo apt install -y build-essential git curl vim gcc g++ make # 中文输入法 sudo apt install -y fcitx5 fcitx5-chinese-addons # Docker curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER echo "初始化完成,请重新登录 WSL 使 docker 组生效"这个脚本我一般放在 D 盘的 wsl 目录下,配合前面的--import流程,换机器或重装系统时半小时就能恢复完整开发环境。参数上set -e保证任何一步失败就停,避免错误累积;build-essential一次带齐 gcc、g++、make,省得单独装再遇到ubuntu安装gcc失败。
验证环境是否真的可用,别只看命令有没有报错,跑个实际编译:
# 验证编译链 echo 'int main(){return 0;}' > test.c && gcc test.c -o test && ./test && echo "编译链正常" # 验证 GPU nvidia-smi && echo "GPU 直通正常" # 验证 Docker docker run --rm hello-world && echo "Docker 正常"三个都过,这套 WSL2 + Ubuntu 环境才算真正能投入生产。我自己踩过的最大教训是:别在/mnt/c下建项目,别在 WSL 里装显卡驱动,别用覆盖方式改 PATH——这三条守住,能省掉八成返工。环境这东西,一次配好、脚本固化,比每次出问题再搜教程强得多。希望帮到你。
本文还有配套的精品资源,点击获取