1、 介绍
1.1、概述
WSL 是 Windows Subsystem for Linux 的缩写,中文称为 Windows 下的 Linux 子系统。它是微软在 Windows 上提供的一种功能,允许用户在 Windows 系统上原生运行 Linux 二进制可执行文件
特点 | 作用 |
---|---|
运行 Linux 环境 | 可以在 Windows 系统中直接运行 Linux 命令行工具和应用程序,避免双系统或虚拟机的复杂配置 |
文件系统集成 | WSL 允许用户访问 Windows 和 Linux 的文件系统,支持跨系统文件操作 |
开发支持 | 开发者可以在 Windows 上使用 Linux 环境进行开发,比如运行 Linux 的开发工具、编译程序等,特别适合需要跨平台开发的场景 |
轻量级 | 相比虚拟机,WSL 占用更少的资源,并且启动速度更快 |
1.2、版本
微软目前提供了两种版本
WSL1:使用 Windows 内核兼容层来翻译 Linux 系统调用
WSL2:引入了真正的 Linux 内核,通过虚拟化技术运行,提供了更好的性能和兼容性
WSL1 | WSL2 | |
---|---|---|
架构 | WSL1 是基于一个兼容层,使用 Windows 内核来翻译 Linux 的系统调用(System Call),并且将这些调用映射到 Windows 系统调用上。这种方式使 Linux 应用程序可以在 Windows 系统上运行,但不是完整的 Linux 内核 | WSL2 引入了一个完整的、精简的虚拟机,并且运行了真正的 Linux 内核。它使用微软开发的轻量化虚拟化技术 Hyper-V 来提供更高的性能和完整的系统调用支持 |
性能 | ① 对于 Windows 文件系统(NTFS)的访问性能较好,因为它直接通过 Windows 系统进行文件操作 ② 对于 Linux 文件系统的访问相对较慢,特别是在需要大量文件操作时表现不佳 | ① 对于 Linux 文件系统的访问性能大幅提升,因为它在虚拟机中运行了真实的 Linux 文件系统 ② 对于 Windows 文件系统的访问相对较慢,因为需要通过网络协议(9P 文件协议)来访问 Windows 文件 |
兼容性 | WSL1 支持运行大部分 Linux 命令行工具和应用程序,但由于没有真正的 Linux 内核支持,对于需要复杂系统调用的程序(如 Docker 等容器技术)兼容性较差 | WSL2 提供了完整的 Linux 内核支持,因此可以运行几乎所有的 Linux 应用程序,包括 Docker、KVM 等需要底层内核支持的工具和服务 |
启动速度 | WSL1 启动非常快,因为它没有完整的虚拟机或者内核启动过程 | WSL2 运行在轻量级虚拟机中,允许用户限制和管理虚拟机的资源(如 CPU、内存等) 虽然 WSL2 启动比 WSL1 稍慢,但由于使用了优化的虚拟机技术,启动速度依然很快,资源开销较小 |
优点 | ① 启动快,轻量化,适合简单的命令行工具和开发任务 ② 对于 Windows 文件系统的访问较快,适合需要频繁操作 Windows 文件的任务 | ① 完整的 Linux 内核支持,兼容性好,能够运行更多的复杂应用程序和服务 ② 对于 Linux 文件系统的操作性能大幅提升,特别适合 Linux 开发者和需要频繁操作 Linux 文件的任务 |
缺点 | ① 由于没有真正的 Linux 内核,对某些应用程序(如 Docker、KVM 等)不完全兼容 ② 对于 Linux 文件系统的访问较慢 | ① 对于 Windows 文件系统的访问较慢 ② 虽然虚拟机启动较快,但相较于 WSL1 依然稍慢 |
1.3、配置安装
① 启用或关闭Windows功能 → 勾选适用于 Linux 或 Windows 子系统
和 虚拟机平台
和 Hyper-V
② 以管理员的身份运行 cmd,执行wsl --install -d Ubuntu
可能出现的错误:WslRegisterDistribution failed with error: 0x800701bc(安装WSL分发时出现的错误,即需要需要手动安装WSL)
解决:手动下载 → next → finish
2、 基本
2.1、基本命令
命令 | 描述 |
---|---|
查看可安装的子系统 | wsl --list --online |
查看已经安装好的子系统的列表 | wsl --list -v(* 表示当前默认的Linux子系统) |
设置默认的子系统 | wsl --set-default <name> |
启动子系统 | wsl -d Ubuntu |
退出子系统 | exit |
卸载子系统 | wsl --unregister <name> |
备份 | wsl --export <name> xxx.tar(会导出到桌面上) |
导入子系统 | wsl --import <new_name> <location> xxx.tar |