WSL(Windows Subsystem for Linux )是可在Windows 10及更高版本系统上运行Linux二进制可执行文件的工具,提供完全兼容的Linux内核接口,无需 虚拟机 或双启动即可搭建Linux环境,用户可同时运行Linux文件系统、命令行工具、GUI应用与传统Windows桌面应用,满足开发者在 Windows 上进行Linux开发和测试的需求。它支持 Ubuntu 、Debian等多发行版选择及版本管理,具备文件系统互通能力,可实现与Windows系统的互操作,还支持分发版的导出、导入与移动,主要面向Web开发人员、开源项目从业者等群体,适用于内部开发循环等场景。
WSL相比完整 虚拟机 占用更少CPU、内存和存储资源,支持x64和Arm64处理器;WSL 2采用Hyper-V架构 子集 实现虚拟化,具备更快的文件系统性能、完整的Linux内核支持及系统调用兼容性, 网络应用 运行更高效,还支持GPU访问、USB设备接入等功能,可用于机器学习等场景。此外,WSL支持高级配置,可通过相关文件调整资源限制、挂载设置及网络配置, Linux 根目录与已挂载驱动器文件分别由WSL和Windows控制,遵循对应权限与命名规则。
用户可通过Windows终端、开始菜单、PowerShell等多种方式运行已安装的Linux分发版,还能配置 Git 凭据管理器、 OpenSSH 服务器、默认用户账户等功能。加入Windows预览体验成员可选择Beta、发布预览等频道接收WSL更新或预览功能,也可通过特定命令测试最新预览版本。
发展历史
2016年8月, 微软 在Windows 10上推出WSL,使用的是被称为“WSL1”的体系结构。WSL1作为一个转换层运行,在Windows内核上使用一个Linux内核接口。可将WSL1视为一个兼容层,用于模拟在Windows环境中运行 Linux 二进制文件的系统调用。2019年5月6日,微软发布了WSL2。WSL2引入了对WSL体系结构的重要更改,包括在一部分Hyper-V功能中使用真正的Linux内核。WSL2现在是在Windows上安装Linux分发版时使用的默认体系结构。
主要功能
WSL支持在Windows 10及更高版本系统中运行Linux二进制可执行文件,提供完全兼容的Linux内核接口,无需借助 虚拟机 或双启动即可运行Linux环境,可满足开发者在Windows系统上开展Linux开发与测试的需求。用户可直接在Windows系统中运行 Linux 文件系统、Linux命令行工具及GUI应用,同时可运行传统Windows桌面应用和程序。
WSL支持多发行版选择,用户可按需安装 Ubuntu 、Debian、OpenSUSE、Kali、Alpine、Arch Linux等发行版,并在Bash命令行中运行Linux命令行工具和应用。同时该工具支持版本管理,可进行WSL版本检查、默认版本设置、现有发行版转换为指定版本等操作。
WSL具备文件系统互通能力,用户可从 Linux Bash命令行访问本地 计算机 的文件系统,其中Windows的C盘挂载在/mnt/c,其他驱动器以此类推;用户也可在WSL中运行 Windows 命令,实现与Windows系统的互操作,还能在同一组文件上同时使用Windows应用和Linux命令行工具。此外,WSL支持将分发版导出到VHD文件,可复制到另一台计算机并导入,也可使用PowerShell将WSL分发版移动到其他驱动器或位置。
安装 Linux 分发版后,可通过多种方式运行:一是通过Windows终端运行,该终端支持多命令行,可在多个选项卡或窗口窗格中打开,能在多个Linux分发版或其他命令行之间快速切换,还可自定义配色方案、字体样式、大小、 背景图像 和键盘快捷方式;二是通过Windows开始菜单,直接打开已安装的分发版;三是在PowerShell中输入 wsl.exe 打开默认Linux分发版,或输入 wsl [command] 在当前命令行中使用默认Linux分发版执行指定命令。
WSL支持配置 Git 凭据管理器,可在WSL中使用Windows Git权限;支持运行 OpenSSH 服务器,也可更改WSL的显示语言,还可通过设置 wsl.conf 值 user.default=<name> 来配置默认用户账户。WSL 2支持访问GPU,可应用于机器学习、 人工智能 和数据科学场景,还可通过USBIPD-WIN项目获得USB设备支持,同时可使用 网络应用 ,具备完整的系统调用兼容性。
用户加入Windows预览体验成员后,可从Windows设置菜单选择接收预览版的频道,自动接收与该版本关联的WSL更新或预览功能。其中Beta频道适合早期采用者,可预览并反馈Windows 11预发行功能;发布预览频道适合想要预览修补程序和关键功能、获取下一版本Windows可选访问权限的用户,也建议商业用户使用。若不想切换Windows安装到预览频道,可通过命令 wsl.exe --update --pre-release 测试WSL的最新预览。
WSL主要面向开发人员,尤其是Web开发人员、从事开源项目或在 Linux 服务器环境中部署的人员,适合偏好使用Bash、常见Linux工具(sed、awk等)和Linux优先框架( Ruby 、 Python 等),同时也使用Windows生产力工具的用户。该工具适用于内部开发循环,例如开发人员创建CI/CD管道(持续集成和持续交付)时,可先在本地 计算机 上进行测试,然后再部署到云端。
技术特点
WSL所需的CPU、内存和存储资源少于完整的 虚拟机 ,支持x64和Arm64处理器。WSL 2具备更快的文件系统性能和完整的Linux内核支持,使用Hyper-V架构的 子集 来实现虚拟化,该子集以名为“虚拟机平台”的可选组件形式提供,可在所有桌面SKU上使用;其架构采用虚拟化网络组件,发行版的IP地址与主机计算机的IP地址不同。
WSL中的GPU访问通过 /dev/dxg 设备进行,该设备可将GPU调用 路由 到 Windows GPU。WSL 2具备完整的系统调用兼容性, 网络应用 在WSL 2上的运行表现更好、速度更快;该版本支持在 虚拟机 中运行,需确保虚拟机已启用嵌套虚拟化。
WSL可同时运行 Linux 命令行工具和应用以及Windows命令行、桌面和商店应用,且可从Linux访问Windows文件。其中Linux根目录下的文件由WSL控制,与Linux行为保持一致,支持包含Windows无效文件名字符的文件、为非管理员用户创建的符号链接,可通过 chmod 和 chown 修改文件属性,区分文件/文件夹的大小写;已挂载驱动器中的文件由Windows控制,支持区分大小写,所有权限都被设置为尽可能反映Windows权限。
WSL支持高级配置,可通过配置文件~/.wslconfig调整WSL 2的资源限制,例如限制使用的最大内存、最大CPU核心数;同时支持与WSL 1相同的wsl.conf文件,可实现自动挂载Windows驱动器、启用或禁用互操作性、修改Windows驱动器将挂载到的目录等配置,还可通过/etc/wsl.conf文件配置WSL 2的网络,例如关闭自动生成resolv.conf并手动设置DNS。