时间:2020-03-16 来源:互联网 浏览量:
在 Windows 上运行 Linux ? 这其实不是新鲜事,20年前,就有黑客这么干过。
不过大体都是虚拟机的做法,速度慢,能跑的 Linux 应用也少。
三十年河东,三十年河西。微软的开发者博客刚刚公布 [1] ,下一个 Windows10 版本,不仅自带 Linux 内核,而且还会通过 Windows Update 安装方式更新,简单得就像安装驱动程序一样。
大杀器
这个大杀器叫做 WSL , 全称是“适用于 Linux 的 Windows 子系统”(Windows Subsystem for Linux),它其实也不是一夜间冒出来的,只是一直默默无闻。
最早它起源于一个叫 Astoria 的项目,目的是为了让一些安卓 APP 运行在 Windows 10 移动版上。
但它的目标并不是硬件仿真或者虚拟化这样的项目,或者像流行的 Cygwin 这样的第三方 Linux 环境。
它的设计目标是一个完整的 Linux 子系统,可以直接使用主机的文件系统,比如允许用户在同一组文件上使用 Windows 应用程序和 Linux 工具;也可以调用硬件的某些部分,这是微软官方提供的在 Windows 环境下运行 Linux 软件的最直接方式。
比如直接使用 GNU Linux 的命令行工具,各种编程语言诸如 Python、Ruby 的解释器,甚至像 XWindow 这样的图形应用程序。
当然,微软指出 WSL 主要是面向应用程序的开发者,而不是日常的桌面环境。对于主力开发环境是 Windows ,但时不时需要用到 Linux 的开发者、老师或学生来说,堪称提高效率的开源神器。
下个月就可能发布
这个要推出的 Windows10 版本号是 2004,根据 YYMM 格式的命名规则,2004 就是 2020 年 4 月,当然 5 月发布也不奇怪,Windows Insider 里则可以先行体验。
这次更新的其实是 WSL 第二个版本(WSL2) ,它比上一个版本 WSL1 要强大得多,它打包了真正的 Linux 内核,推进到了普遍可用(GA,Generally Available)的状态。
特别是它大幅度提高了文件系统 I/O 性能,可以在 Windows 上直接运行 Linux 二进制文件。WSL1 是通过转换层,对系统调用还要做翻译;而 WSL2 则包含自己的 Linux内核,具有完整的系统调用兼容性,比如像 Linux 版本的 Docker 这样的开源程序,就可以直接调用。
WSL2 是在 2019 年 6 月的 微软 Build 大会上宣布的,到这次即将要达到的人人可用的状态,花了接近一年的时间。
如何安装使用
这次 WSL2 最值得称道的,就是它简便的安装和使用方式,说白了就像安装驱动程序或者打一个补丁那么简单。具体而言就是使用 Windows Update 进行更新,这样可以获得最新的内核版本,而无需更新整个 Windows 映像。
如果是第一次安装 WSL ,就会在安装过程中检查更新并为您安装 Linux 内核。
当然,你也可以在命令行里操作,直接下载软件包。
在 Github 上,你可以看到完整的源代码:WSL2-Linux-Kernel [2]。它基于 Linux 修改而来的,采取 Linux 内核的 GPLv2 开源许可证协议。
对于开发者来说,安装了 Linux 内核之后,不仅仅是使用 Linux 命令行工具,而是可以运行其上的 GNU/Linux,这意味着你可以选择不同的 Linux 发行版,比如 Ubuntu、Debian、SUSE 等等,这些发行版通过 Microsoft 商店就可以安装。
开源的微软,开源的社区
微软对开源的支持今非昔比了。随着 WSL 的发布,开发者已经形成了一个热烈的开源社区,甚至还办起了开发者大会 WSLCONF [3] ,今年的 WSLCONF 就是 3 月 3 日,当然由于疫情原因,变成了一次线上活动。
开发者大会还是 Ubuntu 赞助的,围绕 WSL主题进行各个方面的讨论,其中社区的头号人物就是 WSL的微软项目经理克雷格·罗文(Craig Loewen)[4] 。
克雷格非常年轻,2018年刚从加拿大滑铁卢大学机电工程毕业,在校时实习经验丰富,不仅做过微软的实习生,还做过 FIRST 机器人大赛的评委。
作为微软官方的 WSL 项目经理,克雷格在微软开发者博客上也发布了他面对开发者的最新概述视频《在 WSL2 上如何更快的开发程序》。
(注:上图为克雷格的演讲视频截图)
曾几何年,微软和 Linux 是操作系统领域最大的对手,为什么现在后者反而成了前者座上宾了?
Engadget 的评论认为,微软现在越来越不依赖于 Windows 的销售,而是更多依赖 Azure 这样的云服务。而在服务器端和开发者端,更多的支持 Linux,就是更好的打造生态。