最近帮同事配笔记本的时候碰到一个挺有意思的需求:Win11 下已经装好了 WSL 里的 Ubuntu 24.04,但同一个发行版不够用,得再起一个独立的实例用来折腾编译环境,还希望把那个叫 Ubuntu-24.04 的默认名字改成更顺口的命名。原以为这只是 wsl --install 敲两下的事,结果发现“装第二个实例”和“重命名”这两个需求,比想象中要绕不少,坑也多。折腾一晚上把原理和步骤都摸透了,今天整理成一篇完整的实战记录,给同样被 WSL 多实例、重命名问题卡住的朋友一个可以直接照抄的方案。
1. 环境准备与基础安装:先把底座打牢
1.1 为什么会在 Win11 上需要多个 WSL 实例
先说场景。WSL 本身是轻量级虚拟机,装一个 Ubuntu 24.04 对大多数人够用,但实际干活时经常要分环境:一个实例保持干净,专门跑公司项目的构建流程;另一个实例随便折腾,装 ROS、ESP-IDF、OpenCV 这类体积大、依赖多的工具链,装坏了也不心疼。还有的时候需要同时验证不同版本的依赖库,或者给同事复制一个完全一样的开发环境。这时候“再装一个 Ubuntu 24.04”就成了刚需。
WSL 的发行版管理机制和 VMware 不一样,它没有图形化界面里“克隆虚拟机”这种按钮,官方也没有提供直接的 rename 命令(早期版本)。所以很多人第一次尝试时,要么在 Microsoft Store 里反复点安装却没反应,要么复制了整个目录却起不来。这些问题背后其实都是同一个关键点:WSL 的发行版实例在 Windows 侧是通过注册表和一个虚拟磁盘文件(ext4.vhdx)来管理的,多实例和重命名的本质,就是处理这两样东西。
1.2 检查 Win11 系统与开启 WSL 功能
在动手装第二个实例之前,先把基础环境确认好。我这里的操作环境是 Win11 专业版,系统版本 22H2 以上,WSL 内核已经更新到 2.x。如果你的机器是新装的 Win11,大概率还没启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”这两个 Windows 功能。
以管理员身份打开 PowerShell,执行:
powershell复制wsl --install
这条命令会自动启用所需功能、安装 WSL 2 内核,并默认安装 Ubuntu。如果系统里已经装过 WSL,只是没装 Ubuntu,可以单独指定发行版:
powershell复制wsl --install -d Ubuntu-24.04
安装完成后重启系统,首次启动 Ubuntu 时会要求设置 UNIX 用户名和密码。这个用户名会写入实例的默认配置,后面导入导出克隆实例时,默认用户信息不会跟着复制,需要额外处理,后面第 2.3 节会细说。
如果想确认当前 WSL 版本和实例状态,用:
powershell复制wsl -l -v
wsl --version
wsl -l -v 的输出里会列出所有已安装的发行版名称、运行状态和 WSL 版本。我当时的输出是:
text复制 NAME STATE VERSION
* Ubuntu-24.04 Running 2
那个 * 表示这是默认发行版,后面多实例时可以用 wsl --set-default 来切换默认实例。
1.3 wsl --install 卡住与内核更新失败的排查
安装过程中最常见的两个坑,一个是 wsl --install 下载特别慢,另一个是执行 wsl --update 时报“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”。
下载慢的问题,我实测下来最稳妥的方式是绕开命令行直接下载发行版安装包。在 Microsoft Store 里搜索 Ubuntu 24.04,手动点“获取”按钮走商店下载,或者从商店页面拿到安装包的下载链接后用 Add-AppxPackage 命令手动安装。这种方法比命令行里干等靠谱很多,因为命令行会从微软的远程服务器拉取,受网络波动影响比较大。新版 WSL 也支持手动下载发行版 tar 包,然后用 wsl --install --from-file 导入,这个后面在第 2.2 节里会用到。
“服务无法启动”这个报错,十次里有八次是“虚拟机平台”功能没开全。打开“启用或关闭 Windows 功能”,确认这三个
