计算机原理—Windows中的WSL
一、介绍作为大家熟悉的操作系统一般现在有三大系统即Windows系统、Linux系统和MacOS系统。不过苹果的系统相对封闭而且一般是消费和开发领域比较多而商用服务上几乎看不到。所以对于服务器应用来说其实经常用到的是Windows和Linux要居多。而且在这其中Linux又在服务器应用中占据着绝对的主导地位而Windows系统则在个人用户桌面占有主力地位特别是在国内占据的比例更是遥遥领先。那么在系统互通和开发部署之间就需要二者进行交互这是一个非常实际的应用场景。二、Windows和Linux交互在传统的Windows和Linux的互相交互中最常见的就是使用虚拟机互相通信或者使用远程桌面。当然如果不考虑UI交互还可以考虑一些SSH的远程登陆这对于在Windows上操作Linux纯服务器版本有着重要的应用价值。但是上面的种种方式都不可避免的带来各种系统、版本或驱动的兼容性导致在不少的场景下使用起来并不方便。仍然是你是你我是我。要想达到很流畅自然的通信仍然是一个技术和运气的问题。特别是作为Windows上的应用者可能对Linux的各种安装、操作和管理本身就不是多么熟悉能不能够把Linux天然的集成到Windows系统中呢前面多次提到过有需求就会有人去解决。Windows的应用者和微软都在不断做着各种各样的尝试。三、分析和发展Windows系统试图统一天下的野心时刻都没有放弃过只不过不断的被打击才导致现在安分了许多。不知道大家还有没有在visual studio中使用j来开发java的经历。而现在的Visual studio已经可以原生支持Linux开发和远程调试。从这一点大家可以窥出一些端倪。开发工具可以兼容那系统同样可以兼容。在早期的Windows Services中微软就推出过SFUWindows Services for UNIX但由于支持有限所以未被大众所知。后来随着安卓的兴起微软又搞了一个项目Project Astoria意图让Android的应用可以运行在Win10的移动版本中。不过最终由于种种原因还是没能最终推出。但这也造就了后来的WSL。四、WSLWSLWindows Subsystem for Linux。它目前有两个版本即WSL1和WSL2。WSL1于2016年推出WSL2于2019年推出。并且微软在WSL2的基础上于2021年将WSL的代码从Windows代码库中独立并于2025年宣布开源WSL相关代码可以Github中获取。WSL1此版本类似于在Windows内核中增加了一个内核兼容的驱动层。它负责将对Linux的系统调用映射到Windows内核中。这样就保证了Linux的可执行文件在Windows平台上的调用。这看上去挺美但熟悉二者本质不同的开发者明白Windows的不少核心调用和Linux的核心调用无法进行一一映射。它不是一种类似语言的翻译而是根本设计理念的不同。所以WSL1的应用天然就有着根本上的限制或者说缺陷WSL2既然知道了WSL1的缺点WSL2就推出了。他使用一个轻量的Hyper-V虚拟机直接原生在Windows系统中在虚拟机中运行完整的Linux内核这样就可以完整的使用Linux的各种系统调用了。虽然从表面上看它类似于前面提到的虚拟机方式但它原生于Windows内核中利用虚拟化技术直接进行处理。所以其对GPU加速、图形化支持特别是systemd和网络等支持的更好WSL的应用明白了WSL的特点要想使用WSL还是需要一些要求的。基础是必须是64位版本的Win10版本必须不小于Build 19041。安装使用管理员权限打开Power shell输入wsl --install。此命令会启用WSL功能并安装WSL2相关的虚拟机平台以及默认的Ubuntu发行版使用它其实有点类似conda了可以使用类似的命令wsl --list --verbose查看版本,wsl启动默认发行版,wsl -d 启动指定发行版扩展可以在VS Code中安装WSL扩展直接操作。Win10 2004以上可使用WSL2直接运行Linux图形化桌面应用。但一般建议将相关Linux的文件存放在Linux的系统中以提高性能。它可以使用常规的Linux命令进行处理# 在WSL2中安装nginx或Apache方法是一致的 sudo apt update sudo apt install nginx -y #apache2 # 启动,WSL2默认未启用systemd sudo service nginx start #apache2 #Windows浏览器 http://localhost一般来说推荐使用WSL2,毕竟其完全的Linux支持不可小觑。但如果想使用虚拟安装自行处理或对双方的文件交互要求比较强的化还是建议安装WSL1。不过好像到现在大家还是习惯用虚拟机或者远程的比较多。五、总结目前看windows中的WSL2已经相当不错了。但距离真正的普及估计还是需要一段时间磨砺。不过微软的这种前进的方向肯定是正确的能否坚持下去就看微软的坚持和应用的普及情况了。