ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

WIN11下WSL2+Ubuntu安装指南:从零搭建到D盘迁移与避坑

WIN11下WSL2+Ubuntu安装指南:从零搭建到D盘迁移与避坑 简介这份资源面向希望在 Windows 11 上搭建 Linux 开发环境的开发者尤其是需要源码管理、代码编译与软件包管理的软件工程师。内容围绕 WSL2 与 Ubuntu 20.04 的安装配置展开重点讲解如何在非系统盘完成部署帮助硬盘空间紧张或希望优化系统盘的用户避开空间浪费与性能瓶颈。资源包共 3 个文件以 html 页面、inscode 配置与 gitignore 忽略规则为主压缩后约 8KB体量轻巧便于快速查阅与二次整理。目前已有 118 人学习下载说明该方案在 Windows 与 Linux 双环境切换场景中具有一定参考价值。读者可从中获得从启用 WSL 功能、设置默认版本到解压安装的完整思路并借助附带的 bash 命令参考快速上手文件操作、目录切换与权限管理等基础操作为后续开发环境搭建与团队协作提供可复用的配置依据。1. 从一次新机部署说起WIN11下WSL2Ubuntu安装指南到底解决什么问题新拿到一台预装 WIN11 的机器第一件事往往不是装双系统而是想在一个干净的 Ubuntu 里跑编译、跑脚本、跑容器。传统做法是 VMware 或 VirtualBox 装完整虚拟机代价是磁盘翻倍、内存吃紧、文件互传还得靠共享目录。WSL2 换了个思路它用轻量级虚拟化在 WIN11 里跑一个真正的 Linux 内核Ubuntu 作为发行版直接跑在上面启动是秒级内存按需占用Windows 盘符自动挂载到/mnt/c命令行和图形程序都能用。这套 WIN11下WSL2Ubuntu安装指南要讲的就是把这条链路从零搭通开启虚拟化组件、装好 WSL2 内核、拉取 Ubuntu、配好中文输入和开发环境最后把常见的「尚未准备就绪」「下载慢」「装到 D 盘」这些坑一次说清。适合刚换 WIN11 的后端、嵌入式、数据方向从业者也适合想把开发环境从虚拟机迁过来的老手。2. 装之前先把 WIN11 侧的地基打牢虚拟化、内核与版本选择2.1 为什么 WSL2 必须开虚拟机平台和 WSL1 差在哪WSL1 是微软做的一层系统调用翻译把 Linux 的 syscall 实时转成 Windows 的文件系统性能在跨盘访问时很差Docker 这类依赖完整内核特性的工具基本跑不起来。WSL2 改成在 Hyper-V 之上跑一个微软自己编译的 Linux 内核是货真价实的虚拟化系统调用不再翻译兼容性和性能都上来了。代价是它需要一个虚拟化层所以「虚拟机平台」和「适用于 Linux 的 Windows 子系统」这两个 Windows 功能必须打开CPU 的 VT-x / AMD-V 也要在 BIOS 里启用。很多人卡在「wsl2 尚未准备就绪」八成就是这两个功能没开全或者内核更新包没装。选版本时Ubuntu 22.04 LTS 和 24.04 LTS 是当前最稳的两个选择。22.04 生态最成熟各种第三方源、CUDA、Docker 文档都齐24.04 更新glibc 和工具链更靠前但个别老项目依赖可能还没跟上。我一般新机器直接上 22.04等 24.04 的周边补齐再迁。发行版名字在命令里是Ubuntu-22.04这种带版本号的写法装之前先用wsl --list --online看一眼官方源里到底有哪些。2.2 开启功能的两种方式图形界面与命令行图形界面路径是「控制面板 → 程序和功能 → 启用或关闭 Windows 功能」勾选「适用于 Linux 的 Windows 子系统」和「虚拟机平台」重启。命令行更利索用管理员身份的 PowerShell 执行# 以管理员身份运行 PowerShell # 开启 WSL 所需的两个 Windows 功能 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # 两条都执行完后重启系统让功能生效 Restart-Computerdism.exe是部署映像服务工具/online表示对当前运行的系统操作/enable-feature指定要开的功能名/all连带开启父功能/norestart先不自动重启、留给你手动控制。功能名必须一字不差写错了会报「功能名称未知」。重启后再装内核更新包否则 WSL2 起不来。2.3 装内核、设默认版本、拉取 Ubuntu内核更新包是微软单独发的 msi装完才有完整的 WSL2 内核。装好后把默认版本设成 2再安装发行版# 安装/更新 WSL2 内核新版 Windows 可直接用 wsl --update wsl --update # 把默认版本设为 WSL2避免新装的发行版默认落到 WSL1 wsl --set-default-version 2 # 查看官方源里可安装的发行版 wsl --list --online # 安装 Ubuntu 22.04 wsl --install -d Ubuntu-22.04wsl --update会去拉最新的内核和 WSL 组件比手动下 msi 省事。--set-default-version 2是全局默认之后wsl --install装的都走 WSL2。-d后面跟发行版标识必须和--list --online里显示的完全一致。首次启动 Ubuntu 会让你设 UNIX 用户名和密码这个密码输入时不回显是正常的别以为键盘坏了。提示如果wsl --install报「无法解析服务器的名称或地址」多半是网络到微软源不稳定可以改用wsl --install -d Ubuntu-22.04 --web-download走浏览器下载通道或者稍后重试。3. 把 Ubuntu 装到 D 盘并跑通第一个环境迁移、换源与基础工具链3.1 默认装 C 盘的问题与迁移到 D 盘的完整流程WSL2 的发行版默认落在C:\Users\你的用户名\AppData\Local\Packages\下一个 Ubuntu 动辄几个 G加上后续 Docker 镜像、CUDA 库C 盘很快见红。热词里「wsl2如何安装配置到d盘」「wsl2 wsl2迁移到d盘」问的就是这件事。正确姿势是先装好、再导出、再导入到目标盘不能直接剪切文件夹那样注册表里的 GUID 对不上发行版会消失。# 1. 先关闭所有 WSL 实例避免导出时文件被占用 wsl --shutdown # 2. 把已装好的 Ubuntu-22.04 导出成 tar 包放到 D 盘临时目录 wsl --export Ubuntu-22.04 D:\wsl\ubuntu2204.tar # 3. 注销 C 盘上的原实例确认 tar 包导出成功后再执行 wsl --unregister Ubuntu-22.04 # 4. 从 tar 包导入到 D 盘指定目录并重新命名 wsl --import Ubuntu-22.04 D:\wsl\Ubuntu-22.04 D:\wsl\ubuntu2204.tar --version 2 # 5. 确认迁移结果 wsl -l -v--export把整个发行版打包成单个 tar包含文件系统和用户数据。--unregister是注销会删掉原实例所以务必确认 tar 包完整再执行。--import的三个参数依次是发行版名、安装目录、tar 包路径--version 2明确用 WSL2。导入后默认登录用户会变成 root需要进/etc/wsl.conf把默认用户改回来# 在 Ubuntu 内编辑 /etc/wsl.conf sudo tee /etc/wsl.conf /dev/null EOF [user] default你的用户名 EOF # 退出后在 PowerShell 里重启 WSL 生效 # wsl --shutdown[user]段的default指定默认登录用户改完必须wsl --shutdown再进才生效直接 exit 重进有时不刷新。3.2 换国内源与装 gcc、docker 等基础工具Ubuntu 默认源在国外apt update慢到怀疑人生热词里「wsl2下载慢」「ubuntu安装gcc失败」大多和源有关。先备份再换源# 备份原源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 以 Ubuntu 22.04 为例替换为国内镜像源这里用清华源示例 sudo sed -i s//.*archive.ubuntu.com//mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list sudo sed -i s//.*security.ubuntu.com//mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list # 更新索引并安装基础工具链 sudo apt update sudo apt install -y build-essential gcc g make git curlsed的两条替换分别处理主仓库和安全仓库的域名-i是原地修改。换源后apt update如果报 GPG 错误说明镜像源的签名密钥没导入按提示apt-key或signed-by方式补上即可。build-essential是个元包一次带齐 gcc、g、make、libc 开发头文件装完gcc --version能出版本号就说明工具链通了。装 Docker 走官方脚本最省事# 安装 Docker官方一键脚本生产环境建议改用 apt 仓库方式 curl -fsSL https://get.docker.com | sudo sh # 把当前用户加入 docker 组免 sudo sudo usermod -aG docker $USER # 重新登录或执行 newgrp docker 让组权限生效 newgrp docker docker run hello-worldusermod -aG把用户追加进 docker 组-a不能省否则会覆盖原有附加组。组权限变更需要重新登录会话newgrp docker是临时生效的快捷方式。hello-world能跑通说明 Docker 守护进程和权限都正常。3.3 中文输入法与图形程序让 Ubuntu 侧好用起来热词里「ubuntu中文输入法怎么设置」是高频问题。WSL2 默认没有图形界面但可以跑单个 GUI 程序输入法要配合 Windows 侧的输入法或 WSLg。WSLg 是 WIN11 自带的图形支持装完 WSL2 就有echo $DISPLAY能看到值。中文输入推荐在 Ubuntu 里装 fcitx5# 安装 fcitx5 及中文输入法引擎 sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 # 设置环境变量写入 ~/.bashrc cat ~/.bashrc EOF export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx EOF source ~/.bashrcfcitx5-chinese-addons带拼音等引擎三个环境变量告诉 GTK、Qt 程序走 fcitx。WSLg 下输入法有时和 Windows 输入法抢焦点实在别扭就直接用 Windows 侧输入法在终端里打字GUI 程序里再切 fcitx。图形程序方面sudo apt install -y gedit后直接gedit就能弹出窗口靠的就是 WSLg不需要额外配 X Server。4. 避坑与排查WSL2 安装路上最容易翻车的五件事4.1 报「wsl2 尚未准备就绪」或内核版本过低现象是执行wsl命令提示内核需要更新或者发行版起不来。原因通常是内核更新包没装或者 Windows 版本太旧不支持 WSL2。解决是先wsl --update不行就去装官方内核 msi再不行检查 Windows 版本WIN11 早期版本需要升级到较新的累积更新。wsl --status能看到当前内核版本和默认版本对照官方要求判断。4.2 下载发行版卡住或超时现象是wsl --install长时间无响应最后报网络错误。原因是微软的发行版分发走的是特定 CDN国内访问不稳定。解决是加--web-download参数改走浏览器下载通道或者用wsl --import手动导入提前下好的 tar 包。热词里「win10 离线安装wsl2」也是同一思路离线包能绕开在线拉取。4.3 迁移到 D 盘后默认用户变成 root现象是导入后进 Ubuntu 直接是 root之前的普通用户没了。原因是--import不保留默认用户配置只保留文件系统。解决是编辑/etc/wsl.conf加[user]段指定 default然后wsl --shutdown重启。如果连用户都没了用adduser重建再设默认。4.4 apt 换源后 GPG 报错或 404现象是apt update提示签名无法验证或某些包 404。原因是镜像源同步延迟或者源地址和发行版代号不匹配比如把 jammy 的源用在 noble 上。解决是确认/etc/apt/sources.list里的代号和lsb_release -cs输出一致GPG 错误按提示导入缺失密钥404 就换个同步更及时的镜像源。4.5 内存和磁盘被 WSL2 吃满现象是跑编译或 Docker 时 Windows 整体变卡任务管理器里 Vmmem 占用很高。原因是 WSL2 默认会占用最多一半物理内存且不主动归还。解决是在用户目录建.wslconfig限制资源# 文件位置C:\Users\你的用户名\.wslconfig [wsl2] memory8GB processors4 swap2GBmemory限制最大内存processors限制 CPU 核数swap设交换分区大小。改完wsl --shutdown重启生效。磁盘方面WSL2 的虚拟磁盘只增不减删了大文件后空间不自动回收需要wsl --manage 发行版 --set-sparse true或手动diskpart压缩。5. 进阶技巧用 .wslconfig 和 systemd 把 WSL2 调成顺手的开发机5.1 开启 systemd让服务管理回归正常Ubuntu 22.04 之后的 WSL2 支持 systemd开了之后systemctl能正常用Docker、nginx 这类服务可以按 Linux 习惯管理。在/etc/wsl.conf里加[boot] systemdtrue改完wsl --shutdown重启进系统systemctl status能出结果就说明开了。不开 systemd 时 Docker 得手动起守护进程开了之后sudo systemctl start docker就行省心不少。5.2 用 .wslconfig 做资源与网络的精细控制除了内存和 CPU.wslconfig还能配网络模式、DNS、自动代理等。比如镜像网络模式能让 WSL2 和 Windows 共享网络栈局域网访问更方便[wsl2] memory8GB processors4 networkingModemirrored dnsTunnelingtrue autoProxytruenetworkingModemirrored是较新版本才支持的模式开了之后 WSL2 直接用 Windows 的网络接口端口互通更简单。dnsTunneling解决某些 DNS 解析异常autoProxy继承 Windows 的代理设置。这些选项对版本有要求wsl --version确认版本够新再用老版本写了不生效也不报错容易误以为配好了。5.3 验证安装是否真的到位一套检查命令走下来能确认整条链路健康# 确认内核和发行版 uname -a lsb_release -a # 确认 systemd systemctl is-system-running # 确认网络与 DNS ping -c 2 mirrors.tuna.tsinghua.edu.cn # 确认工具链 gcc --version docker --versionuname -a里带microsoft-standard-WSL2字样说明是 WSL2 内核lsb_release -a看发行版代号对不对。systemctl is-system-running返回running或degraded都算 systemd 起来了。ping 通镜像源说明网络和 DNS 没问题。这几条都过环境基本就能投入使用了。我自己踩过最深的一次坑是迁移到 D 盘后忘了改默认用户结果所有项目文件都建在 root 家目录下后来换用户时权限全乱chown改了半天。从那以后我养成习惯迁移完第一件事就是whoami确认身份再动任何文件。环境这东西装的时候多花十分钟核对比事后救火省几个小时。希望帮到你。本文还有配套的精品资源点击获取
返回列表