【程序人生 编者按】微软在开源道路上不断前进,甚至在Windows10中开放名为 WSL 的 Linux 子系统,让开发者可以直观操作 Linux。本文作者作为 WSL团队的一员,将详细给我们讲述开发 Windows 的 Linux子系统的那些事儿。
作者 | Tara Raj
译者 | 风车云马,责编 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
以下为译文:
2016年8月,我从弗吉尼亚大学计算机科学与技术专业毕业后加入微软,在微软的整个职业生涯都在为Linux开发工具。其实我上大学时几乎只使用Linux操作系统,大部分编程都是用C++编写的。
当时我的学习经历似乎不太适合微软,但赶上微软正在做企业改革,所有操作系统都很重要,包括Linux。
到微软的第一份工作是加入Linux的SQL数据库开发团队,该团队特别邀请我把以往的Linux经验发挥出来。我刚刚毕业,一听到自己的开发经验能为团队带来价值时,我真感到受宠若惊。
几年前,微软想在Linux上开发SQL Server只是一个玩笑,然而到2016年,这个想法却变成了现实。在他们发布第一个版本后不久,我就加入了这个团队,并致力于改进用于SQL Server的管理工具——特别是管理Linux服务器和应用程序。要在Linux上正常运行SQL Server,需要以Linux操作系统的工作方式来设计命令行工具。
我有幸为Linux的SQL Server设计第一个版本的GUI工具,刚开始采用了Visual Studio代码(现在叫Azure Data Studio代码),它不受操作系统的限制,可用于所有类型的SQL Server开发。
在微软的第一年我学到了很多,包括项目管理的流程和方法,如何将技术实践和商业思维结合起来。
2017年8月,我加入了Windows 的Linux子系统(Windows Subsystem for Linux,简称WSL)研发团队,并担任项目经理。我第一次听说WSL是在2016年的微软Build大会上,当时它被宣布为“Bash on Ubuntu on Windows”。
当时Channel9一经发布就迅速走红,淹没了Build网站上的其他许多报道。《华尔街日报》记者凯文·加洛(Kevin Gallo)对Build大会做了一个简短的视频介绍,虽然只占用了整个主题演讲的两分钟,但观众和媒体都非常激动。Channel9团队曾一度担心WSL视频的巨大点击量是不是DDoS攻击。微软在Windows系统内运行Ubuntu引起了巨大的轰动。
Windows Console团队是第一个确定客户对WSL有需求的团队。当他们深入客户调研时,一次又一次地听到人们希望在Windows上有类似Bash的东西。最终团队意识到:既然可以让Bash本身在Windows上运行,为什么还要开发类似Bash的东西呢?
其实为Linux创建Windows子系统并不容易做到。团队需要对Windows内核有深入的了解,还要研究一项微软名为Pico process的技术。恰好有趣的是,Pico process也是在Linux上实现SQL Server的技术。简单的说,WSL使Linux编译的二进制文件在Windows NT内核上运行成为可能,而无需重新编译应用程序或使用虚拟机。
Ubuntu是WSL中第一个可用的Linux版本。开始我们联系了Canonical公司的开发人员,看看他们是否愿意提供帮助。他们对这个WSL想法很有热情,后来Ubuntu可以在Windows商店(Windows Store)中使用。在Windows商店中存在多种Linux版本的应用(至少有六种),是不是觉得很有趣,你见过多少自家的应用商店有其他操作系统?
我们编写的代码是兼容Linux的内核系统调用(syscall),将Linux进程与底层Windows内核连接起来。Linux中大约有340个系统调用,问题是先实现哪个系统调用?与所有操作系统版本一样,新的系统调用会与新的操作系统版本一起添加,但是为了保持向后兼容性,不会删除旧的调用。当初涌现了一波syscall浪潮,WSL团队也开始深入理解syscall用户需要什么。
要实现什么样的syscalls,首先要了解哪些人会使用它。Build公告的主要目的是希望人们使用WSL并提供反馈。任何人都可以通过Windows内部程序获得WSL。也许你认为只有Windows爱好者才会对内部程序感兴趣,但现在有超过1000万的订阅者,他们对各种各样的东西都感兴趣,比如游戏、蓝牙和WSL。
对Windows中运行Bash感兴趣的还有Web开发人员,他们试图构建运行在Linux服务器上的Web应用程序,可采用一系列Bash命令。此外,如果您查找构建Web应用程序的帮助,比如Stack Overflow,其大多数示例代码只运行在Linux上——而你正在Windows机器上进行开发,这让人感到很无奈。对于Web开发人员来说,只好迁移到Mac和macOS上,在那里运行代码。
在WSL进入Windows的初期,一位积极的WSL用户设法让XEyes作为GUI应用程序运行在WSL和X11上。XEyes所做的就是在屏幕上画一对卡通眼睛,跟着鼠标指针转。在成功演示时,所有的社交媒体都沸腾了!
我们想了很多收集用户反馈的方法。曾为WSL建立了一个UserVoice站点,上面已经收集了数百个想法和数千次投票。考虑到WSL的首批受众是Web开发人员,所以觉得GitHub很有作用。但是WSL并不是一个开源项目——在开源的GitHub上放置一个非开源项目似乎很奇怪。最后我们决定在GitHub上创建一个专门反馈和讨论相关问题的论坛,至今我们已经收到了关于WSL的数千个问题。
在 WSL GitHub repo 上会提交成千上万的问题,而WSL团队会审查每一个问题,通过分析和评估,然后决定要做什么。如果需要编写新代码来实现某个特性或修复某个问题,那么会将任务添加到WSL项目计划中,开发周期可以短至几周。
这样,人们所希望的WSL功能或遇到的问题通过UserVoice或GitHub得到了有效快速的解决,构建WSL社群也是整个项目创建过程的关键部分。
当我作为WSL的项目经理时,我的目标是让WSL超越beta版。人们抱怨最多的是兼容性和性能。在我看来这些问题提得很好,这恰恰说明他们在认真使用我们的产品,因为在产品初期我们可能只关心系统一些大的方面。所以,为了让人们用WSL做得更多、更快,我们还有很多工作要做。
随着WSL功能的扩展和完善,我们将WSL带向其他开发系统及其开发人员——而不仅局限于Microsoft生态系统的开发。当我们参加PyCon和OSCON这样的活动时,那里的开发人员看到微软员工时都很惊讶。当我们告诉他们在微软开发工具上运行Linux时,他们都表示怀疑。然后我当场演示了SQL Server、WSL和Visual Studio代码。
为了打消他们的疑虑,我让他们自己试一试。当这些开发人员开始运行他们自己的命令、脚本和代码时,总是反应激动:“等等,这实际上是Linux。你是怎么做到的?我怎么会不知道呢? 这很酷。”
针对有关WSL兼容性和性能的抱怨,我们已经在一个新版本中解决了这个问题——WSL 2。它在Windows中提供了Linux内核并将性能提升了20x。今天,WSL已经经过了beta测试并升级到了版本2。你可以在公告博客上了解更多。
我还与微软的其他团队合作,希望WSL能与其他产品很好的结合。例如Visual Studio Code,它是JavaScript和Node.js中最流行的文本编辑器。使用Visual Studio代码的开发人员可以从WSL中获益良多。主要的优势在于使运行在WSL中的Node.js代码调试变得更容易。开发人员可以在运行WSL的Windows计算机上编写Linux版本的Node.js并进行调试。
当我们为Node.js提供这样的功能时,C++、Python和其他语言也有类似的需求。我开始对这种集成非常着迷,这为Linux开发带来了全新的体验。我现在着手c++代码的Visual Studio远程开发,我们会在今年的PyCon上线WSL的c++扩展功能。
尽管我在微软工作的时间不长,但我为Linux开发工具感到兴奋——从数据库到操作系统再到 IDES。我愿意继续传播对Linux的热爱,并创建让全世界的开发人员都感到满意的工具。
原文:https://medium.com/microsoft-open-source-stories/when-linux-came-to-windows-204cf9abb3d6
声明:本文为CSDN翻译,转载请注明来源出处。
下面给大家推荐程序人生的好朋友——CSDN。
CSDNID:CSDNnews
专业的中文 IT 技术社区,与千万技术人共成长。
成就一亿技术人,成为技术人交流和成长的家园。
中国专业 IT 社区 CSDN (Chinese Software Developer Network) 创立于 1999 年,致力于为中国软件开发者提供知识传播、在线学习、职业发展等全生命周期服务。
长按下方二维码关注 CSDN ,一手开发资讯,每日为你精心推送。
长按二维码识别即可关注
热 文推 荐
☞Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!
☞ 从爱立信退出世界 500 强,看 20 年 IT 行业变迁
☞ 如果诸葛亮是程序员 | 每日趣闻
☞Zend 创始人欲创建 PHP 方言,暂名为 P++;鸿蒙 OS 面世;中国首个开源协议诞生 | 开发者周刊
☞主链100强榜单出炉, XRP竟与比特币比肩; 以太坊每周产生1248种新代币 | 数据周榜
☞Docker,一个傲娇的男人
☞AI“生死”落地:谁有资格入选AI Top 30+案例?
☞最前沿:堪比E=mc2,Al-GA才是实现AGI的指标性方法论?
☞边看边用!这本 Python 3.6 的书火爆了 IT 圈!
相关资讯
最新热门应用
非小号交易平台官网安卓版
其它软件292.97MB
下载币交易所地址
其它软件274.98M
下载iotx交易所app
其它软件14.54 MB
下载zt交易所安卓最新版
其它软件273.2 MB
下载币拓交易所bittok
其它软件288.1 MB
下载u币交易所平台app
其它软件292.97MB
下载热币全球交易所app官网版
其它软件287.27 MB
下载多比交易平台app
其它软件28.28MB
下载币赢交易所app官网安卓版
其它软件14.78MB
下载toncoin币交易所安卓版
其它软件48MB
下载