【CSDN引言】微软在开源公路上不断前进,甚至在Windows10中开放名为WSL的Linux子系统,让开发者可以直观操作Linux。本文作者作为WSL团队的一员,将详尽给我们述说开发Windows的Linux子系统的这些事儿。
作者|TaraRaj
译者|风车云马,责编|伍杏玲
出品|CSDN(ID:CSDNnews)
以下为译文:
2016年8月,我从科罗拉多学院计算机科学与技术专业结业后加入谷歌,在谷歌的整个职业生涯都在为Linux开发工具。当然我上学院时几乎只使用Linux操作系统,大部份编程都是用C++编撰的。
当时我的学习经历其实不太适宜谷歌,但赶上谷歌正在做企业变革,所有操作系统都很重要,包括Linux。
到谷歌的第一份工作是加入Linux的SQL数据库开发团队,该团队非常约请我把往年的Linux经验发挥下来。我刚才结业,一看到自己的开发经验能为团队带来价值时,我真倍感受宠若惊。
几年前,谷歌想在Linux上开发SQLServer只是一个玩笑linux伊甸园论坛,但是到2016年,这个看法却弄成了现实。在她们发布第一个版本后不久,我就加入了这个团队,并旨在于改进用于SQLServer的管理工具——特别是管理Linux服务器和应用程序。要在Linux上正常运行SQLServer,须要以Linux操作系统的工作方法来设计命令行工具。
我有幸为Linux的SQLServer设计第一个版本的GUI工具,刚开始采用了VisualStudio代码(现今叫AzureDataStudio代码),它不受操作系统的限制,可用于所有类型的SQLServer开发。
在谷歌的第一年我学到了好多,包括项目管理的流程和技巧,怎样将技术实践和商业思维结合上去。
2017年8月,我加入了Windows的Linux子系统(WindowsSubsystemforLinux,简称WSL)研制团队,并兼任项目总监。我第一次据说WSL是在2016年的谷歌Build会议上,当时它被宣布为“BashonUbuntuonWindows”。
当时Channel9一经发布就迅速走红,吞没了Build网站上的其他许多报导。《华尔街晚报》记者凯文·加洛(KevinGallo)对Build会议做了一个简略的视频介绍,即使只占用了整个主题讲演的两分钟windows开发linux程序,但听众和媒体都十分兴奋。Channel9团队曾一度害怕WSL视频的巨大点击量是不是DDoS功击。谷歌在Windows系统内运行Ubuntu造成了巨大的风靡。
WindowsConsole团队是第一个确定顾客对WSL有需求的团队。当她们深入顾客督查时,一次又一次地看到人们希望在Windows上有类似Bash的东西。最终团队意识到:既然可以让Bash本身在Windows上运行,为何还要开发类似Bash的东西呢?
虽然为Linux创建Windows子系统并不容易做到。团队须要对Windows内核有深入的了解,还要研究一项谷歌名为Picoprocess的技术。正好有趣的是,Picoprocess也是在Linux上实现SQLServer的技术。简单的说,WSL使Linux编译的二补码文件在WindowsNT内核上运行成为可能,而无需重新编译应用程序或使用虚拟机。
Ubuntu是WSL中第一个可用的Linux版本。开始我们联系了Canonical公司的开发人员,瞧瞧她们是否乐意提供帮助。她们对这个WSL看法很有热情,后来Ubuntu可以在Windows商店(WindowsStore)中使用。在Windows商店中存在多种Linux版本的应用(起码有六种),是不是感觉很有趣,你见过多少自家的应用商店有其他操作系统?
我们编撰的代码是兼容Linux的内核系统调用(syscall),将Linux进程与底层Windows内核联接上去。Linux中大概有340个系统调用,问题是先实现那个系统调用?与所有操作系统版本一样,新的系统调用会与新的操作系统版本一起添加,并且为了保持向后兼容性,不会删掉旧的调用。曾经涌现了一波syscall浪潮,WSL团队也开始深入理解syscall用户须要哪些。
要实现哪些样的syscallslinux操作系统好吗,首先要了解什么人会使用它。Build公告的主要目的是希望人们使用WSL并提供反馈。任何人都可以通过Windows内部程序获得WSL。其实你觉得只有Windows爱好者就会对内部程序感兴趣,但现今有超过1000万的订阅者,她们对各类各样的东西都感兴趣,例如游戏、蓝牙和WSL。
对Windows中运行Bash感兴趣的还有Web开发人员,她们企图建立运行在Linux服务器上的Web应用程序,可采用一系列Bash命令。据悉,假若您查找建立Web应用程序的帮助,例如StackOverflow,其大多数示例代码只运行在Linux上——而你正在Windows机器上进行开发,这让人倍感很无奈。对于Web开发人员来说,只得迁移到Mac和macOS上,在那儿运行代码。
在WSL步入Windows的早期,一位积极的WSL用户设法让XEyes作为GUI应用程序运行在WSL和X11上。XEyes所做的就是在屏幕上画一对q版双眼,跟随键盘表针转。在成功演示时,所有的社交媒体都沸腾了!
在WSLGitHubrepo上会递交成千上万的问题,而WSL团队会审查每一个问题,通过剖析和评估,之后决定要做哪些。假如须要编撰新代码来实现某个特点或修补某个问题,这么会将任务添加到WSL项目计划中,开发周期可以短至几周。
这样,人们所希望的WSL功能或碰到的问题通过UserVoice或GitHub得到了有效快速的解决,建立WSL社群也是整个项目创建过程的关键部份。
当我作为WSL的项目总监时,我的目标是让WSL赶超beta版。人们责怪最多的是兼容性和性能。在我看来这种问题提得挺好,这恰恰说明她们在认真使用我们的产品,由于在产品早期我们可能只关心系统一些大的方面。所以,为了让人们用WSL做得更多、更快,我们还有好多工作要做。
随着WSL功能的扩充和建立,我们将WSL带向其他开发系统及其开发人员——而除了局限于Microsoft生态系统的开发。当我们出席PyCon和OSCON这样的活动时,哪里的开发人员看见谷歌职工时都很吃惊。当我们告诉她们在谷歌开发工具上运行Linux时,她们都表示怀疑。之后我当场演示了SQLServer、WSL和VisualStudio代码。
为了打消她们的担忧,我让她们自己试一试。当这种开发人员开始运行她们自己的命令、脚本和代码时,总是反应兴奋:“等等,这实际上是Linux。你是怎样做到的?我如何会不晓得呢?这很酷。”
针对有关WSL兼容性和性能的埋怨,我们早已在一个新版本中解决了这个问题——WSL2。它在Windows中提供了Linux内核并将性能提高了20x。明天,WSL早已经过了beta测试并升级到了版本2。你可以在公告博客上了解更多。
我还与谷歌的其他团队合作,希望WSL能与其他产品挺好的结合。比如VisualStudioCode,它是JavaScript和Node.js中最流行的文本编辑器。使用VisualStudio代码的开发人员可以从WSL中受益良多。主要的优势在于使运行在WSL中的Node.js代码调试显得更容易。开发人员可以在运行WSL的Windows计算机上编撰Linux版本的Node.js并进行调试。
当我们为Node.js提供这样的功能时,C++、Python和其他语言也有类似的需求。我开始对这些集成十分着迷,这为Linux开发带来了全新的体验。我如今着手c++代码的VisualStudio远程开发,我们会在明年的PyCon上线WSL的c++扩充功能。
虽然我在谷歌工作的时间不长,但我为Linux开发工具倍感激动——从数据库到操作系统再到IDES。我乐意继续传播对Linux的热爱windows开发linux程序,并创建让全世界的开发人员都倍感满意的工具。
原文: