
WSL多版本管理让3个Ubuntu版本与WSL 1/2在同一台机器上共存【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSLWSLWindows Subsystem for Linux的多版本管理解决的是一个很具体的问题一台 Windows 机器要同时伺候多个 Linux 发行版还要在 WSL 1 和 WSL 2 两种运行模式间按需切换。适合的对象是手上项目异构、需要为不同项目隔离环境、或要验证跨版本兼容性的开发者。下面按先选型、再共存、再切换、后模板化、再配资源、最后排障的顺序走一遍命令都嵌在对应的操作步骤里。先做选型判断WSL 1 还是 WSL 2两个版本的取舍核心就一句话WSL 1 走系统调用翻译层读写 Windows 侧文件时性能更好WSL 2 跑在轻量虚拟机里、带完整 Linux 内核系统调用兼容性最完整Docker 也能原生跑。判断逻辑是看负载类型——文件操作密集就偏 WSL 1开发测试、容器化就偏 WSL 2。特性WSL 1WSL 2架构系统调用翻译层轻量虚拟机 完整 Linux 内核启动速度快稍慢文件读写性能高中等系统调用兼容性部分完整内存占用较低较高Docker 支持有限完整让三个 Ubuntu 版本共存先装发行版再列清单确认版本号。--install -d指定发行版名--list --verbose-l -v的VERSION列能直接读出每个发行版当前跑的是 1 还是 2*标记当前默认项。wsl --install -d Ubuntu-22.04 # -d 指定发行版名只装这一个 wsl --install -d Ubuntu-24.04 # 第二个 LTS装完可与上面的并存 wsl --list --verbose # -v 才显示 VERSION 列用来核对版本装完用下面这张图里的清单视图核对wsl -l -o列出可装清单wsl -l -v列出已装发行版及其 STATE、VERSION一眼能看到 Ubuntu、docker-desktop 各是什么版本。在 WSL 1 和 WSL 2 之间切换--set-version 发行版 版本把单个发行版切到目标模式--set-default-version 版本设全局默认。注意转换会重启该发行版切换前建议先--export留个备份避免转换中断导致数据丢失。wsl --set-version Ubuntu-20.04 1 # 该发行版转 WSL 1适合文件密集场景 wsl --set-default-version 2 # 全局默认设为 WSL 2新装发行版继承它导出环境模板并克隆给第二个项目把调好的发行版打包成 tar再导入成新的独立实例是环境模板化的核心。--export导出的是可复用的模板--import时--version决定新实例跑在哪个 WSL 版本上两个项目各拿一份、互不干扰。wsl --export Ubuntu-22.04 base_ubuntu.tar # 导出为模板供后续克隆 wsl --import ProjectA C:\wsl\projectA base_ubuntu.tar --version 2 # 克隆出独立实例导入路径给每个项目单独一个目录避免多个实例共用同一块磁盘区域。遇到转换失败报0x80070057参数错误/空间不足时先检查磁盘剩余空间再重试。用 .wslconfig 给每个发行版单独配资源%UserProfile%\.wslconfig里[wsl2]段管全局默认[发行版名]段小写给单个发行版覆盖memory、processors。这样项目 A 吃 2GB、项目 B 吃 8GB资源互不挤占。[wsl2] ; 全局默认未单独配置的发行版继承这里 memory4GB processors2 [ubuntu-20.04] ; 单发行版覆盖段名用小写 memory2GB processors1改完wsl --shutdown再启动才生效配置文件不会热加载。多发行版共存的排障要点版本转换失败报 0x80070057多半是磁盘空间不足或参数拼错先清理磁盘再重跑--set-version。发行版连不上外网用wsl --shutdown关闭整个 WSL 引擎再重开能重置虚拟网络栈。Windows 侧文件权限报 Permission denied多为杀软/索引服务锁文件检查 Windows 端防护软件对该路径的拦截。启动超过 30 秒在.wslconfig里调低memory、processors别按机器上限满配。适用边界与注意事项镜像mirrored网络模式仅在 Windows 11 22H2 及以上可用老系统别指望这条路径。WSL 1 转 WSL 2 相对稳妥但反过来降级限制更多、兼容性差动手前一定先用--export留后路。资源段名必须用发行版名的小写形式写错大小写会被静默忽略。.wslconfig改动需wsl --shutdown后重启才生效。VS Code 的 Remote 扩展直接按发行版名连接、Docker 按 context 切多版本这两项按各自文档配置即可不影响 WSL 侧的版本共存逻辑。【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考