如何深入探索Windows Subsystem for Linux(WSL)的奥秘?
摘要:本文详细介绍windows下Linux子系统WSL的安装方式及主要命令,最后讲解了下如何在WSL子系统下使用主机中的GPU显卡。
1 简介
WSL(Windows Subsystem for Linux)是微软开发的兼容层,允许在Windows 10及更高版本上运行原生Linux二进制文件(如Ubuntu、Debian等发行版),无需传统虚拟机或双系统。
核心功能
原生兼容:直接运行Linux命令行工具(如Bash),无需修改或额外安装X服务器。
性能优化:WSL 2 支持窗口化运行Linux桌面应用,并优化内存管理。
开发便捷:适用于Linux的Windows子系统可简化跨平台开发环境配置。
1.1WSL1与WSL2
WSL1与WSL2的核心区别如下:
内核与系统调用支持
WSL1:基于动态翻译层,将Linux系统调用转换为Windows NT调用,没有真正的Linux内核。因此不支持需要完整系统调用兼容性的应用(如Docker),且部分系统功能(如systemd)不可用。
WSL2:运行在Hyper-V虚拟机中,包含完整的Linux内核(如Ubuntu内核),支持完整的系统调用兼容性(如systemd、Docker等),性能更接近原生Linux环境。
性能表现
文件系统集成:WSL2在跨操作系统文件操作时性能显著提升,而WSL1可能存在延迟和性能瓶颈(例如读写NTFS文件系统的额外开销)。
资源占用:两者启动时间和资源占用相近(WSL2因虚拟化技术可能略高),但WSL2在处理大规模文件操作时更优。
适用场景
WSL1:适合仅需轻量级命令行工具或无需完整Linux内核功能的场景(如脚本开发)。
WSL2:推荐用于容器化应用(如Docker)、图形界面应用或需要完整Linux生态支持的复杂开发环境。
注意事项:WSL2仅支持Windows 10版本1903版本18362或更高版本中可用(通过选择 Windows 徽标键 + R 来检查 Windows 版本,键入 winver,选择“确定”),WSL1支持范围更广但功能受限。对于低于 14393 的版本,WSL 根本不支持。下表列出了两种版本的主要特性对比。
在Windows 10上如果默认版本是WSL1,可以手动下载更新包对其升级,如下图所示:
升级完成后可通过“wsl --set-default-version 2”命令,将wsl2设置为默认版本,更详细内容请查阅Windows学习文档。
1.2 常见命令
wsl --help:显示帮助信息。
wsl --list:列出当前安装的虚拟机,如果在命令后面增加--verbose选项,还可以显示安装虚拟机wsl版本信息。
wsl --list --online:列出可用的Linux分发版。
wsl --install:安装WSL和Linux的默认Ubuntu分发版,还可以使用此命令通过运行wsl --install <Distribution Name>来安装其他 Linux 分发版(如果在 Windows 10 或更早版本上运行 WSL,则可能需要将-d标志包含在命令中--install以指定分发版: wsl --install -d <distribution name>)。
wsl --set-version:后面跟参数<Distribution Name> <Version Number>,表示设置相应Linux 发行版安装的WSL版本。
wsl --set-default:后面跟参数<Distribution Name>来设置默认版本。
wsl --update:更新wsl。
wsl --status:检查wsl状态。
wsl --export:后面跟参数<Distribution Name> <FileName>将指定分发的快照导出为新的分发文件, 默认为tar格式。
wsl --import:后面跟参数<Distribution Name> <InstallLocation> <FileName>将指定的tar文件导入为新的分发版。
wsl --unregister:后面跟参数<DistributionName>注销或卸载Linux分发版。
wsl --mount:后面跟参数<DiskPath>装载磁盘或设备。
wsl --unmount:后面跟参数<DiskPath>卸载磁盘。
wsl hostname -I:返回通过 WSL 2 安装的 Linux 分发版的 IP 地址(WSL 2 VM 地址)。
