资讯动态

WSL2离线安装Ubuntu 22.04完整指南:绕开微软商店的5分钟方案

发布时间:2026/10/2 1:16:12 来源:尧图企业网站定制
要说这几年Windows上最值得装的东西WSL2绝对排得进前三。但很多人的劝退点不是WSL2难用而是装的过程太让人窝火——打开Microsoft Store搜到Ubuntu 22.04 LTS点击安装然后看着进度条几十KB每秒地爬甚至动不动就报错。我在公司帮几台机器配开发环境时就被这么折腾过一回后来干脆把离线安装整条路摸了一遍现在不管本机网络环境怎么样都能五分钟之内把Ubuntu 22.04 LTS跑起来。这篇就完整整理一份WSL2离线安装Ubuntu的指南面向Windows 10/11用户彻底绕开Microsoft Store在线下载这个瓶颈。先说清楚这篇文章解决什么问题第一Microsoft Store下载慢到怀疑人生这是绝大多数人的痛点第二有些机器被安全策略限制了商店权限但手动执行安装包反而是允许的第三运维或者带新人的场景里你想给多台电脑装一模一样的WSL2 Ubuntu环境离线包是最省事的方式。文章会从环境检查、安装包获取、两种安装方式、踩坑排查、批量分发和系统迁移五个方面完整讲透适合所有想把WSL2用起来但被安装环节卡住的读者。1. 为什么放着现成的 wsl --install 不用偏要折腾离线包1.1 在线安装的几种路径和各自的坑现在Windows上装WSL2 Ubuntu的常规路径大概有三条。第一条是直接管理员PowerShell里执行wsl --install让它自动处理WSL组件和默认发行版的下载安装。这个命令确实省事但有两个问题它默认安装的发行版可能不是你想要的那个版本比如你就是想固定用Ubuntu 22.04 LTS而当前默认可能是Ubuntu 24.04另外这条命令在下载组件阶段一样要走网络网络状况差的时候照样卡住。第二条就是标题里提到的路径——打开Microsoft Store搜索Ubuntu 22.04 LTS点击安装。这条路径的瓶颈非常明显商店的CDN分发在部分网络环境下速度极差我见过一个几百MB的Ubuntu包下了两个多小时。更离谱的是商店偶尔会在下载一半的时候直接把下载队列挂起进度条纹丝不动你点取消重试可能还得从头开始。第三条是wsl --install -d Ubuntu-22.04指定发行版安装本质上还是走了商店或者官方分发渠道速度和稳定性同样取决于网络。这些在线方案最大的问题不只是慢而是不可控。你没法确定这次安装会不会在某个环节突然失败也没法确定下载下来的包到底是不是你想要的版本。对个人开发者来说这也就是多等等的事但在批量部署、离线开发环境、或者网络受限的办公网环境下这种不确定性完全没法接受。1.2 离线方案真正解决的场景离线安装并不是为了炫技它解决的是在线安装解决不了的三类场景。第一类是网络受限环境。很多企业内网出于安全考虑会限制外部网络访问或者干脆禁用了Microsoft Store但允许管理员手动执行经过审核的安装包。WSL2作为一种本地虚拟化方案非常依赖Windows侧组件和发行版rootfs的离线分发能力这种情况下离线包几乎是唯一选择。第二类是版本可控和可复现。在线安装的发行版版本受商店当前分发的版本影响今天是22.04过阵子商店首页推24.04了你点击安装得到的可能就不是预期的东西。但离线包里锁定了具体的Ubuntu 22.04 LTS哪怕过两年再装你拿到的还是同一个文件同一套环境这对复现部署极其重要。第三类是批量部署。给团队里十个人配同样的WSL2开发环境如果每个人在线装一遍光是等下载的时间就够呛。更合理的做法是打包一份已经配置好的WSL2系统tar包分发下去直接导入每台机器只需要复制文件和执行两条命令的时间。理解了这些背景你就知道离线安装不是没事找事而是真正稳定可靠的方案。下面开始动手之前你的Windows必须先满足一些前提条件。2. 动手前先确认系统状态版本、虚拟化和内核三张通行证2.1 Windows版本要求不是所有机器都适合跑WSL2WSL2对Windows版本有硬性要求。Windows 10需要2004版本内部版本号19041以上Windows 11则完全没有问题。家庭版、专业版、企业版都支持这点不用担心。检查方式很简单WinR打开运行框输入winver回车就能看到系统版本和内部版本号。如果你的系统版本低于19041那得先把系统更新到受支持的版本否则后面所有操作都没法继续。有个容易被忽略的细节Windows 10 LTSC 这类长期服务版本如果版本太旧可能不包含WSL2所需的组件支持安装过程会极其痛苦。如果你打算在办公电脑上折腾WSL2先确认系统不是那种被IT锁定了一百年不更新的精简版。2.2 虚拟化必须开启一个开关卡掉一半新手WSL2本质上是在Hyper-V虚拟化平台之上运行的轻量级虚拟机所以CPU的虚拟化功能必须打开。如果你在安装后遇到报错本文第四章会有完整的排查链路但这里建议你在动手之前就确认好状态。最快的方式是打开任务管理器切到“性能”选项卡点CPU看底部有没有“虚拟化: 已启用”。如果显示“已禁用”则需要在BIOS/UEFI固件设置里打开。Intel平台通常叫Intel VT-x或VT-dAMD平台叫SVM Mode不同品牌的主板叫法略有差异但也大差不差。开启BIOS虚拟化之后Windows侧还需要启用“虚拟机平台”和“适用于Linux的Windows子系统”这两个可选功能。更推荐直接用管理员PowerShell执行两条命令免得在控制面板的GUI界面里点来点去dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart两条命令执行完之后必须重启电脑这一步不能跳过。很多教程不强调重启结果网友在下一步直接遇到各种奇怪的报错。2.3 更新WSL内核和命令行工具重启之后打开管理员PowerShell先把WSL组件更新到最新版本。WSL本身有一套独立的内核更新机制不更新的话不仅可能装不上22.04后面日常使用也会遇到兼容性问题。wsl --update --web-download执行完之后可以用wsl --version查看当前WSL的版本信息。如果你看到的是类似2.x.x的版本号说明WSL内核和命令行工具都已经就绪。如果提示WSL命令不存在说明系统还没装WSL的核心组件请回到上面2.2的步骤再检查一遍。顺便提一句--web-download参数的作用是从Web下载WSL内核包而不是走商店渠道。这也是一个“离线思路”的应用——它让WSL组件的安装不再依赖商店的下载通道。到这一步你的系统已经具备了安装WSL2 Ubuntu 22.04 LTS的全部前置条件。接下来就是核心环节如何拿到离线包并装进系统。3. 核心操作拿到22.04离线安装包绕开商店装进系统3.1 离线安装包从哪拿官方渠道是唯一推荐离线包本身并不神秘。微软官方一直提供WSL发行版的离线分发形式就是.appx或者.appxbundle格式的安装包。讲网上很多第三方分享的网盘链接但我强烈不建议去下那些来源不明的文件因为WSL发行版直接关系到你系统里的沙箱隔离环境混入恶意代码后果很难控制。最靠谱的方式是打开微软官方文档中的“旧版WSL手动安装步骤”页面里面有各发行版对应的官方下载链接包括Ubuntu 22.04 LTS的.appx文件。下载时注意看清文件名里的版本标识比如带2204字样那才是Ubuntu 22.04。实际上从微软官方下载的Ubuntu 22.04包格式往往是.appx或.appxbundle。.appxbundle是包含多个平台x64、ARM64包体的大容器一般优先下这个就行。拿到包之后不要双击不要想着它会自动安装因为我们接下来有两种安装方式第一种适合单机快速装第二种适合批量部署和系统迁移。3.2 方法一Add-AppxPackage 直接安装这种方式最接近商店安装的效果区别在于安装源是本地文件完全不经过Microsoft Store的网络通道。把下载好的.appx文件放到一个纯英文路径下比如C:\downloads\然后打开管理员PowerShell执行Add-AppxPackage -Path C:\downloads\Ubuntu2204.appx这里有个很容易踩的坑如果路径里带了汉字或者空格PowerShell的路径解析可能会出问题所以别图方便放到桌面就完事。放C盘根目录或新建一个英文文件夹都行。命令执行完没有报错的话点开始菜单就能看到Ubuntu的图标。第一次启动它会做rootfs初始化等几秒钟就能进入bash命令行然后会提示你创建一个新的UNIX用户名和密码。这个用户名可以跟Windows用户名不一样它只影响WSL内部环境。如果执行Add-AppxPackage时报错最常见的错误是“无法安装因为此应用需要开发者模式”或者一条关于证书签名的错误。这通常意味着你的系统策略禁止安装非商店签名的应用。解决办法是设置—隐私和安全性—开发者选项打开“开发人员模式”。但有些企业环境会锁死这个选项那你就直接用方法二方法二对这种场景更友好。3.3 方法二wsl --import 导入tar包推荐批量部署这是从可靠机器上备份并恢复WSL系统的方式也是我目前最认可的离线安装思路。假设你现在有一台已经装好Ubuntu 22.04的电脑网络通畅周边设备也都正常。在这台电脑上打开PowerShell执行wsl --shutdown wsl --export Ubuntu-22.04 D:\backup\ubuntu2204.tar如果没有名为Ubuntu-22.04的发行版先执行wsl -l -v看看你自己发行版的实际名称用实际名称替换即可。导出的tar文件就是你的离线安装包它包含完整的Ubuntu 22.04文件系统可以拷贝到U盘、共享网盘或NAS上带走。在目标电脑上确保WSL2已经按第二章的步骤准备好了然后执行wsl --import Ubuntu-22.04 D:\WSL\Ubuntu2204 D:\backup\ubuntu2204.tar --version 2这个命令的参数逻辑是发行版名称虚拟机文件存放目录tar包路径指定WSL版本。第一个参数决定你在wsl -l里看到的名称可以自己命名第二个参数是这一套虚拟磁盘文件的存放位置推荐放在空间充裕的非系统盘。导入完成之后wsl -d Ubuntu-22.04就可以进入系统。注意这时候默认用户是root因为tar包在导入时没有自动注册默认用户。解决办法是在WSL内部创建普通用户后编辑/etc/wsl.conf[user] default你的用户名保存后执行wsl --terminate Ubuntu-22.04再重新进入系统就会以普通用户身份登录了。顺便对比一下两种方式的适用场景对比项Add-AppxPackagewsl --import安装源官方.appx安装包任何机器导出的tar备份对商店依赖无但受应用签名策略影响完全无默认用户创建时指定root需手动配置可复制性需要重新配置环境导出时为快照原样恢复批量部署每台单独装用同一tar导入适合批量自定义能力弱强可以先装好依赖再导出如果你只是想快速在本机装一个干净的Ubuntu用方法一就够了。如果你希望装完就有开发环境、有常用工具链或者要给多台机器部署同样的环境方法二的优势就很明显了。3.4 首次启动后的基础配置不管哪种方式安装成功建议进入系统后先做两件事。第一件事是更新软件索引sudo apt update sudo apt upgrade -y离线环境下这步可能没法执行那就跳过不影响后续正常使用。能联网的时候再做即可。第二件事是把基础工具链先装上避免以后要用的时候抓瞎sudo apt install -y build-essential curl wget git ca-certificates这一步不是必须的但WSL2主要被用来做开发这几个工具基本属于标配。缺什么以后再装也行但提前装好能让整个使用流程顺畅很多。到这里离线安装的核心操作已经全部走通。但接下来才是真正让人抓狂的部分——装好了不等于能用好下面这些坑我几乎每个都踩过。4. 装完必踩的坑从虚拟化报错到内存占用失控4.1 “无法启动因为此计算机上未启用虚拟化”最经典的拦路虎安装好Ubuntu之后你在PowerShell执行wsl命令却看到一行刺眼的报错请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化。这条报错的字面意思是WSL2需要虚拟化支持但“信封上写了虚拟化”和“实际开了虚拟化”是两回事。之前我帮朋友排查过一台电脑任务管理器里明明显示“虚拟化: 已启用”但WSL2就是起不来。最后定位到的原因是Windows的“内核隔离”功能——内存完整性——跟WSL2的虚拟化机制产生了冲突。关闭Windows安全中心里的“内存完整性”重启电脑之后问题才解决。如果你的机器上报了这个错排查顺序建议是检查BIOS里有没有开启CPU虚拟化Intel VT-x / AMD SVM。检查Windows可选功能里“虚拟机平台”是否真正启用成功。检查Windows安全中心—设备安全性—内核隔离尝试关闭“内存完整性”。如果你是在虚拟机里装Windows再跑WSL2必须在宿主机开启嵌套虚拟化这个环节网上资料很少但真实存在。还有一个冷门原因Hyper-V的第三方虚拟机监控程序比如某些杀毒软件自带的内存保护模块会抢占虚拟化层导致WSL2无法获得所需的CPU虚拟化能力。这种场景烦人但属于极少数建议放在最后排查。4.2 发行版版本混乱wsl -l -v 才是你的诊断工具通过在线方式安装过多个发行版的人很容易搞混当前默认的WSL发行版到底是哪个。你可能以为自己在操作Ubuntu 22.04实际wsl命令进入的却是另一个系统。执行wsl -l -v输出里会列出当前安装的所有WSL发行版带星号的表示默认发行版VERSION列显示2表示正在使用WSL2。如果需要切换默认发行版wsl --set-default Ubuntu-22.04如果你发现自己常见的发行版VERSION列是1说明它还在用WSL1执行wsl --set-version 发行版名 2可以迁移到WSL2。WSL1和WSL2的文件系统、虚拟化方式完全不同开发场景强烈建议都在WSL2上。4.3 网络和DNSWSL里的网络不是你想象的那样WSL2使用的是NAT网络模式它相当于一台接了路由器的小虚拟机自己有一套独立的IP地址。因此你在WSL内部访问外网基本没问题但反过来Windows访问WSL内部的服务需要特殊处理——好在WSL2默认开启了localhost转发Windows上访问localhost:端口就能到WSL里的服务。DNS方面有一个经典问题WSL每次启动时都会动态生成/etc/resolv.conf如果你手动改了DNS重启之后大概率被覆盖成原来的内容。这在公司内网环境会很烦因为内网有一些服务要靠内部DNS解析。解决方案是编辑/etc/wsl.conf写入[network] generateResolvConf false然后手动修改/etc/resolv.confsudo rm /etc/resolv.conf sudo nano /etc/resolv.conf在里面写入你需要的DNS服务器比如你们网络要求的内部DNS地址。改完执行wsl --terminate Ubuntu-22.04再重新进入DNS配置就不会再被自动覆盖了。4.4 Vmmem内存占用失控不限制就把你内存吃光装好WSL2用了一段时间后很多人会发现自己Windows电脑没开几个程序内存占用却高得吓人。打开任务管理器一看一个叫“Vmmem”的进程吃了好几个G内存。这就是WSL2的虚拟机在运行时的表现它的内存管理机制会尽可能多利用物理内存做缓存所以看起来特别恐怖。如果机器内存本来就紧张强烈建议在你的Windows用户目录C:\Users\你的用户名下新建一个.wslconfig文件内容示例[wsl2] memory4GB processors2 swap8GB localhostForwardingtruememory控制WSL2能使用的最大内存processors控制CPU核数swap是虚拟内存大小。设置完之后执行wsl --shutdown让配置生效。我个人建议如果你的物理内存是16GB或者32GB开发场景可以适当放宽一些比如给6GB或8GB避免WSL内部编译东西被内存卡死。如果只有8GB内存老老实实限制到4GB同时把Windows侧的浏览器标签页清理一下才是真正治本的办法。4.5 中文支持和字体让终端不再“狗咬刺猬”很多人在WSL2里跑代码时如果输出日志里带中文终端显示全是方块或者乱码。这个问题的根源有两层一是WSL系统里没有安装中文字体二是Windows终端默认字体对某些字符集的支持不好。如果网络允许可以在WSL里安装中文语言包sudo apt install -y language-pack-zh-hans sudo update-locale LANGzh_CN.UTF-8如果网络受限装不了至少可以在Windows终端设置里把字体改为“等距更纱黑体”“Sarasa Mono SC”这类对中文友好的等宽字体Windows Terminal里设置之后中文显示就能基本恢复正常。说实话在WSL里写代码最推荐字体就是这类接近macOS体验的等宽字体光看代码时的舒适度提升就值回折腾时间了。5. 离线安装的进阶玩法系统模板、批量分发与磁盘迁移5.1 把开发环境封装成模板一次配置永久复用WSL2的整个文件系统就是一台完整的Linux虚拟机这意味着你可以把它当成一个“真机系统”来对待装好所有常用软件和开发环境后导出一份tar包这份tar就是你的私人系统模板。我自己的做法是在新机器上装好Ubuntu 22.04后会先做一波基础定制——安装zsh、配置好alias、设置好Git全局配置、装上常用的Node.js和Python环境、配好终端字体然后wsl --shutdown再导出一份tar存到移动硬盘和网盘里。为什么要wsl --shutdown再导出这个问题不少人吃了亏。直接在WSL运行状态下导出文件系统里的缓存和未落盘的变更可能不在快照里导出的tar可能不完整。先关闭WSL再导出才能确保文件系统处于一致状态。以后不管在哪台新电脑上只要WSL2前置条件满足了导入这份tar就等于一键恢复了整套开发环境省掉了从零配置的几个小时。导出的命令很简单wsl --shutdown wsl --export Ubuntu-22.04 E:\wsl-templates\ubuntu2204-dev.tar恢复的时候wsl --import Ubuntu-22.04 C:\WSL\Ubuntu2204 E:\wsl-templates\ubuntu2204-dev.tar --version 2导入后记得去看一下/etc/wsl.conf里的默认用户是不是你想要的如果不是按3.3节的方法改一下。5.2 批量分发一份tar包部署十台机器批量部署是离线方案最出彩的场景。给一个小团队配环境你不需要每台机器在线下载安装更不需要一台台手点配置。具体流程是在一台基准机器上配置好Ubuntu 22.04开发环境。导出tar包放到共享盘或U盘。在目标机器上执行三条指令检查WSL2是否就绪、导入tar、确认发行版状态。我整理了一个最简单的PowerShell批量检查脚本雏形wsl --status if ($LASTEXITCODE -ne 0) { Write-Host 请先安装WSL组件并开启虚拟化 exit } wsl --import Ubuntu-22.04 C:\WSL\Ubuntu2204 \\share\ubuntu2204-dev.tar --version 2 wsl -l -v可以用组策略或计划任务把类似的脚本推送到多台机器上配合目标机器端WSL组件预先装好整个团队的环境初始化从“每人折腾半天”变成“自动执行五分钟”。需要特别提醒的是tar包分发的环境里包含了你基准机器上的用户名、可能的密码、以及所有敏感配置比如Git密钥分发前请先清理干净。这一点很多人容易忽略直接把开发机的完整系统导出甩给同事等于把身份证复印件交出去了。5.3 系统迁移把WSL2从C盘挪到D盘不少人的C盘是SSD且容量紧张装了两个发行版之后系统盘直接红了。WSL2没有提供类似wsl --move的原生命令但用导出导入的方式完全可以实现系统迁移并且比重新安装要安全得多。操作步骤wsl --shutdown wsl --export Ubuntu-22.04 D:\backup\ubuntu2204.tar wsl --unregister Ubuntu-22.04 wsl --import Ubuntu-22.04 D:\WSL\Ubuntu2204 D:\backup\ubuntu2204.tar --version 2这里wsl --unregister会删除原发行版的所有数据所以必须确保前面导出的tar完整可用再执行。我的习惯是导出之后先wsl --import一个临时副本验证能启动确认无误后再删原系统。虽然多一步但稳如老狗。迁移完成之后同样记得检查默认用户配置。因为你重新导入的发行版默认还是root如果之前不是root得按3.3节的方法再设一次/etc/wsl.conf。5.4 离线环境里常见的配套需求VS Code插件也能离线装Windows Terminal、VS Code和WSL2是当前最流行的开发组合。如果网络环境受限Windows上的VS Code可能没法自动下载Remote-WSL扩展这时你可以从VS Code市场页面手动下载.vsix文件再在VS Code扩展面板的右上角“...”菜单中选择“从VSIX安装”。远程开发模式下VS Code会在WSL内部部署一个服务端组件这部分组件在完全离线时也需要手动处理。更省心的做法是在能联网的基准机器上直接把VS Code Remote-WSL相关的扩展和服务端都装好再按5.1节的方式导出一份完整的系统模板后面所有机器导入同一份tar远程开发体验就完全一致了。说到底离线安装的本质不是“退而求其次”而是“把环境配置变成可复制资产”。这两年我手里攒了快十个不同用途的WSL2模板导出之后放在共享存储上不管换电脑还是配新环境都是几分钟的事。如果你经常被安装环境这件事折磨强烈建议从今天开始就把手头这套Ubuntu 22.04环境导出一份tar留作底稿后面你会回来感谢这个决定的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑