【CSDN 编者按】微软在开源道路上不断前进,甚至在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翻译,转载请注明来源出处。

【END】

为什么世界高校都在教Python,这篇报告告诉你!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

微软员工揭秘 Windows 的 Linux 子系统研发全过程相关推荐

  1. 微软员工揭秘 Linux 子系统研发全过程

    (给程序员的那些事加星标) 转自:编译:CSDN-风车云马,英文作者:Tara Raj 2016年8月,我从弗吉尼亚大学计算机科学与技术专业毕业后加入微软,在微软的整个职业生涯都在为Linux开发工具 ...

  2. linux子系统使用rstudio,Windows 10 Linux子系统 (wsl)学习手记

    微软在Windows10 1607版中提供了一个Linux子系统,用户不需要虚拟机就可以直接运行Linux命令,是一个对开发者非常方便的功能.目前服务器领域基本都是Linux的天下,但是在个人桌面领域 ...

  3. windows下linux子系统(Ubuntu)配置(基础配置+zsh)

    昨日突发奇想,想试试windows下的linux系统.这个特性出来很久了,正好我最近要系统了解一下linux,云服务器上要跑其他的东西怕给整炸了,唯一的linux虚拟机安装的是kali(总不能拿kal ...

  4. 通过微软商店软件安装kali Linux子系统及图形界面

    通过微软商店软件安装kali Linux子系统及图形界面 开启windows的wsl功能: 这里引用一位博主大佬的文章: (https://blog.csdn.net/qq_36512792/arti ...

  5. Windows官方Linux子系统C/C++开发环境搭建

    关于利用 Windows 10 适用于 Linux 的 Windows 子系统 (WSL) 安装 Linux 在 Windows 平台直接运行而不依赖虚拟机并通过 Visual Studio Code ...

  6. 关系户?Windows 的 Linux 子系统引入最新版本的 Ubuntu。。。

    点关注公众号,回复"1024"获取2TB学习资源! ‍ 文 | 罗奇奇 出品 | OSC开源社区(ID:oschina2013) ‍ Canonical 在博客中宣布在 Windo ...

  7. Windows下Linux子系统的安装与使用 wsl

    感受 跳槽两月有余,已缓缓度过"阵痛期",慢慢步入正轨,同时也意识到了自身技术方面的落后,没有赶上技术潮流,要加油了自己... 犹记初入新公司第一天安装windows的linux子 ...

  8. Windows下装linux子系统

    1. 打开"适用于linux的windows子系统"功能 控制面板→程序→启用或关闭windows功能 找到"适用于linux的windows子系统"并打钩 如 ...

  9. windows安装linux子系统,并装在其他系统盘的方法

    一:打开Windows子系统 由于现在网上的安装方法都是装在C盘,且执行lxrun /install /y安装的过程会出现"lxrun' 不是内部或外部命令,也不是可运行的程序 或批处理文件 ...

最新文章

  1. 离用户近一点,再近一点
  2. FreeRTOS的中断优先级配置小结
  3. 程序员幽默:工作群里常见表情的真正含义……
  4. leetcode hot100(第二部分) + python(c++)
  5. 在Ubuntu中搭建.NET开发环境
  6. mac升级10.12后,安全和隐私中没有了安装任何来源的选项的解决办法
  7. 手撕Vue-Router
  8. ip变更会影响账号登陆吗_代理IP的匿名度级别会影响自身稳定性吗
  9. WebX RPC说明
  10. 阿特拉斯atlas扭矩枪 USB通讯教程基于MTCOM
  11. android按键录制,按键录制(FRep Finger Replayer)
  12. firebox 浏览器查看cookie的方法
  13. Ebox 的OS定制
  14. base64模块在python2与python3中的区别
  15. Android Paint的使用详解
  16. 安森美python25K NOIP1SN025K成像采集电路设计
  17. JavaWeb源码项目蔬菜网上商城+后台管理系统
  18. 电路与模拟电子技术----正弦交流电路(上)
  19. 学Windows编程的好书
  20. Dynamic Parallelism

热门文章

  1. SQL Server插入geography、geometry和c_hierarchyid类型数据
  2. 《Linux编程》上机作业 ·005【进程管理与通信】
  3. 【金融】【python】处理表格(*.xlsx)形式的期货数据
  4. 数据结构实验之数组一:矩阵转置
  5. python如何爬虫股票数据_自学python之爬虫3股票数据爬虫
  6. 剑指offer之删除链表中重复的结点
  7. redis set 超时_redis分布式锁3种实现方式对比分析总结
  8. 动态加载子节点_省市区递归嵌套子流程动态选择实现
  9. cuda安装和卸载(ubuntu)
  10. 火山引擎张鑫解读云原生2021:K8s 开先河、技能全栈、业务“无感”