作者 | Hector Martin 编译 | ChatGPT、苏宓 出品 | CSDN(ID:CSDNnews)
还记得 2020 年,苹果推出首款自研芯片 M1,不仅带来了强劲的性能提升,也让许多开发者对其底层架构产生了浓厚兴趣。然而,M1 采用的封闭生态让 Linux 运行变得更加困难,甚至连 Linux 之父 Linus Torvalds 都曾吐槽“苹果正朝着让 Linux 运行更不方便的方向发展”。
就在这时,一位名为 Hector Martin 的开发者站了出来,决定挑战在 M1 Mac 上运行 Linux。于是,他发起了 Asahi Linux(https://www.patreon.com/marcan),目标是让 M1 Mac 用户真正拥抱 Linux,并通过众筹的方式启动开发。
令人意想不到的是,仅仅两年后的 2022 年 4 月,M1 Mac 便能顺利运行原生 Linux。随后这一项目也扩展到 M2 机型。Hector Martin 回顾这些成就时总结道:“虽然还有一些硬件功能尚未支持,但整体使用体验已经能和大多数 x86 笔记本媲美,甚至更好。而且,这一切都是我们自己摸索出来的,没有任何厂商支持,也没有官方文档。这个项目几乎是不可能完成的,但我们做到了。”
然而,时间来到 2025 年,距离项目创立已过去 5 年,Hector Martin 先辞去了
Apple ARM 支持的上游维护者职务
,如今更是发长文正式宣布
辞去 Asahi Linux 负责人的职务
。
长文中,Hector Martin 心酸地称,自己在将 Rust 代码合入 Linux 内核的过程中遭遇了层层阻碍,而作为 Linux 的掌舵者 Linus Torvalds 采取了“放任自流”的态度,未能给予明确支持;此外,他还发现,内核社区的一些成员“表里不一”,当面一套背后一套;以及开源项目起步之后,获得的资金支持越来越少,反而需求越来越多,整日被催更的巨大压力让他对继续维护 Asahi Linux 逐渐失去了信心。
现如今,尽管 Hector Martin 表示他将交棒给社区里面的贡献者继续维护 Asahi Linux 项目,但随着核心开发者的退出,不少人对其未来发展产生了疑问。尤其是 M3/M4 芯片上何时能运行 Linux?这个问题,如今变得更加不确定。
接下来,我们将通过 Hector Martin 的长文了解事情的前因后果。
以下为 Hector Martin 发表的长文:
满心欢喜想要挑战一把“在 Mac 上运行 Linux”
最初在 2000 年代末,我是 Wii 自制软件社区的重要贡献者。当时,我开发了一些软件(如今人们称之为“越狱”),让用户可以在任天堂 Wii 上运行自己的非官方应用程序。
一直以来,我对工作充满热情,也很喜欢我所在的团队(Team Twiizers,后来成为 fail0verflow)。然而,时间久了,我还是觉得累了,主要原因是大量用户的过度索取。大多数使用我们软件的人只是想玩盗版游戏(这是我们既不支持、也不认可、也没有直接促成的)。我们一直在与制造商玩猫捉老鼠的游戏,努力让这个平台保持开放,但结果却发现我们的努力主要被那些只想窃取他人劳动成果的人利用,而且他们还大声宣称自己有权这样做。一段时间之后,这种状况实在让人厌倦。随着更新一代的游戏主机发布,我后来只是为了兴趣而专注于 Linux 移植,不再尝试建立社区,也不再研究那些最终会被盗版玩家利用的越狱或漏洞。
当苹果发布 M1 芯片时,我意识到让它跑 Linux 是我的梦想项目。这个项目的技术挑战和我以前折腾游戏机自制软件(homebrew)时遇到的很像,甚至更难。但这次的平台本身是开放的,不需要越狱,也不用担心那些想盗版软件的用户闹事。而且,相比在 PS4 上跑 Linux,在 M1 上跑 Linux 的意义要大得多。
从 0 到 1 大获成功后,问题接踵而至
于是,我启动了 Asahi Linux 项目,得到了大量支持和捐款。令人惊讶的是,在我发布号召的几天内,项目就有了足够的支持,可以正式开干。前两年进展非常顺利,我们从零开始,把 M1 打造成了 Linux 体验最流畅的笔记本之一。虽然还有一些硬件功能没支持,但整体使用体验已经能和大多数 x86 笔记本媲美,甚至更好。而且,这一切都是我们自己摸索出来的,没有任何厂商支持,也没有官方文档。这个项目几乎是不可能完成的,但我们做到了。
过了一段时间,后来事情就没那么有趣了。首先是把代码合并到 Linux 内核的难题——这个问题我之前已经吐槽过很多次,这里就不重复了。简单来说,我们的代码涉及 Linux 内核的几乎每个子系统,碰到了各种类型的驱动,甚至还改动了一些通用代码,这让整个过程变得异常痛苦。
然后,就是那些“理所当然”的用户。这次他们不是为了玩盗版游戏,而是对功能有各种要求。“什么时候支持 Thunderbolt?”、“USB-C 接显示器不行,Asahi 对我来说毫无用处”、“相比 macOS,续航太差了”(但从来没人拿它和 x86 笔记本比)、“连 CPU 温度都查不了?”(是的,我真的收到过这种抱怨)......
当然,还有那句经典问题:“M3/M4 什么时候支持?”
即使在我们发布稳定版很久以后,仍然有人说 Asahi Linux,尤其是 Fedora Asahi Remix 是“alpha 版”、“不稳定”、“不能作为主力系统”(尽管有成千上万的用户,包括我自己,都在日常使用它,甚至用于服务器)。
无论我们做了多少努力,攻克了多少“不可能”的难题,用户总是想要更多,而且永远不满足。同时,捐款和资助也在不断减少,从项目启动以来就一直在下降。虽然短期内这不会让我的全职开发计划破灭,但也足够让我怀疑,这一切是否真的被珍惜过。最离谱的是,捐款的最高峰竟然是在项目刚启动的前一两个月。仿佛我们做得越多,支持反而越少了。
我知道自己有可能会被工作压垮,所以通过控制投入某些领域的时间(比如内核上游合并)来避免过度消耗。这种方法之前效果还不错,也基本能维持下去。
项目进度放缓,开发者个人备受压力
然后 2024 年就到来了。去年的经历对我来说非常动荡,主要是一些个人原因,这里就不细说了。简单来说,我大部分时间都在奔波,同时还要应对一些网络骚扰者和跟踪狂的攻击,他们不仅针对我,还波及我的家人,而且到现在还没停。
尽管如此,2024 年我还是取得了一些进展,但整体上让我陷入了很被动的状态。我没能完成太多 Asahi 相关的工作,而用户对新功能和设备支持的需求却越来越大。
我们虽然推出了符合标准的 Vulkan 驱动,以及完整的 x86-64 游戏和应用模拟运行方案,但 DP Alt Mode 仍然没能实现(这个功能涉及复杂的逆向工程、调试和内核底层改动,如果要做得完善稳定,可能需要对某些内核子系统进行大规模重构,甚至干脆新建一个子系统)。
今年年初,我开始慢慢恢复工作,但压力很大,也很愧疚,因为去年几乎没能推进多少进度。完整的 DP Alt Mode 仍然遥遥无期,但我们计划在年初一两个月内先推出一个简化版,支持每台设备上的特定 Type-C 端口。Sven 在去年 12 月对 PHY 代码做了一些改进,于是我接手,把涉及的三个驱动硬生生捣鼓到能基本稳定运行的程度。虽然这不是最理想的方案,但考虑到要避免和内核社区再来一轮无休止的争论(我确实试着在邮件列表上提过,但几乎没人回应),这是当时能做到的最好结果了。
Rust、C 的语言之争成为导火索
Rust for Linux 这个项目在成为 Linux 官方内核的一部分时遇到了很多问题,这些问题已经被详细记录过了,这里就不重复说了。简单来说,我认为,
L
inus 在 Rust 进内核这件事上的处理方式是一次严重的领导失误。
像这样的大项目,必须得到主要维护者的大力支持才能存活,但 Linus 的做法却像是在“放任自流,看看会发生什么”。与此同时,很多比 Linus 级别低的子系统维护者一直在故意拖延甚至阻挠这个项目,有些人还发表了带有侮辱性的言论,严重打击了开发者的士气,但却没有受到任何惩罚。其中,一位重要的 Rust for Linux 维护者几个月前已经辞职了。
这件事本身就很重要,
因为 Asahi Linux 选择 Rust for Linux 并不是为了好玩,也不仅仅是因为 Rust 更安全,而是因为 Rust 让 Apple GPU 驱动能够在短时间内成功开发出来。
目前,Asahi Linux 的代码里已经有两个 Rust 编写的驱动,第三个驱动也正在从 C 语言改写成 Rust,因为 Rust 更适合解决他们面临的特殊问题,而原来的 C 版本已经变得越来越难维护。顺便说一句,新的 Nvidia GPU Nova 驱动程序也正是用 Rust 编写的——现代硬件的复杂度越来越高,需要更合适的现代编程语言。
有些人可能会觉得,Rust for Linux 这件事完全可以慢慢来,再拖个几年,先自己维护好下游的代码就行。但问题是,
这种局面现在就在影响开发者的士气
。而且,Apple GPU 驱动本身就是 Rust for Linux 完全可行的重要证据(它是第一个完全用 Rust 写的 Linux 内核驱动,并且带动了 Rust 相关的内核抽象层开发)。如果不积极推动 Rust for Linux 进入官方内核,可能会被认为是“没兴趣”,从而影响整个项目的生存机会。但问题还不止这些……
事实上,Linux 内核的开发模式本质上是鼓励把代码合并到官方版本(上游)里,并且不太支持维护独立的修改版本(下游分支)。如果有人不在乎上游,硬着头皮维护一个完全独立的分支,理论上是可以的,但长期来看这行不通——比如很多安卓厂商的内核分支,通常两年左右就没人管了。
Asahi Linux 的下游版本是基于最新的官方内核不断更新的,这意味着他们每多加一个额外的补丁,我们后续的维护工作量就会增加,有时候甚至会变得很麻烦。但问题不止于此:
这个限制带来的一个实际问题是:用户无法在容器环境下使用 GPU 加速,比如 Docker、Podman,甚至 Waydroid(让 Android 运行在 Linux 上的项目)。因为标准的容器镜像使用的是官方 Mesa 版本,而这个版本和 Asahi Linux 的 GPU 驱动不兼容。Flatpak 这种软件打包方式有个部分解决方案,但其他容器系统都没办法。
总之,由于 Linux 内核上游的合并过程太难,Asahi Linux 现在的用户体验受到了很大影响。
我不是那种看到不公正现象就袖手旁观的人,所以当另一个长期维护者滥用职权企图阻碍 R4L 并阻止上游进程时,我站出来发声了。而他的回应(
这已被广泛报道
)是让我最终崩溃的最后一根稻草。
我辞去了作为 Apple ARM 支持的上游维护者的职务,因为我不想再与这个社区打交道。
后来在那个帖子中,另一位主要的维护者居然一本正经的说:“我们就是那条‘蓝线’”(通常指警察称为社会秩序的最后防线)。但没人对此表示异议,这让我更坚定了不想再和他们有任何关系的想法。而且,这个人之前还逼走了一位 Rust for Linux 的维护者。
但事情远不止于公开的那些事情。在随后的几天里,我得知内核及其相关领域的一些成员一直在和我玩“双面派”手段,他们假装支持我和 Asahi Linux 项目,但私下里却对我心存怨恨,并关起门来在幕后煽动别人对我的怨气。
没有任何人给我发送任何私人邮件或以其他方式告诉我发生了什么,但一切就是发生了。我听说,其中一位成员还在 Asahi Linux 必须与之互动才能得以生存的多个项目中担任高级职位,他已经站在了那些直接骚扰和伤害过我的人的一方,且至今依旧如此。显然,他们还造谣,称我被某个公司雇佣来做 Asahi 项目(事实上我并没有,我们除了 bunny.net 为我们提供免费的 CDN 信用之外,没有任何企业赞助)。
我理解有些人可能不喜欢我发的 Mastodon(开源社交网络)帖子。是的,我承认自己有时候说话不好听,可能有点刺耳,但我觉得这不是他们中伤我的理由。我无法与那些在幕后拉帮结派、并撒谎掩饰自己真实意图的人合作。我无法与那些将责任归咎于消息传递者,而说自己清清白白真正有毒的人合作。我无法与那些厌恶公开评论,声称事情应该私下处理,但私下里似乎从未有任何改变的人合作。我无法与那些在社交媒体上批评别人,并且在邮件列表上用成千上万的订阅者公开羞辱别人的人合作。我无法与那些在公开场合使用政治敏感和歧视性语言却没有任何后果的人合作。我无法跟那些一边说“问题包在我身上,一切都很顺利”,但另一边却眼睁睁看着重要的支持者和维护者纷纷辞职,同时还有各种人私下跟我说“他们再也不想碰 Linux 内核”的人一起共事。
当 Apple 发布 M1 时,Linus Torvalds 曾在接受采访时表示:
如果它能运行 Linux,我绝对会想要一台。
我在大约十年前用过的一款 11 英寸 MacBook Air(我想是 4,1),当时还挺有好感的。但后来我放弃了它,因为苹果花了太长时间才修复屏幕——等他们修好时,我已经换上了更好的笔记本,而苹果也逐渐让 Linux 变得不那么方便了。
...
我一直在等待一款能够运行 Linux 的 ARM 笔记本电脑。除了操作系统之外,新款 Air 几乎完美无缺。我没有时间去摆弄它,也没有意愿去与那些不愿意提供帮助的公司抗争。
Linus 希望它能运行 Linux,但当时并不抱太大希望。
最终,我们实现了,而且 Linux 5.19 版本还是从一台运行 Asahi Linux 的 M2 MacBook Air 上发布的。
我本希望 Linus 的热情能转化为对我们社区的支持,并帮助我们解决上游问题。遗憾的是,这并没有发生。2023 年 11 月,我曾邀请他讨论内核贡献和维护的挑战,并看看我们能提供什么帮助,但他从未回复。
2011 年,Con Kolivas 默默地离开了 Linux 内核社区。他是一名澳大利亚人,白天是麻醉师,业余时间是一名 Linux 内核开发者,他为 Linux Kernel 编写的补丁(CK)给很多人留下了深刻印象,堪称最后一位伟大的 Linux 内核业余黑客。在此后的几年里,Linux 社区情况似乎变得更加糟糕。如今,如果你不是受雇于一家公司,要想在 Linux 内核上游或跨子系统做出显著贡献,几乎是不可能生存下来的。Linux 最初是一个业余爱好者项目,但它已经彻底失去了可容纳“业余爱好者”的根基。
多重压力下,开发者决定退出项目
当我
开始构建 Asahi Linux 项目
时,这项工作几乎霸占了我整个生活。为此,我放弃了自己大部分业余爱好(毕竟,当时想着这工作才是我梦想中的爱好),并且花费了远超过全职的时间来做这个项目。
那时候每天都觉得有趣,但现在一切都变了,我个人有一台 M3 Pro 的设备放在盒子里至今还没有开机,我不敢也不想做设备启动工作,因为上面的种种,感觉一切都不值得了!
我怀念曾经那些可以放松的空闲时光,不需要为还没发布的各种功能而感到焦虑;我怀念那些做音乐的时间;我也怀念当初可以参加即兴演奏会;我还怀念和朋友、家人一起吃饭的相聚时间,而不必担心我们还没有完成的事情;我同样怀念能够放松坐下来玩游戏或看电影而不感到内疚的时间......