写点什么

Windows 将在新一代 WSL 中提供完整的 Linux 内核支持

2019 年 5 月 17 日

Windows将在新一代WSL中提供完整的Linux内核支持

近年来,微软令 Linux 开发者社区中的很多用户感到了惊喜。这些惊喜包括在 windows 商店上架诸如 windows 版本的Bash shellwindows10中原生的OpenSSH、甚至 Ubuntu、SUSE Linux 以及 Fedora 之类的产品。如今,微软则计划直接在 windows10 中提供完整的 Linux 内核支持。


微软项目经理 Jack Hammon 在其最新的博文中提到: “从今夏的 Windows insider builds 开始,我们将采用内部定制的 Linux 内核来为 Windows 下的 Linux 子系统提供支持(Windows Subsystem for Linux,WSL)。该内核最初将以 Linux 最新的长期稳定发行版 4.19 为基础,随后再根据新版本的设计进行更新,以确保 WSL 内核能够获取最新版 Linux 的特点和最佳性能。”


这次的 WSL 更新对微软来说是一项重大转变,标志着 Linux 内核首次成为 windows 系统的一部分。该 Linux 内核的整合工作将于今年晚些时候在代号为 19H2 的 windows10 更新中完成,这也意味着,用户将无须再通过手动管理便可获得最新的安全修复以及内核改进。除此之外,新一代的 WSL 将因此拥有更高的处理效率:例如在相同解压任务中,WSL 2 可以实现 20 倍速于 WSL 1,达到 Git clone 大约 5 倍的速度。


而对于开发者而言,此次更新将极大地改进 Windows 下 Linux 子系统的表现。同时,微软于五月 6 号发布了新的windows命令行终端,作为访问诸如 PowerShell Cmd 以及 Linux 子系统等开发环境的关键途径。全新的 windows 终端与新一代 WSL 使得 Windows 开发变得更加友好且具有吸引力。


WSL 的转变

“Linux”通常用来指代 Linux 内核以及相关的 GNU 用户空间。相较于初代 WSL1,新版本的 WSL2 也不会提供任何用户空间二进制文件。微软内核将与用户所选择的用户空间直接交互。从Windows应用商店可以直接下载安装 WSL,也可以通过创建自定义Linux发行版包进行“侧载”。其中,有一个小的初始化脚本是唯一的例外,它被添加到引导过程,以完成 Windows 和 LInux 之间的连接,这使得 Windows 的 Linux 子系统非常具有魔力。


新版 WSL 的内核本身最初将基于 4.19 版本,这是 Linux 最新的长期稳定版本。 内核将在指定新的长期稳定版本时进行重新定位,以确保 WSL 内核始终具有最新的 Linux 优点。


除了来自于 Kernel.org 的 LTS 源,WSL2 中还添加了很多本地补丁。这些补丁通过缩短启动时间,减少内存暂用以及最小化受支持设备集的规模,调整生成的二进制文件,以利于其在 WLS2 中的使用。最终,微软提供了一种小巧、轻量级的内核,这个内核是专门为 WSL2 构建的,它类似于 WSL1 设计中的仿真体系结构的直接替代品。


代码上行

微软聘用了越来越多的 Linux 贡献者,他们将业界领先的 Linux 技术引入公司。 多年来,在 Azure Marktplace 提供的大量发行版中,这些 Linux 开发人员已经使微软能够很好地支持新的平台特性。


Jack Hammon 认为“微软 Linux 的一个重要理念是所有更改都在上游。 这是因为维护下游补丁增加了复杂性,这并不是开源社区的标准做法。在利用 Linux 的过程中,我们承诺成为一个好的社区公民并回馈我们所做的改变。”


但是,在开发期间,必须使用本地修补程序来启用新功能或解决上游问题。 在这些情况下,微软会创建或找到满足产品需求的补丁,然后与社区合作以尽快集成该代码。 为了保护 LTS 分支的稳定性,某些补丁(例如新功能)可能只包含在内核的未来版本中,而不是直接利用后端移植添加到当前的 LTS 版本。


当 WSL 被实际部署时,除了长期稳定源之外,它还包含指向一组补丁的链接。 随着时间的推移,微软希望这个列表会缩小,因为当微软添加新的本地补丁以支持 WSL 的新特性时,补丁使其上行并增长。


安全性

WSL 内核将使用微软一流的 CI / CD 系统构建,并通过 Windows Update 在对用户透明的操作中提供服务。 内核将会与稳定版本的新特性同步更新和修复。 为了确保源的出处,微软本地制作了镜像存储库。 同时通过不断监控 Linux 安全邮件列表,并与多家 CVE 数据库公司合作,以确保微软的内核具有最新的修复和缓解措施。


Linux 的一大优点是其稳定且向后兼容的系统调用接口。 这将使微软能够将 Linux 内核的最新稳定分支发布到所有版本的 WSL2。 Jack Hammon 表示他们将会在建立新 LTS 并对其进行充分验证后对内核进行变基(rebase)。


开源性

为 WSL2 提供的内核将是完全开源的! 随着 WSL2 在Windows insider builds的发行,自定义内核的教程将在 Github 上同步发布,以保证开发者有创建自己的 WSL 内核以及提交修改的能力。 同时,微软表示他们将与有兴趣帮助改进上游的开发人员合作。


英文原文链接:Microsoft will ship a full Linux kernel in Windows 10


2019 年 5 月 17 日 12:1112563

评论

发布
暂无评论
发现更多内容

架构师训练营第一课学习笔记

杰语

你不知道的 Proxy

阿宝哥

JavaScript Proxy web api

管理者如何应对员工离职

石云升

离职 28天写作 职场经验 管理经验 3月日更

Wireshark数据包分析学习笔记Day22

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

作为后端开发人员应该懂的TCP、HTTP、Socket、Socket连接池,一文详解丨Linux后端开发

Linux服务器开发

TCP socket HTTP 后端开发 Linux服务器开发

坚持输出文字

lenka

3月日更

聊聊LiteOS中生成的Bin、HEX、ELF三种文件格式

华为云开发者社区

编译器 LiteOS Bin HEX ELF

要求输出事故报告,线上日志文件却不见了!!

陈皮的JavaLib

Java 运维 日志框架

2021最新整理Java面试合集(1000道附答案解析)

比伯

Java 编程 架构 面试 程序人生

设计与思考,关于资源和生命周期(二)

程序员架构进阶

设计实践 生命周期 28天写作 3月日更 池化技术

Python基础之:Python中的IO

程序那些事

Python 人工智能 数据分析 程序那些事

JVM疑难情况分析

秋天

jvm调优

Python OpenCV 图像缩放 cv2.resize 方法

梦想橡皮擦

3月日更

初识Golang之函数及方法的多返回值

Kylin

3月日更

风暴眼中的“以太坊”堪比堵车的北京东三环,NA公链(Nirvana)NAC公链对垒胜算几何?

区块链第一资讯

区块链

另类数据:投资中的怪咖

博文视点Broadview

Java后端开发面试题之MySQL上篇(含答案)

北游学Java

Java MySQL 面试

发展数字经济要因地制宜

CECBC区块链专委会

数字经济

智能化软件开发微访谈·第十六期:低代码/无代码开发

吴盛

低代码 快速开发 sql 无代码开发

Redis - 替换策略:LRU和LFU

insight

redis 3月日更

17张图带你搞懂ZooKeeper一致性原理!

Java小咖秀

程序员 TCP udp 传输协议

寻找被遗忘的勇气(二十五)

Changing Lin

3月日更

9种常用便捷的Java异常处理方法,帮你脱身繁琐

北游学Java

Java 异常 异常检测 异常处理

21天吃透这套字节面试题后,我成功跳槽进了字节,税后25K

互联网架构师小马

Java 数据结构 面试 算法

35岁了,还不知道,TCP为什么会粘包?【硬核图解】

9號

TCP 网络 协议栈 TCP/IP 网络层

金三银四了!必知必会,HTTP面试题!漫画图解超硬核!

9號

面试 网络编程 网络 HTTP 网络层

这个 29.7 K 的剪贴板 JS 库有点东西!

阿宝哥

JavaScript 开源项目 源码解析

JSP中Vue.js的使用受限

空城机

vue.js 前端 前端开发 jsp

为什么很多工程师不了解Serverless

云原生

Serverless 云原生 Knative

常见Http响应码

风翱

3月日更 http响应码

聊一聊 Vue 3 双向绑定是如何工作的

阿宝哥

Vue Vue 3

Windows将在新一代WSL中提供完整的Linux内核支持-InfoQ