news 2026/10/8 9:36:06

Win11 WSL2安装Ubuntu全攻略:迁移D盘、CUDA、Docker与避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Win11 WSL2安装Ubuntu全攻略:迁移D盘、CUDA、Docker与避坑指南

简介:这份资源面向希望在 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 /norestart

wsl --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 -y

Ubuntu 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 ~/.bashrc

nvidia-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——这三条守住,能省掉八成返工。环境这东西,一次配好、脚本固化,比每次出问题再搜教程强得多。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 9:34:36

SpringBlade微服务开发平台笔记一:把鉴权配置改到TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/8 9:34:14

MATLAB通信链路仿真实战:BPSK+LDPC+扩频整链实现与误码率分析

1. 这套通信链路仿真到底在仿什么&#xff1a;项目构成与场景定位先说个很多人做仿真时的通病&#xff1a;拿到一个"BPSKLDPC扩频"的题目&#xff0c;第一反应就是赶紧把代码跑起来&#xff0c;出几条曲线就完事。但这类通信链路仿真如果只是"能出图"&…

作者头像 李华
网站建设 2026/10/8 9:33:34

Agentic RAG:让RAG具备决策能力的工程化实践

1. 先破个题&#xff1a;为什么“Agentic RAG”不是新名词堆砌&#xff0c;而是RAG真正开始“活过来”的标志&#xff1f;你点开这个标题&#xff0c;大概率刚被某条B站视频刷屏——“吊打传统RAG&#xff01;”“30分钟掌握下一代核心&#xff01;”——然后心里一咯噔&#x…

作者头像 李华
网站建设 2026/10/8 9:33:33

Strata实现3080 Ti+RX 7900 GRE异构协同运行Qwen3.8-Flash-Next

1. 项目概述&#xff1a;一张3080 Ti 一块R9 700&#xff1f;真能跑通Qwen3.8-Flash-Next&#xff1f;“Strata威武&#xff01;”——这句开头不是喊口号&#xff0c;是我实测完三轮之后&#xff0c;盯着终端里稳定输出的token流&#xff0c;下意识敲出来的感叹。不是营销号标…

作者头像 李华
网站建设 2026/10/8 9:32:59

AUTOSAR项目CI部署与版本控制实战:从配置管理到流水线落地

先把话说在前面&#xff1a;AUTOSAR 项目的 CI 真正落地&#xff0c;难点从来不是“搭一条流水线”&#xff0c;而是让流水线跑出来的结果&#xff0c;和你本地手工编译、手工配置的完全一致&#xff0c;且每次都能重现。这行里的人都知道&#xff0c;BSW 配置、RTE 生成、MCAL…

作者头像 李华
网站建设 2026/10/8 9:32:24

Agent-Reach 实战:用 CLI 打造能真正干活的 AI Agent

1. 从"Agent-Reach"这个名字说起&#xff1a;它到底想解决什么问题第一次看到 Agent-Reach 这个项目名&#xff0c;我的直觉是&#xff1a;这大概率是一个围绕 AI Agent 能力边界做文章的工具&#xff0c;而不是又一个"套壳聊天框"。原因很简单——"R…

作者头像 李华