一、介绍
现在主流的操作系统主要有三大类:Windows、Linux 和 macOS。不过 macOS 相对封闭,更多集中在消费和开发场景,商用服务端几乎见不到。所以服务器应用里,实际打交道最多的还是 Windows 和 Linux。
其中 Linux 在服务器领域占据绝对主导地位,而 Windows 则在个人桌面端,尤其是国内桌面市场,份额遥遥领先。这样一来,系统互通、开发部署时,就绕不开 Windows 与 Linux 之间的交互需求,这是非常实际的使用场景。
二、Windows 和 Linux 交互
传统上,Windows 和 Linux 交互最常用的方式,要么是虚拟机互相通信,要么是远程桌面。如果不需要 UI,还可以通过 SSH 远程登录,这对在 Windows 上操作纯服务器版 Linux 很有价值。
但这些方式多多少少都会有系统、版本或驱动兼容性问题,很多场景下用起来并不顺手,仍然“你是你,我是我”。想要流畅自然的通信,既考验技术也看运气。
特别是对 Windows 用户来说,很多人本身就不熟悉 Linux 的安装、操作和管理。那能不能把 Linux 天然集成到 Windows 系统里?前面说过,有需求就有人解决,微软和 Windows 使用者其实一直在做各种尝试。
三、分析和发展
Windows 系统想“一统天下”的野心从来没消失,只是不断被现实打击,现在收敛了很多。不知道大家有没有在 Visual Studio 里用 J++ 开发 Java 的经历?现在 Visual Studio 已经可以原生支持 Linux 开发和远程调试,从这一点也能看出:开发工具可以兼容,系统同样可以兼容。
微软早期推出过 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 年宣布开源,相关代码可以在 Github 上获取。
-
WSL1
这个版本类似于在 Windows 内核里增加了一个内核兼容驱动层,负责把 Linux 的系统调用映射到 Windows 内核中,从而让 Linux 可执行文件能在 Windows 平台上运行。
看起来挺美,但熟悉两者底层的开发者都知道,Windows 的不少核心调用和 Linux 的核心调用根本没法一一映射。这不是像语言翻译那样简单,而是设计理念上的根本差异,所以 WSL1 天然存在限制或者说缺陷。
-
WSL2
既然知道了 WSL1 的缺点,WSL2 就应运而生。它使用一个轻量级的 Hyper-V 虚拟机直接原生跑在 Windows 系统中,在虚拟机里运行完整的 Linux内核,这样就能完整使用 Linux 的各种系统调用。
虽然表面上看它和前面提到的虚拟机方式类似,但它原生在 Windows 内核中,并用虚拟化技术直接处理,所以对 GPU 加速、图形化支持,尤其是 systemd 和网络等方面支持得更好。
-
WSL 的应用
要使用 WSL 也有一些基础要求:必须是 64 位版本的 Win10,版本号不低于 Build 19041。
安装:使用管理员权限打开 PowerShell,输入 wsl --install。这条命令会启用 WSL 功能,并安装 WSL2 相关的虚拟机平台以及默认的 Ubuntu 发行版。
使用:它其实有点类似 conda,可以用下面这些命令:
wsl --list --verbose:查看版本
wsl:启动默认发行版
wsl -d:启动指定发行版
扩展:可以在 VS Code 中安装 WSL 扩展直接操作;Win10 2004 以上版本可以直接用 WSL2 运行 Linux 图形化桌面应用。但一般建议把相关 Linux 文件存放在 Linux 系统中以提高性能。
它可以用常规的 Linux 命令处理,比如先安装 nginx 或 Apache:
# 在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 已经相当不错,但距离真正普及,估计还需要一段时间打磨。不过微软这个方向肯定是正确的,能不能坚持走下去,就要看微软的定力和应用的普及情况了。
对 Windows 与 Linux 融合玩法感兴趣的读者,也可以到 云栈社区 继续交流。
|