恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Win11下安装Ubuntu 24.04 LTS:WSL2完整指南与问题排查
首页
资讯中心
/
Win11下安装Ubuntu 24.04 LTS:WSL2完整指南与问题排查
Win11下安装Ubuntu 24.04 LTS:WSL2完整指南与问题排查
发布时间:2026/9/29 1:53:29
最近不少朋友问我同一个问题Win11 上怎么装最新的 Ubuntu 24.04 LTS。问的人多了我大概能猜出两类需求一种是打算装双系统或者虚拟机折腾桌面环境另一种就是想在本机搞一套干净的 Linux 开发环境跑跑代码、脚本、工具链。如果你属于后者我个人觉得 WSL 就是当下最省心的路径没有双系统重启的麻烦也比虚拟机轻量得多。标题里那句“最新版”其实藏着不少坑。微软商店里的 WSL 本体在持续更新Ubuntu 官方也在不断修正 24.04 的点版本很多人照着老教程装完后会碰到wsl --install卡住、内核版本过旧、甚至离线环境完全装不上等问题。这篇文章我直接把从零安装到日常维护的完整链路写清楚重点覆盖安装卡顿的排查、too old 报错修复、离线安装方案以及装完之后的换源、VSCode、Docker、Miniconda 这些落地操作希望能帮你一次走通。1. 安装前先搞清楚这三件事省下一整晚排查时间1.1 WSL2 不是虚拟机也不是双系统理解它的边界很多教程上来就让你敲命令但我觉得还是先花两分钟搞清楚 WSL2 到底是什么后面遇到问题排查起来会更有方向。WSL2 的本质是一台轻量级虚拟机底层走的是微软的虚拟化平台但它和 Windows 的集成度远高于传统虚拟机你可以直接在 Windows 里用wsl命令进入 Linux在 Linux 里用explorer.exe .打开 Windows 资源管理器也可以把 Linux 的目录直接映射成\\wsl$\Ubuntu-24.04这样的网络路径两边文件互通非常顺。适合 WSL 的场景很明确写代码、跑脚本、装开发工具、跑 Docker、做固件分析、用 binwalk 这类安全工具这些都是命令行干活的事。不适合的场景也有比如你想跑完整桌面环境做主力机、需要直连某些 USB 硬件做嵌入式烧录、或者对底层硬件资源控制有强需求那还是老老实实用 VMware 或者双系统更靠谱。想清楚这个边界你就不会在 WSL 里纠结“为什么我的中文输入法这么难配”这类桌面版问题。Ubuntu 24.04 是 LTS 版本LTS 的意思是 Long Term Support官方提供长达 5 年的安全和维护更新。对开发机来说这一点非常重要你不会像用普通版本那样过个一年半载就面临升级压力软件源里的包也会长期保持可用和稳定。1.2 确认 Windows 11 版本和 CPU 虚拟化开关开始之前先花十秒钟确认系统状态。WSL 在 Win11 上基本是完整支持的但建议你的系统保持在 22H2 或更高版本。Windows 版本怎么看Win R输入winver回车弹窗里会显示系统版本号。第二个必须确认的是虚拟化是否开启。WSL2 依赖 CPU 的虚拟化能力如果你的电脑 BIOS 里关了虚拟化后面安装多半会失败。最简单的检查方式打开任务管理器切到“性能”选项卡点击“CPU”右下角能看到“虚拟化”状态显示“已启用”就说明没问题。如果显示“已禁用”你需要重启电脑进 BIOS一般是按 F2、Del 或者 F12具体看主板品牌在 CPU 配置里找 SVMAMD或 VT-xIntel开关开启后保存退出再进系统。还有一个经常被忽略的细节执行wsl --install等命令时务必用管理员身份打开 PowerShell 或 Windows Terminal。很多“权限不足”导致的奇怪报错根源就是这一步没用管理员。Windows Terminal 上右键标题栏选择“以管理员身份运行”即可。1.3 判断当前 WSL 是没装、太旧还是被占用装之前先看看系统现在的 WSL 状态避免重复操作浪费时间。打开终端依次敲这三个命令wsl --status wsl --version wsl -l -vwsl --status会显示默认分发版和默认版本wsl --version显示 WSL 本体版本号比如2.0.x或2.1.x如果是老版本 Windows 自带的内核版本可能没有这个命令wsl -l -v列出当前安装的 Linux 分发版及各自对应的 WSL 版本1 或 2。如果你看到版本号非常老比如1.x时代的内核版本建议先跑一次wsl --update把 WSL 本体更新到最新。这一步非常重要我在后面 will 详细说 too old 报错就是因为 WSL 内核版本太旧导致装不上新版 Ubuntu 发行版。2. 标准安装全流程以及“wsl --install 太慢”的真实排查链路2.1 单命令安装的正常姿势与执行细节在管理员身份的 PowerShell 或 Windows Terminal 里标准安装其实就一条命令wsl --install这条命令会一次性完成三件事启用必要的 Windows 可选功能包括“适用于 Linux 的 Windows 子系统”和“虚拟机平台”、下载并安装 WSL 本体、安装默认的 Linux 发行版通常是 Ubuntu。如果系统提示需要重启重启后继续往下执行即可。如果你想明确安装 Ubuntu 24.04不想要默认版本可以指定发行版名称wsl --install -d Ubuntu-24.04执行过程中你会看到一系列进度输出。有一步可能会让你误以为“卡死”了它会提示你输入新 Linux 系统的用户名注意不是 Windows 用户名输入后提示创建密码然后要求确认密码。输密码的时候屏幕上不会显示任何东西——没有星号也没有光标这是 Linux 终端的正常表现不是键盘坏了。我第一次带团队新人装的时候几乎每个人都在这儿干等或者连续输错所以看到密码输入界面没有任何反应反而说明程序正在等你输入。2.2 卡在 “Installing...” 的排查顺序打开热搜榜动不动就能看到 “wsl --install 太慢” 这类词这个问题我踩过太多次了。其实很多“卡住”不是真的死机而是下载流程慢或者等待某个操作完成建议按这个顺序排查。第一步区分是“真卡住”还是“在等你”。观察终端左下角有没有持续的光标闪烁或者任务管理器里网络带宽是否有波动。如果完全没有网络流量、CPU 也几乎不动那才叫真的卡住。第二步检查网络链路。wsl --install安装发行版时需要去微软的服务器拉取 rootfs 文件而微软 CDN 在国内不同运营商、不同地区的链路波动非常大这是“太慢”最主要的来源。可以尝试把 DNS 切换到公共 DNS 再重试比如223.5.5.5阿里或119.29.29.29腾讯在 Windows 的“网络适配器选项”里修改 IPv4 DNS或者在管理员 PowerShell 里设置netsh interface ip set dns 以太网 static 223.5.5.5第三步确认 Windows 功能组件是否已启用。安装过程中如果因为某种原因没有完成功能启用后续发行版下载也会表现异常。你还是可以在“控制面板 → 程序 → 启用或关闭 Windows 功能”里手动勾选“适用于 Linux 的 Windows 子系统”和“虚拟机平台”勾完重启再跑安装命令。第四步如果以上都不行不要死磕在线安装。直接关掉终端跳到后面第 4 章的离线安装方案那是一条基本不受网络波动影响的路径我用它救活了不止一台装不上的机器。2.3 装到一半要求重启重启后怎么接续wsl --install装完后系统大概率会提示“重启后才能使用”。重启回来之后先确认 Windows 功能是否已经生效wsl --set-default-version 2这个命令的目的是确保后续新装的发行版默认使用 WSL2。然后继续安装发行版wsl --install -d Ubuntu-24.04如果提示已经安装过你直接输入wsl --list --online看看可用发行版列表或者直接启动已安装的发行版。启动方式有两种一种是输入wsl进入默认发行版另一种是输入wsl -d Ubuntu-24.04进入指定发行版。3. “Your version of WSL is too old”这个报错其实很好修3.1 报错的典型场景很多人在装完 Ubuntu 24.04 后第一次启动或者执行某些命令时会看到一段英文提示Your version of Windows Subsystem for Linux is too old. Run the command wsl --update.这个报错的高频出现场景是你在商店或通过离线方式装了一个较新的 Ubuntu 发行版但系统里的 WSL 内核还是 Windows 内置的老版本。Windows 可选功能里的“适用于 Linux 的 Windows 子系统”组件和 Microsoft Store 分发的 WSL 本体是两套东西前者往往停留在很旧的版本这就导致新旧不匹配。说白了你手里拿着新系统的钥匙锁却是几年前的肯定打不开。3.2 修复步骤wsl --update 的前后细节修复思路就是让 WSL 内核追上发行版的“要求线”。打开管理员 PowerShellwsl --update命令会从微软服务器拉取最新 WSL 包并安装。如果这一步也提示“无法更新”或者特别慢属于网络链路问题处理方式参考第 2.2 节的 DNS 操作或者在微软商店搜索 “Windows Subsystem for Linux” 这个应用手动安装安装完商店应用同样能达到更新效果。更新完成后用wsl --version确认 WSL 本体版本号和 Linux 内核版本号已经变成较新的状态。如果之前遇到的 too old 报错是运行某个发行版时弹出来的此时大概率已经消失如果仍然存在用wsl --shutdown彻底关掉 WSL 进程再重新打开终端启动发行版。3.3 注意别被系统自动更新“回退”坑到处理完这个报错后如果你用了一些社区里的“Win11 关闭自动更新”之类的操作把 Windows 更新暂停了你可能会发现 WSL 内核版本在一个很旧的状态上一直无法被自动更新。WSL 的内核更新很多时候是跟着 Windows 补丁走暂停更新太久会让这类组件缓存一直不刷新。我的建议是开发机尽量不要长期暂停系统更新如果实在需要控制更新时机可以选择“暂停更新 1 周”但要定期手动执行wsl --update来保持 WSL 内核不落后。别等到新发行版装不上的时候才想起来这件事耽误的是自己的时间。4. 离线安装 Ubuntu 24.04网络受限环境的完整方案4.1 什么时候需要离线安装离线安装不是冷门需求它适用于两类人一是内网开发机或网络策略受限的机器二是反复尝试wsl --install都因为网络波动失败的人。对后者来说离线安装反而是更可靠的“攻坚手段”。常见的离线安装有两种做法一种是“导出/导入”自己手上已经装好的 WSL 发行版另一种是直接获取官方 rootfs 压缩包再导入。两条路都需要一台能正常访问外网的机器作为中转如果完全没有外网那就得借助已有的离线安装包。4.2 方案 A从现有机器导出再导入假设你有一台机器 A 已经装好了可用的 Ubuntu 24.04可以把它整体打包成 tar 文件然后用 U 盘或局域网传给机器 B。在机器 A 上先执行wsl --shutdown确保系统处于干净状态然后查看发行版注册名wsl -l -v假设注册名是Ubuntu-24.04导出到这个目录wsl --export Ubuntu-24.04 D:\wsl-backup\ubuntu2404.tar把ubuntu2404.tar拷到目标机器 B放到比如 D 盘wsl目录下执行导入wsl --import Ubuntu-24.04 D:\wsl\Ubuntu2404 D:\wsl-backup\ubuntu2404.tar这里的参数依次是新发行版名称、虚拟磁盘存放目录、tar 包路径。导入成功后启动wsl -d Ubuntu-24.04需要注意通过wsl --import导入的发行版默认以 root 用户登录且不会保留机器 A 上的 Windows 文件互操作配置。你需要在 Ubuntu 里编辑/etc/wsl.conf写入一段内容来指定默认用户[user] default你的用户名保存后回到 Windows 执行wsl --shutdown再重新启动发行版就会以指定用户登录了。4.3 方案 B直接下载官方 rootfs 再导入如果你手上没有现成的 WSL 环境可以找一台能上网的机器从 Ubuntu 官方渠道获取 WSL 专用的 rootfs 压缩包注意别下载成云镜像或者 Docker 镜像格式不一样。下载完成后同样用wsl --import命令导入。导入后因为是纯净 rootfs没有创建过用户所以第一件要做的事就是用 root 登录并创建一个普通用户。我建议的步骤是wsl -d Ubuntu-24.04 adduser 你的用户名 usermod -aG sudo 你的用户名之后同样在/etc/wsl.conf里指定默认用户然后wsl --shutdown重进。这个流程看起来比在线安装多几步但好处是整个过程完全不依赖你的当前网络状况只要包拿到了百分之百能装上。4.4 离线安装后别忘的三件事导入的发行版不会自带 24.04 最新点版本的状态装完之后我建议按这个顺序收尾先运行sudo apt update sudo apt upgrade -y把软件源和系统包补到当前版本然后确认一下系统版本号运行lsb_release -a应该能看到Ubuntu 24.04.x LTS的字样最后如果有开发需求往下接着看第 5 章的配置。5. 首次启动 Ubuntu 24.04 后的必经操作换源、开发环境与顺手配置5.1 用户与密码的细节以及忘记密码的救法首次启动在线安装的 Ubuntu 24.04 时系统会要求你创建一个 UNIX 用户名和密码。这里有几个容易踩的点用户名要求小写字母开头不能包含大写字母和特殊字符比如jack或dev都行Jack就不行密码输入时不回显是正常的。如果你第一次随便输了一个密码然后忘了可以在 Windows PowerShell 里用管理员身份进入默认 rootwsl -u root然后用passwd 你的用户名重置密码。这个操作能救急但不希望你真的用上。5.2 换源操作24.04 的文件格式和旧教程不一样Ubuntu 24.04 的 apt 源配置方式和 20.04、22.04 不一样。以前是改/etc/apt/sources.list单一文件24.04 换成了 deb822 格式默认源文件在/etc/apt/sources.list.d/ubuntu.sources。如果你照着老教程去找/etc/apt/sources.list会发现里面内容很少甚至只有注释然后在网上到处问“为什么我的 sources.list 改了半天没效果”。正确做法是编辑ubuntu.sources这个文件把其中的URIs那一行替换成你喜欢的国内镜像源地址即可sudo sed -i s|http://archive.ubuntu.com/ubuntu|https://mirrors.aliyun.com/ubuntu|g /etc/apt/sources.list.d/ubuntu.sources如果你习惯用清华源把mirrors.aliyun.com换成mirrors.tuna.tsinghua.edu.cn即可。改完后执行sudo apt update看到更新索引正常拉到最新就说明换源生效了。国内网络环境下这个操作基本是必做的不换源的话 apt 下载速度可能会让你怀疑人生。关于 deb-src 这一项如果你是普通开发用没必要开启源码源保持注释状态即可开启只会拖慢apt update的速度。5.3 开发环境落位VSCode、Docker、Miniconda 和常用工具装好系统、换好源接下来就是正式投入使用。VSCode 集成是 WSL 最舒服的体验之一。在 Windows 侧安装好 VSCode 后再装一个微软官方的扩展 “WSL”Remote - WSL。之后在 WSL 的终端里随便进到某个项目目录运行code .VSCode 就会自动以“WSL 模式”打开当前目录左下角显示类似于WSL: Ubuntu-24.04的字样。这个模式下所有终端操作、调试、代码补全都发生在 Linux 环境内比在 Windows 里跨文件系统编辑 Linux 文件顺畅得多。Docker 有两条路线。如果你喜欢图形化管理可以装 Docker Desktop然后在设置里把资源 → WSL 集成选中 Ubuntu-24.04之后你在 WSL 里直接敲docker命令就能用。如果你更喜欢纯净体验可以在 WSL 内部装 Docker EngineUbuntu 24.04 默认开启 Systemd较新的 WSL 版本默认支持所以sudo systemctl enable docker这类操作是可以正常工作的。个人观点开发机用 Docker Desktop 更省心服务器上用 Engine 更干净。Miniconda 的安装没有太多坑但有一个最常见的错误在 Windows 上下了 Windows 版的 Miniconda 安装包然后在 WSL 里运行导致后续路径错乱。正确的操作是在 WSL 终端里进入 Linux 下载页拿 Linux x86_64 版的.sh安装包运行bash Miniconda3-latest-Linux-x86_64.sh安装路径默认放在用户目录下最后把~/miniconda3/bin加到 PATH。之后创建虚拟环境、装 Python 包都在 Linux 语境内完成。还有一类工具是 WSL 用户的隐形福利比如固件分析常用的 binwalk在 WSL 里直接sudo apt install binwalk就能跑起来省掉了以前开虚拟机的成本。我用 WSL 跑 binwalk 和各类命令行安全工具已经很多年了日常开发真的没有必要为了这些工具专门开一台虚拟机。如果你需要在 WSL 里做 GPU 相关的开发比如 CUDA前提是 Windows 侧已经安装了支持 WSL 的 NVIDIA 驱动然后在 WSL 里按照 CUDA Toolkit 官方文档的 WSL 版本安装向导走即可。注意不要重复安装 Windows 侧驱动WSL 里只需要装 CUDA Toolkit 本身GPU 驱动是通过 Windows 侧透传过来的。6. 升级、迁移与日常维护的坑位清单6.1 从旧版 Ubuntu 升级到 24.04有些朋友电脑上已经装了 Ubuntu 20.04 或 22.04想升到 24.04。理论上可以用官方升级命令sudo do-release-upgrade但 LTS 版本升级原则是逐级升20.04 → 22.04 → 24.04不能跨大版本直接跳。整个升级过程耗时较长而且一旦软件源有问题容易中断。对于开发机我个人的建议是如果项目代码都提交到了远端仓库本地开发环境是可以随时重建的那不如直接重装 24.04把home目录下的配置和密钥备份出去就行。升级比重装更容易踩到残留依赖的坑尤其是你装过很多第三方软件源包的情况下。6.2 磁盘 vhdx 膨胀与迁移系统目录WSL 的整个文件系统放在一个 vhdx 虚拟磁盘文件里默认位置在 Windows 用户目录下C:\Users\你的用户名\AppData\Local\Packages\...。这个虚拟磁盘的坑在于你在 WSL 里删除大量文件后磁盘空间不会自动回收vhdx 文件只会不断膨胀导致 C 盘空间越来越少。解决办法是先彻底关闭 WSLwsl --shutdown然后打开管理员 PowerShell用diskpart挂载并压缩 vhdx。步骤是diskpart进入交互模式执行select vdisk fileC:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_*\LocalState\ext4.vhdx路径里的具体包名可能略有差异可以用dir定位然后执行attach vdisk readonly再执行compact vdisk最后detach vdisk。压缩完 C 盘空间会明显回来一部分。如果你想把整个 WSL 系统迁移到 D 盘方法其实和第 4 章的导出导入完全一致wsl --export导出wsl --import到 D 盘指定目录。迁移完毕后旧的C:\Users\...\LocalState目录需要手动删除注意删除前确认新的发行版能正常启动。6.3 网络与文件互通中的几个真实场景WSL2 的网络模式是 NAT 转发所以从 Windows 访问 WSL 里的服务比如localhost:8080的 Web 服务通常是通的但如果是局域网其他电脑想访问 WSL 里的服务情况会复杂一些需要处理端口转发和 Windows 防火墙规则。日常开发如果只是本机调试绝大多数场景不用管。文件访问方面要记住一个性能原则跨系统文件访问是慢的。比如你把项目代码放在C:\project然后在 WSL 里用 Linux 工具链去编译性能是明显打折扣的因为你实际上走的是 9P 协议跨系统读写。正确做法是项目代码放在 WSL 的 Linux 文件系统里面比如/home/用户名/project在 Windows 侧通过\\wsl$\Ubuntu-24.04\home\用户名\project去访问。这样两边看文件都很方便编译性能也不会受拖累。还有一个常见问题是公司网络或路由器环境变了之后WSL 里的 DNS 有时会异常表现是apt update报域名无法解析。可以先重启 WSLwsl --shutdown再启动看是否恢复通常都能解决。最后分享一个我个人的维护习惯每次装完 WSL 环境我会第一时间把~/.bashrc里加两行捷径一行是切换目录用的另一行是在 Windows 当前目录直接打开 WSL。这个习惯未必适合所有人但如果你经常在 Windows 和 WSL 之间来回切换会发现这种“顺手配置”积累得越多后面的操作越丝滑。希望大家都能顺利跑起自己的 Ubuntu 24.04少踩几个坑。