情怀党崩不住了!历时9年,微软正式开源WSL!

360影视 动漫周边 2025-05-21 08:29 2

摘要:而且,这也是 WSL 官方仓库自2016 年诞生以来,最早提出的那个 Issue(Will this be open source?)的完美收官。

就很突然,今天凌晨,微软其实做了一件让整个 IT 界兴奋到“抖三抖”的大事!

起初,先是微软 WSL 产品经理 Craig Loewen 在 X 账号发了一则开源帖子:Windows Linux 子系统 WSL 已经彻底开源!

紧接着,一个小时后,微软正式官宣:Windows Subsystem for Linux(WSL)开源了!

是的,你没看错,WSL!就是那个曾让你在 Windows 上丝滑跑 Linux 的神器!

微软真的是磨磨叽叽了 9 年,今天终于咬牙把核心代码放到了 GitHub 上了!

这也就意味着,以后各位不仅能用,还能参与开发、提 PR、添新功能!

而且,这也是 WSL 官方仓库自2016 年诞生以来,最早提出的那个 Issue(Will this be open source?)的完美收官。

这个消息出来,迅速吸引了上百万 X 用户的的围观,同时在 HackerNews上高达900多条评论。

可以说一下点燃了数不胜数的朋友的回忆情怀!甚至有网友发生了错觉:

“我靠,之前居然不是开源的吗?不过现在开源了,也不错!”

许多网友对于微软的开源传统可以说相当的自信:“开源开得彻底、又肯花时间和成本去持续维护。反正我没意见!”

个别网友表示担心:我感觉是不是开源之后,微软反而会更少更新了?很快得到了另一名网友的回应:不会!像 C# 从 2014 年开源以来,微软照样在维护和更新,甚至文档和代码清理得更好了。可能更新节奏会稍慢一点,毕竟要兼顾社区,但完全谈不上‘放弃’。”

由于年代久远,先来简单科普下,WSL 究竟是个什么“催人回忆杀”的东西。

其实,WSL 就是一组分布式组件,部分跑在 Windows 里,部分跑在虚拟机中的 Linux 子系统里。至于 WSL 为什么这么有感召力?那是因为:可以这样说,要是没有 WSL,相信 Linux 生态至少还要在黑暗中前行 50 年!

没错,WSL 就是引导无数前辈大牛从 Windows 转向 Linux 开发的良药!不妨看下 WSL & Windows 子系统的小历史~

首先是远古时期:NT 多人格系统。1993年,微软搞了个 Windows NT,牛逼之处在于内核本身跟 Win95/98 完全不一样,它是个类Unix的多子系统内核。设计理念:一个内核跑多个“人格层(Personality Subsystem)”,比如:

Win32 子系统 给 Windows 程序跑POSIX 子系统 给 UNIX 程序跑OS/2 子系统 给 OS/2 程序跑

结果是,Win32 一统江湖,POSIX子系统基本没人用。

然后就到了 Interix/SUA 时代:第一代 UNIX 兼容层。彼时,微软搞了个 INTerix,整合进 Windows 2000 和 Server 里,提供相对好一点的 UNIX 环境,但体验依然很残缺,开发者用得少。

紧接着,高光时刻来了!2016年,微软在当年的 Build 大会上推出 WSL 1,直接把 Linux 系统调用转译成 Windows NT 系统调用,不用虚拟机,性能还行,但兼容性差。其中,开发者反馈的最大痛点是:

git、gcc 跑着慢mmap 行为和 Linux 差别太大,导致大量程序崩溃

不快不慢,微软继续发力,顺势推出了 WSL 2。2019年,微软推 WSL 2,彻底改方案:直接用 Linux 内核——核心是Hyper-V 虚拟机,运行一个精简版 Linux 内核。

这样的好在于,启动快,兼容性好,Docker / Kubernetes 都能跑。但缺点也很明显:

文件系统 IO 较慢网络桥接麻烦

再然后的故事线可以说就来到了现代,可以说是微软疯狂将 WSL疯狂剥离 Windows镜像的 4 年。

2021 年:WSL 从 Windows 镜像里剥离,发布 Store 独立版,首个版本 0.47.1,支持 Windows 112022 年 11 月:WSL 1.0.0 发布,正式支持 Windows 10/112023-2024:不断更新,加入 GPU 加速、GUI 支持、systemd,迁移至新版包,在迭代过程中,WSL 迎来了又一个重要版本 —— WSL 2.0.0,带来了镜像网络、DNS 隧道、Session 0、代理、防火墙支持等重大改进。(这里就连官方人员都做了有趣的调侃:“计算机科学三大难题: off-by-one 错误、命名、还有缓存失效。”)2024 年 Windows 11 24H2:全面默认使用新 WSL 包,wsl.exe 变成启动下载器

目前 WSL 已更新到 2.5.7,四年时间,GitHub release 页都翻了 9 页。

而今天的这次开源,意味着微软旗下的开发节奏将演变成全球开发者的加速度!更多社区开发者能参与到核心代码里来。

为什么说会是“回忆杀”呢?不妨看看那些“大叔感”超标的老大哥是如何描述自己的“爷青回”的——

一位名为 jjcm 的网友曾把 WSL 奉为引导自己从 Windows 转向 Linux 开发的“救世主”:

当年 WSL 刚出来的时候我简直激动坏了!终于能在 Windows 上搞个“真·Linux Shell”了!我平时用 Windows 打游戏,正好想把开发和游戏都放在同一台机子上,感觉这玩意就是救世主。

不过用着用着,发现小毛病越来越多:有些包不太好用,系统和 WSL 之间各种边界问题,操作起来总觉得哪哪有点别扭。

jjcm 表示,现在索性甩开了 Windows + WSL 的游戏开发模式,直接用 Linux 了!“ Valve 那边疯狂推进 Proton,再加上 Linux 玩游戏的体验越来越像样,我索性直接换成 Ubuntu 和 NixOS 了。虽说现在玩游戏的那一端开始有点小问题,但开发那边舒服太多。

Linux 上的东西进步飞快,现在开发环境好用到让我呼吸顺畅,甚至我觉得整体体验已经甩开 Windows + WSL 了——虽然有些 3A 大作还是跑不了,但瑕不掩瑜。

”还有一位情怀党的大牛,对此表示兴奋不已:“我太懂了,当年 WSL1 刚出来我超级激动!还记得 NT 刚发布那会,主打的是能跑各种‘人格层’(Personality),什么 OS/2 啊、POSIX 啊、Win32 啊,一个系统打天下。

”另一网友 dbdoskey 则总结得非常有代表性:

其实如果当年 WSL1 真搞定了,那绝对能算是微软历史上最离谱又牛逼的操作之一。

想想看,NT 内核里那个早就被人遗忘、当年 90 年代为了打天下硬塞进去的小功能,结果近 30 年后突然被翻出来,继续跟 Unix 阵营杠,简直像《星战》里卢卡斯说的:“历史总是押韵的”。

那为什么 WSL 的气候最后没有大成呢?

网友 pjmlp 着实来了一波“点醒梦中人”的回忆杀:子系统的思路很长江,但实在是性能太感人了!

“其实那个年代,搞子系统的设计思路在微型计算机和大型机上挺常见的,微软这事儿也不是原创。

我敢说啊,要是当年 Windows NT 里的 POSIX 子系统能靠谱点,我当年根本不会折腾 Slackware 2.0 的安装盘。”

为什么这个思路很常见?另一位网友解释道:其实 WSL 1 当初的设计思路,跟“Windows on NT”差不多,想靠模拟内核的方式让 Linux 跑在 NT 内核上。但功能砍了太多,最后干脆放弃了,直接上了个基于容器的虚拟机(WSL 2)。

“我本来还挺希望 NT 版的能成事的,但说实话,这事确实太复杂了。”

时来天地皆同力,运去英雄不自由。WSL 当时诞生的目的就是在操作系统竞争时代分得一杯羹,但微软谋了事,功成却在天!

正如一位网友所总结的:用 Windows 跑 Unix 那套,实在不搭,远不如 直接用 Linux!

“说到底,WSL1 最大的问题是,Windows 的核心 API,比如 CreateProcess 之类,和 NTFS 的文件系统,跑 Unix 那套玩法实在太慢了。你要是在 WSL1 里用 git,或者编译点啥,那速度感人,远不如直接用 Linux 本机或者开虚拟机。”

虽然大家现在都已经用惯了 Linux,但 WSL 的内核开源也许正在重新搅动开源系统的“一池春水”。

众所周知,没有社区,就没有今天的 Linux。同理,开源后的 WSL,或许即将被更多社区开发者赋予第二次生命。

正如微软在官方博文中所披露的:要知道,这几年来,社区大神们不仅在没有源码的情况下,硬是靠逆向分析、Bug 跟踪、功能建议,帮 WSL 变成了现在这个样子。

而现在,源码放出来了,未来的可能性就更多了。

历时总是押韵的,如今的 Linux 也在遭遇“中年甚至老年”危机,而 WSL 的开源则种下了一颗逆袭的种子。其实 Windows 的铁甲依然在:

首先,Windows 现在有两个很大的优势,一个是不强制设备厂商 GPL,另一个是驱动 API 一直稳定,更新内核不用改驱动。就这两点稳住了硬件厂商和开发者。

其次,常年不懈地维护迭代在个人开发者中的影响不容小觑。这一点可以从Hackernews上一位“死忠党”的用户评论得以印证:

“说实话 WSL2 现在也超级棒,我真希望整个 Windows 都改用 Linux 内核,直接全家桶 bash 起飞。我一直对 PowerShell 无感,bash/sh/dash/ash 这种就很好用了。”

写到这里,文章就结束了。最后,留给各位读者发挥:你认为微软这波的开源操作,是为什么呢?是否也有过WSL开发的“当年”呢?

来源:51CTO一点号

相关推荐