子系统(wsl)

什么是子系统

适用于 Linux 的 Windows 子系统(Windows Subsystem for Linux)是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双系统。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

  • 使用 WSL 安装和运行各种 Linux 分发版,例如 Ubuntu、Debian、Kali 等。 安装 Linux 分发版并从Microsoft 应用商店接收自动更新,导入 Microsoft 应用商店中不可用的 Linux 分发版。
  • 将文件存储在独立的 Linux 文件系统中,特定于已安装的分发版。
  • 运行命令行工具,例如 BASH。
  • 运行常见的 BASH 命令行工具,例如grepsedawk或其他 ELF-64 二进制文件。

子系统和虚拟机的区别

子系统(Subsystem)和虚拟机(Virtual Machine, VM)都是在计算机上运行不同操作系统环境的方法,但它们在实现方式、资源消耗、性能、启动速度等方面有明显区别。以 Windows 子系统 Linux(WSL) 和传统虚拟机(如 VMware、VirtualBox)为例,下面是详细对比:

核心区别

比较项 子系统(如 WSL) 虚拟机(如 VMware, VirtualBox)
实现原理 运行在宿主系统内的兼容层或子系统 完整模拟硬件,运行一个独立的操作系统
内核共享 WSL1:系统调用转译;WSL2:轻量级虚拟机内核 完全独立的操作系统内核
资源占用 较少,占用宿主资源较低 较高,需要为其分配固定的CPU、内存、硬盘
性能 WSL2接近原生性能 接近原生性能(但需要资源足够)
启动速度 非常快,几秒内完成 相对较慢,需启动整个系统
文件系统访问 与Windows文件系统高度集成 文件系统隔离较强
图形界面支持 默认无,但WSLg支持GUI 支持完整桌面环境
用途适配 适合开发、脚本、编程等轻量任务 适合运行完整的桌面系统或服务

举例说明

✅ Windows Subsystem for Linux(WSL)

  • WSL1:将Linux系统调用翻译为Windows调用,不含真实Linux内核。优点是启动快、资源少,缺点是兼容性有限。
  • WSL2:使用真正的Linux内核,运行在轻量虚拟机中,兼容性更强,性能更高,支持Docker等复杂功能。

✅ 虚拟机(VMware / VirtualBox)

  • 安装完整Linux/Ubuntu镜像
  • 启动时加载整个操作系统
  • 资源隔离较强,但更重、配置复杂

根据自己情况选择

需求 推荐方案
想快速使用 Linux 工具链 ✅ WSL1/WSL2
需要运行 Docker、开发 Web 服务 ✅ WSL2
需要完整桌面系统、图形界面 ✅ 虚拟机
系统资源有限、快速启动命令行环境 ✅ WSL1
研究内核、驱动或嵌入式开发 ✅ 虚拟机

安装方法和配置

下面是 Windows Subsystem for Linux(WSL) 的详细安装和配置教程,适用于 Windows 10(版本 2004 及以上)和 Windows 11:

快速安装方法

打开 PowerShell(管理员权限)CMD(管理员权限),执行以下命令:

1
wsl --install

该命令将会:

  • 启用必要的功能(WSL 和虚拟机平台)
  • 安装 WSL2 引擎
  • 下载并安装默认 Linux 发行版(如 Ubuntu)
  • 设置默认用户

📌 若系统未安装 Linux 发行版,系统会自动跳转到 Microsoft Store 下载。

自定义安装方法

启用 WSL 和虚拟机平台

打开 PowerShell(管理员),执行:

1
2
3
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

安装 Linux 发行版

可以从 Microsoft Store 安装你喜欢的发行版,如:

  • Ubuntu
  • Debian
  • Kali Linux

配置命令

查看已安装的发行版:

1
wsl --list --verbose

设置默认发行版:

1
wsl --set-default <发行版名称>

设置某发行版为 WSL1 或 WSL2:

1
wsl --set-version <发行版名称> 2  # 或 1

卸载某个发行版:

1
wsl --unregister <发行版名称>

windows和WSL之间的文件共享

访问 Windows 文件系统:

在 Linux 中可以通过 挂载/mnt/c/ 访问 Windows 的 C:\ 盘,例如:

1
cd /mnt/c/Users/你的用户名

访问 Linux 文件系统(从 Windows):

打开文件资源管理器地址栏,输入:

1
\\wsl$\Ubuntu\

即可访问 Linux 子系统的文件结构。

更改配置

编辑 .wslconfig(配置 WSL2 虚拟机资源)路径:C:\Users\你的用户名\.wslconfig

示例内容:

1
2
3
4
[wsl2]
memory=4GB #内存大小
processors=2 处理器数
swap=2GB 交换内存

编辑完后,在CMD中执行 wsl --shutdown 使配置生效。

可以在WSL中输入命令free -h查看内存分配大小以及交换内存,以及cat /proc/cpuinfo查看相应的核数

利用vscode链接WSL

首先在vscode中安装插件Remote - SSH,安装完后后点击左下角的Remote - SSH图标,接着选择链接到WSL, Vscode会自动链接到wsl,无需输入IP和密码