一、介绍
作为大家熟悉的操作系统,一般现在有三大系统即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中,微软就推出过SFU(Windows Services for UNIX),但由于支持有限,所以未被大众所知。后来随着安卓的兴起,微软又搞了一个项目Project Astoria,意图让Android的应用可以运行在Win10的移动版本中。不过最终由于种种原因,还是没能最终推出。但这也造就了后来的WSL。
四、WSL
WSL,Windows 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已经相当不错了。但距离真正的普及,估计还是需要一段时间磨砺。不过微软的这种前进的方向肯定是正确的,能否坚持下去,就看微软的坚持和应用的普及情况了。