天天看点

Ubuntu on Windows 10 工作方式全解析

Ubuntu on Windows 10 工作方式全解析

误区澄清

在展开今天的内容之前,我们先要为大家澄清两个误区:

微软支持是的 ubuntu on windows,而非 linux on windows。

ubuntu 母公司 canonical 此次与微软的合作是要直接支持 windows 原生库和程序:windows 子系统 for linux(wsl),而不是通过容器技术或虚拟机运行 ubuntu。

ubuntu on windows 10工作方式

其实 wsl 相关代码早在 2016 年 1 月下旬便被微软悄悄内置进了 windows 10 build 14251 预览版中,此后微软的开发人员制订了 lxcore.sys 与 lxss.sys 这两个新的子系统文件,让其成为 windows 程序员开发 linux 应用程序的桥梁。

wsl 的首要工作是支持 ubuntu 用户态映像,微软发言人解释说:「我们为 windows 建立了新的基础架构,wsl 让 ubuntu 的缔造者 canonical 公司可以实现运行 ubuntu 用户模式映像。基于此,用户就可以在 ubuntu on windows 10 中直接运行原生 bash。」

canonical ubuntu 产品和战略执行团队的 kirkland 提到:「我们此次是将 ubuntu elf 二进制文件与 windows 进行 bit 到 bit 的校验和直接对接。」

Ubuntu on Windows 10 工作方式全解析

为实时将 linux 系统调用转换成 windows 系统调用(wsl,目前尚未开源),一个做事非常犀利的 ubuntu 开发团队一直在努力配合和适应微软的研发技术,以期尽快实现对接。(说以此,想必很多 linux 爱好者应该已经联想到 wine,这款可在 windows 中原生运行 linux 二进制文件的工具。)

目前从微软内部的压力测试工具和实验数据来看,ubuntu on windows 10 应用与 windows 10 应用几乎可以获得同等的 cpu、内存和 i/o 性能结果。

对 windows 工作原理和发展历史非常了解的用户应该知道,微软此次与 canonical 的合作似乎显得有些姗姗来迟。其实从 windows nt 开始就内置了 posix 子系统,它就是专门为 windows 提供原生 unix-linux 支持而开发的。

为什么变革

很多人在考虑微软此次为什么要做出如此大的变革?其实不难看出,从 satya nadella 上台微软 ceo 宝座之后,一直在致力于推广「移动为先,云为先」的理念,microsoft azure 云平台也在不断拥抱开源(一个只支持微软产品的平台,还能叫公有云?)。从用户的角度来看,除了桌面端的 windows、mac 和 linux 外,很多用户同时拥有并管理多套异构平台,就经常需要在 windwos 中折腾占资源的异构虚拟机、ssh 和 cygwin 等。在有了 ubuntu on windows 后只需点击几下,便可以访问一个功能丰富的 ubuntu shell,而无需再在本地虚拟化或重新编译。

而对于 canonical 来说,其 ubuntu 是 microsoft azure 和其它云平台中最流行的 linux 发行版,也是普及率非常高的 linux 桌面端。将 ubuntu shell 内置进 windows 桌面,可以帮助用户和开发人员更容易地使用 visual studio、vim 或 emacs 编辑代码、更简便地使用 git、scp 或 rsync 向云实例推送数据。

小结

很显然,不论对微软、canonical、还是最终用户,此次几方史无前例、似乎有些违背惯例的合作对各方都非常有好处,希望微软在这个方向上的探索会有一个三赢的结果。

如果你对 ubuntu on windows 有兴趣,ubuntu 14.04 lts for windows 10 的首个映像将很快会发布,ubuntu 16.04 lts 映像会在 4 月 21 日正式发布之后不久取代 ubuntu 14.04 lts 上线到 windows store。不过由于所有 ubuntu on windows 的映像都基于 redstone 代码,所以最快需要等到今年夏天 windows 10 redstone 正式发布最终用户才能正式用上。

====================================分割线================================

继续阅读