本页使用了标题或全文手工转换

适用于Linux的Windows子系统

维基百科,自由的百科全书
跳到导航 跳到搜索
适用于Linux的Windows子系统
在Windows 10上运行的Bash
在Windows 10上运行的Bash
其他名称WSL
开发者Microsoft
初始版本WSL 1: 2016年8月2日,​6年前​(2016-08-02
WSL 2: 2019年6月12日,​3年前​(2019-06-12[1]
稳定版本
0.58.3
(2022年4月21日,​5个月前​(2022-04-21[2]
源代码库github.com/Microsoft/WSL(仅问题)
操作系统Windows 10, Windows Server 2019, Windows 11
取代Windows Services for UNIX
类型兼容层(WSL 1), 虚拟化(WSL 2)
许可协议子系统: 专有商业软件;
Linux内核: GNU GPLv2(仅), 具有在兼容GPL变体下或在宽松许可如BSD、MIT下的一些代码
网站docs.microsoft.com/windows/wsl

适用于Linux的Windows子系统(英语:Windows Subsystem for Linux,简称WSL)是一个为在Windows 10Windows Server 2019上能够原生运行Linux二进制可执行文件ELF格式)的兼容层

概览[编辑]

WSL提供了一个由微软开发的Linux兼容的内核接口(不包含Linux内核代码)[3],然后可以在其上运行GNU用户空间,例如Ubuntu[4][5][6][7]openSUSE[8]SUSE Linux Enterprise Server[9][10][11]Debian[12]Kali Linux[13]这样的用户空间可能包含Bash shell和命令语言,使用本机GNU/Linux命令行工具(sedawk等),编程语言解释器(Ruby,Python等),甚至是图形应用程序(使用主机端的X窗口系统)。[14]

简介和可用性[编辑]

在周年更新中引入时,只有Ubuntu镜像可用。秋季创意者更新将Linux发行版的安装过程移至Microsoft商店,并引入了FedoraSUSE镜像。[11]

WSL在版本1607之后的64位版本的Windows 10与Windows 11中可用。它也可在Windows Server 2019中使用。

发展[编辑]

微软首次尝试在Windows上实现类似Unix的兼容性,首先是微软POSIX子系统,由Windows Services for UNIX通过MKS/Interix取代,后者最终因Windows 8.1的发布而被弃用。Windows Subsystem for Linux背后的技术起源于未发布的Astoria项目,它使一些Android应用程序能够在Windows 10 移动版上运行。[15]它首先在Windows 10 Insider Preview build 14316中提供。[16]

虽然微软以前的项目和第三方Cygwin专注于基于POSIX标准创建自己独特的类Unix环境,但WSL的目标是原生Linux兼容性。WSL不是将非原生功能包装到Win32系统调用中,而是利用NT内核执行程序将Linux程序作为特殊的、隔离的最小进程(称为“pico-processes”)作为专用系统连接到内核模式“pico-providers”。调用和异常处理程序不同于vanilla NT进程。[17]

微软将WSL视为“主要面向开发人员的工具 — 尤其是Web开发人员以及在开源项目上工作或使用开源项目的人员”。[14]WSL使用的资源少于完全虚拟化的机器,这是在Windows环境中运行Linux软件的最直接方式,同时还允许用户在同一组文件上使用Windows应用程序和Linux工具。[14]

2020年9月,WSL 2开始向Windows 10 Version 1903/1909和Windows 10 May 2020(20H1/Version 2004)的用户推送。WSL 2支持GUI应用[18]

WSL 1的体系结构[编辑]

LXSS Manager Service是负责与子系统交互的服务(通过驱动程序lxss.syslxcore.sys),以及Bash.exe(不要与Linux发行版提供的Shell混淆)的方式启动Linux进程,以及在执行期间处理Linux系统调用和二进制锁。[19]

特定用户调用的所有Linux进程都进入“Linux实例”(通常,第一个调用的进程是init)。关闭所有应用程序后,将关闭实例。

硬件和文件系统访问[编辑]

由于没有硬件仿真/虚拟化(与coLinux等其他项目不同),WSL直接使用主机文件系统(通过VolFSDrvFS[20]和硬件的某些部分,例如网络(Web服务器,用于例如,可以通过主机上配置的相同接口和IP地址进行访问,并且对使用需要管理权限的端口或已经被其他应用程序占用的端口共享相同的限制),这保证了互操作性。[21]

即使从shell运行sudo,某些位置(例如系统文件夹)和配置的访问/修改也受到限制。必须启动具有提升权限的实例才能获得“真正的sudo”并允许此类访问。[14]

局限性[编辑]

此子系统无法运行所有Linux软件(如32位二进制文件)[22][23]或需要在WSL中未实现的特定Linux内核服务的软件。由于WSL中没有“真正的”Linux内核,因此无法运行内核模块(如设备驱动程序)。

可以通过在Windows(主机)环境(例如VcXsrv或Xming[24]中安装X窗口系统来运行一些图形(GUI)应用程序(例如Mozilla Firefox),但是这种模式还存在一定的问题,例如缺乏音频支持或硬件加速(导致图形性能不佳)。尽管已经在计划中,但是目前还没有实现对OpenCLCUDA的支持。[25][26]

也就是说,微软明确指出WSL面向应用程序的开发者,而不是面向桌面环境或生产服务器。微软建议使用虚拟机Hyper-VKubernetes)和Azure来实现这些目的。[14]

性能[编辑]

在性能测试中,Windows Subsystem for Linux通常接近原生Linux(如Ubuntu、Debian、Intel Clear Linux或其他Linux发行版)。在某些测试中I/O是WSL的瓶颈。[27] [28]

截图[编辑]

参见[编辑]

参考资料[编辑]

  1. ^ Craig Loewen. WSL 2 is now available in Windows Insiders. Windows Command Line. 2019-06-12 [2022-05-21]. (原始内容存档于2022-05-29). 
  2. ^ Releases 0.58.3. [2022-05-21]. (原始内容存档于2022-05-25). 
  3. ^ Gerwitz, Mike. GNU/kWindows. mikegerwitz.com. [2018-04-08]. (原始内容存档于2020-12-21). 
  4. ^ Harsh, Mike. Run Bash on Ubuntu on Windows. Building Apps for Windows. Microsoft. 30 March 2016 [2016-06-14]. (原始内容存档于2019-05-16). 
  5. ^ Finley, Klint. Why Microsoft Making Linux Apps Run on Windows Isn't Crazy. Wired. Condé Nast. 30 March 2016 [2018-12-20]. (原始内容存档于2021-04-19). 
  6. ^ Kirkland, Dustin. Ubuntu on Windows – The Ubuntu Userspace for Windows Developers. Ubuntu Insights. Canonical. 30 March 2016. (原始内容存档于2017-12-21). 
  7. ^ Hammons, Jack. Bash on Ubuntu on Windows. MSDN. Microsoft. 9 April 2016 [2016-06-14]. (原始内容存档于2017-11-30). 
  8. ^ Get openSUSE Leap 42 - Microsoft Store
  9. ^ Get SUSE Linux Enterprise Server 12 - Microsoft Store
  10. ^ Yegulalp, Serdar. Windows Subsystem for Linux welcomes Suse and Fedora options. InfoWorld. 2017-05-12 [2017-09-16]. (原始内容存档于2018-06-14). 
  11. ^ 11.0 11.1 Ubuntu now available from the Windows Store!. Windows Command Line Tools For Developers Blog. July 10, 2017 [2017-08-11]. (原始内容存档于2019-02-12). 
  12. ^ Debian GNU/Linux for WSL now available in the Windows Store. Windows Command Line Tools For Developers. [2018-03-07]. (原始内容存档于2019-04-21) (美国英语). 
  13. ^ Kali Linux in the Windows App Store. [2018-03-09]. (原始内容存档于2021-01-23) (美国英语). 
  14. ^ 14.0 14.1 14.2 14.3 14.4 Frequently Asked Questions for WSL. Microsoft. [2016-11-13]. (原始内容存档于2016-10-07). 
  15. ^ Bright, Peter. Why Microsoft needed to make Windows run Linux software. Ars Technica. Condé Nast. 6 April 2016 [2018-12-20]. (原始内容存档于2021-05-07). 
  16. ^ Aul, Gabe. Announcing Windows 10 Insider Preview Build 14316. Windows Experience Blog. Microsoft. 6 April 2016 [2016-06-14]. (原始内容存档于2020-08-13). 
  17. ^ Windows Subsystem for Linux Overview. Windows Subsystem for Linux. [2018-04-22]. (原始内容存档于2020-01-04) (美国英语). 
  18. ^ [图]WSL 2迎来重大改进:支持GUI应用 向Windows 10 v1903/1909开放. [2020-09-25]. (原始内容存档于2021-07-16). 
  19. ^ Jack Hammons. Windows Subsystem for Linux Overview. Windows Subsystem for Linux blog on MSDN. April 22, 2016 [2018-12-20]. (原始内容存档于2020-01-04). 
  20. ^ Jack Hammons. WSL File System Support. Windows Subsystem for Linux blog on MSDN. June 15, 2016 [2018-12-20]. (原始内容存档于2020-01-04). 
  21. ^ Jack Hammons. WSL Networking. Windows Subsystem for Linux blog on MSDN. November 8, 2016 [2018-12-20]. (原始内容存档于2019-11-05). 
  22. ^ Please enable WSL to run 32 bit ELF binaries. Windows Developer feedback (Microsoft/UserVoice). [2018-12-20]. (原始内容存档于2019-08-23). 
  23. ^ Support for 32-bit i386 ELF binaries. GitHub. [2018-12-20]. (原始内容存档于2019-04-09). 
  24. ^ Windows 10's Bash shell can run graphical Linux applications with this trick. PC World. [September 10, 2018]. (原始内容存档于2019-02-21). 
  25. ^ GPU not accesssible for running tensorflow and installing CUDA · Issue #1788 · Microsoft/WSL. GitHub. [September 10, 2018]. (原始内容存档于2019-04-12). 
  26. ^ OpenCL & CUDA GPU support. Windows Developer feedback (Microsoft/UserVoice). September 15, 2016 [September 10, 2018]. (原始内容存档于2018-07-07). 
  27. ^ Windows Subsystem for Linux. Phoronix. [2018-12-20]. (原始内容存档于2020-10-01). 
  28. ^ Michael Larabel. A Look At The Windows 10 October 2018 Update Performance With WSL. Phoronix. October 12, 2018 [2018-12-20]. (原始内容存档于2020-10-21). 

外部链接[编辑]