1. 先把WSL的“管理对象”搞清楚,命令才学得明白
WSL这个命令,很多人把它当成一个打开Linux的开关,装完系统、进到Ubuntu里敲几条命令,就再也没碰过wsl.exe。但真到某天C盘飘红、默认发行版找不到了、或者安装卡在某个百分比一动不动时,才发现自己除了wsl之外什么都不知道。这篇东西就是要把wsl.exe这层管理命令梳理透,从安装、更新、切换、卸载,到备份、迁移、排错,一次性讲清楚。
我先说一个最容易被忽略的点:wsl.exe本身分两层管理对象。第一层是“WSL运行时”,就是支撑Linux子系统跑起来的那套组件和内核;第二层是“Linux发行版”,也就是你在上面装的Ubuntu、Debian、Kali这些具体系统。wsl --update管的是前者,wsl --install -d Ubuntu管的才是后者。很多人排错时把这两层混在一起,方向错了,自然越搞越乱。
1.1 wsl.exe 到底在管什么
打开PowerShell执行wsl --help,你能看到一长串命令,但归纳下来就几类:安装类(--install、--update),列表类(--list、--status、--version),运行控制类(--terminate、--shutdown),发行版操作类(--set-default、--set-version、--unregister),以及备份迁移类(--export、--import)。只要你记住“每个发行版都是可以被创建、启动、停止、删除、备份、恢复的独立对象”这个大前提,这套命令的逻辑就很顺。
我还想强调一下--set-version这个命令。它可以把某个发行版在WSL1和WSL2之间切换,比如wsl --set-version Ubuntu 1。WSL1的启动速度在某些场景下有优势,WSL2则有着完整内核和更好的应用兼容性。虽然现在绝大多数人都用WSL2,但遇到老项目、特殊网络栈或特定文件监控场景时,切回WSL1反而能救命。这个命令存在感不强,但值得记住。
1.2 发行版、VHDX、注册表的关系
理解管理命令之前,还需要明白WSL发行版在Windows侧是怎么存的。WSL2的每个发行版,本质上是一个轻量虚拟机,它的完整文件系统都封装在一个VHDX磁盘镜像文件里。以Ubuntu为例,这个文件默认在:
text复制C:\Users\<你的用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu...\LocalState\ext4.vhdx
你在WSL里创建的文件、装的所有软件、包括系统本身的配置,全部落在这个vhdx里。这就是为什么WSL会悄悄吃掉几十上百GB的C盘空间——因为所有东西都写进了一个文件里,而且这个文件并不会因为你删了WSL里的数据而自动变小。Windows侧还会在注册表里记录每个发行版的配置信息,位置在HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss,能看到发行版的BasePath等设置。知道这些,你就能理解wsl --unregister为什么那么危险——它把注册表项和vhdx文件一起删除,数据没有任何回收站可进。
文件系统的存储方式还解释了一个常见现象:为什么从Windows资源管理器往\\wsl$\Ubuntu里复制文件很快,但从WSL里访问/mnt/c下的文件却经常慢得让人抓狂。因为/mnt/c是跨系统文件访问,每次读写都要经过系统调用转换,涉及大量小文件时性能损耗会被放大。我自己的习惯是:代码工程、数据库这类IO密集的东西都放到WSL内部文件系统,Windows和WSL之间只交换必要的小文件。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从零开始:安装、更新、初始化命令一次讲透
2.1 wsl --install 的完整用法
2020年之后,安装WSL的主流方式就是一条命令:
powershell复制wsl --install
这条命令会依次完成:启用“适用于Linux的Windows子系统”功能、启用“虚拟机平台”功能、下载并安装WSL运行时、再安装一个默认发行版(通常是Ubuntu)。听起来一气呵成,但它依赖网络下载和系统组件更新,所以实际执行中确实容易出现各种意外。
想安装指定发行版,先查一下在线列表:
powershell复制wsl --list --online
输出类似这样:
text复制NAME FRIENDLY NAME
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
Debian Debian GNU/Linux
Kali-Linux Kali Linux Rolling
然后精确指定:
powershell复制wsl --install -d Ubuntu-24.04
这个发行版名称必须和列表里的NAME完全一致,大小写也要
