news 2026/9/4 0:49:30

一台机器跑 3 套 Linux:WSL 多版本管理快速上手指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一台机器跑 3 套 Linux:WSL 多版本管理快速上手指南

一台机器跑 3 套 Linux:WSL 多版本管理快速上手指南

【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL

项目 A 还锁在 Ubuntu 20.04 的老依赖上,项目 B 已经迁到 22.04,新框架又点名要 24.04——重装系统?不现实。用微软开源的 WSL(Windows Subsystem for Linux)做 WSL 多版本管理,你可以在同一台 Windows 上装下 3 个不同版本的 Ubuntu 多发行版,各占一个磁盘镜像,想进哪个就wsl -d一下。这篇文章带你把这套环境从零搭起来。

先想清楚这三件事

别急着敲命令,先花 30 秒分清三个词,后面就不会拧巴:

  • 发行版:你在哪个 Linux 系统里干活。Ubuntu、Debian、Kali 都行,装几个都行。
  • 版本:WSL 有两代运行引擎,1 代和 2 代。1 代靠翻译层把 Linux 系统调用转给 Windows 内核;2 代跑在一个轻量 Linux 虚拟机里,系统调用基本是原样的。
  • 默认版本:两条线。一是wsl不带-d时默认进哪个发行版;二是新装的发行版默认落在 1 代还是 2 代(wsl --set-default-version管这条)。

1 代和 2 代怎么选,看这张表就够了:

维度WSL 1WSL 2
内核实现翻译层,直接调 Windows 内核独立 Linux 内核,Hyper-V 虚拟化
/mnt/c读写明显偏慢
完整系统调用部分兼容完全兼容
内存占用
典型用法文件操作密集、老工具链开发测试、跑容器、要 systemd

一句话记法:碰 Windows 文件多就 1 代,要完整 Linux 行为就 2 代。

从零搭一套多版本环境

下面这套流程走完,你就能在同机上开出 3 个 Ubuntu。命令都给你压到最短。

安装多发行版

一次装一个版本,装两个就够演示:

wsl --install -d Ubuntu-22.04 wsl --install -d Ubuntu-24.04

验证 WSL 1 和 WSL 2 状态

装完跑wsl --list --verbose,看三列:NAMESTATEVERSION。名字前面带*的是当前默认发行版。

NAME STATE VERSION * Ubuntu-22.04 Running 2 Ubuntu-24.04 Stopped 2

版本转换的正确姿势

WSL 版本转换用--set-version,单个发行版单独转。比如把 22.04 降到 1 代(读写/mnt/c就快一截),24.04 留在 2 代跑容器:

wsl --set-version Ubuntu-22.04 1 wsl --set-default-version 2

转换需要重启该发行版,转换期间别往里写数据。

用 export/import 克隆模板

想给不同项目复制同一套环境,导出成 tar,再按项目分别导入:

wsl --export Ubuntu-22.04 base.tar wsl --import proj-a C:\wsl\proj-a base.tar --version 2 wsl --import proj-b C:\wsl\proj-b base.tar --version 1

导入时用--version直接指定目标代次,省得再转一次。想看命令背后的实现,仓库里有 wsl.exe 说明。

给每个版本划清边界

版本多起来后,真正让你省心的是“边界”——谁用多少资源、数据放哪、怎么互不污染。

资源边界,交给.wslconfig文件放在用户目录,[wsl2]段管所有 2 代发行版,单独一段可以按发行版名再调:

[wsl2] memory=4GB processors=2 localhostForwarding=true [ubuntu-22.04] memory=2GB

改完wsl --shutdown生效。给轻量的 22.04 压到 2GB,把内存让给 24.04,同机就不挤了。

项目级隔离,靠镜像不靠文件夹。每个项目一个独立发行版(上一步的proj-aproj-b),系统包、环境变量各归各的,升级 A 不会连累 B。

跨环境同步,走共享盘 + 软链。三个发行版都能看见/mnt/c,把它当公共交换区:

ln -s /mnt/c/wsl/shared ~/shared-workspace

需要写性能的地方(比如node_modules)留在/home,别跨到/mnt/c

避坑与排错速查

现象大概率原因处理
版本转换报0x80070057磁盘写满清临时文件和旧镜像,腾出空间再转
启动超过 30 秒2 代内存/核数给太多调小.wslconfig里的memoryprocessors
联网不通虚拟网卡状态残留wsl --shutdown后重进
/mnt/c权限报错、杀毒扫盘卡Windows 侧干扰项目挪到/home,给杀软放行 WSL 目录

再补三条维护习惯:

  • 镜像放SSD,2 代冷启动差别明显。
  • 内存按实际占用给,别一上来就拉满。
  • 每季度wsl --unregister <name>清掉废弃发行版,释放磁盘。

把工具链接进来

VS Code:按发行版切换开发环境

装好 WSL 后,VS Code 里Ctrl+Shift+P打开命令面板,搜WSL,选WSL: Connect to WSL using Distro...,再挑目标发行版,编辑器直接连进对应那套环境,不用切来切去。

Docker:让 2 代发行版当后端

Docker Desktop 的引擎指向 WSL 2,容器就跑在你选的那个发行版里。给 24.04 单独开一套 Docker,跑新镜像;22.04 留给稳定依赖,互不打架。

写在最后

三句话带走:

  1. 按负载选代次——文件密集走 1 代,容器和开发走 2 代,别一刀切。
  2. 一项目一镜像——wsl --import拆开,升级谁都不连累。
  3. 定期清理——废弃发行版--unregister掉,磁盘不膨胀。

现在就wsl --install第二个发行版,把手头的混装环境拆成 3 套干净的。

【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 15:35:54

单片机计算机毕设之基于 STM32 的按键校准定时投喂与语音提示系统设计 基于 STM32 的多模式宠物投喂控制系统与移动端平台设计(011406)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机&#xff0c;Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/9/2 12:15:34

FreeCAD 扩展管理器完整指南:快速发现、安装并管理你的插件

FreeCAD 扩展管理器完整指南&#xff1a;快速发现、安装并管理你的插件 【免费下载链接】FreeCAD Official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler. 项目地址: https://gitcode.com/GitHub_Trending/fr/FreeCAD 刚上手 Fr…

作者头像 李华
网站建设 2026/9/3 17:23:48

超级轨比赛Arduino程序模块化设计:从传感器到状态机的清晰架构

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 12:13:06

Matlab调用XGBoost实现回归预测:环境配置、模型训练与部署全流程

简介&#xff1a;本资源是一套完整的Matlab环境下基于XGBoost算法的数据回归预测实战项目&#xff0c;面向机器学习初学者、高校学生及工程实践者&#xff0c;解决实际业务中连续数值型目标变量的高精度建模与预测问题&#xff0c;适用于金融风控、气象预测、工业参数优化等典型…

作者头像 李华
网站建设 2026/9/2 12:12:07

Ryujinx Switch 模拟器快速上手指南:从下载到开玩只需三步

Ryujinx Switch 模拟器快速上手指南&#xff1a;从下载到开玩只需三步 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx 是一个用 C# 编写的开源 Nintendo Switch 模拟器&#x…

作者头像 李华
网站建设 2026/9/2 12:10:55

基于springboot的智能社区系统的设计与实现(源码+文档+部署+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华