打开网易新闻 查看精彩图片

1991年Linux诞生时,486芯片还是主流配置。34年后,这段代码终于要进档案馆了。

从386到486:Linux的"断代史"

从386到486:Linux的"断代史"

2012年,Linus Torvalds亲手终结了386支持。当时他的理由很直白:「这玩意儿已经是博物馆藏品了,该用博物馆级别的内核。」

13年后的2025年,同样的剧本轮到486。资深内核开发者Ingo Molnar在3月底提交的补丁,把M486、M486SX、MELAN三个配置选项从Kconfig里连根拔掉。这意味着从Linux 7.1开始,你无法再为486级别的芯片编译新内核。

Molnar的补丁说明里写得很清楚:「我们为极少数人使用的远古32位CPU维护着复杂的硬件模拟层,这些兼容胶水有时甚至引发新问题,而修复它们的时间本可以用在别处。」

这段话的潜台词是:维护486支持的成本,已经超过了它存在的价值。

技术债是怎么堆起来的

技术债是怎么堆起来的

486芯片的硬伤在于两条指令缺失。

Time Stamp Counter(时间戳计数器,简称TSC)和CMPXCHG8B(8字节比较交换指令),这两条现代x86-32架构的基础指令,486一个都不支持。为了让新内核能在老芯片上跑,开发者不得不写模拟层、做兼容桥接——相当于给蒸汽机车加装涡轮增压的适配器。

Molnar最初的方案更激进:直接让内核强制依赖这两条指令,不支持就启动失败。这个提议从2024年4月提出后,内核邮件列表吵了将近一年。最终落地的版本温和一些:不强制报错,只是砍掉配置选项,让你根本选不了486目标。

这种妥协很Linux社区——技术上该断的断,但给用户留条后路。你可以继续用7.0及更早版本的内核,只是别指望新功能了。

谁在真的用486跑Linux?

谁在真的用486跑Linux?

Torvalds在2022年第一次公开讨论这事时就表态:「我真的不认为486级硬件还有相关性。」他承认有人还在运行486系统,但强调「从内核开发角度看,它们不重要」。

这个判断有数据支撑。内核崩溃报告系统、邮件列表求助、商业支持请求——所有能量化「用户基数」的渠道里,486的身影几乎消失。工业控制领域或许还有零星存量,但那些场景通常锁定特定内核版本,不求新功能。

Molnar的补丁说明里有个细节:「非常非常少的人」(very very few people)。连用两个very,说明他找过数据,只是没公开具体数字。

这种模糊处理很典型。Linux内核维护者不会为了「仪式感」砍掉功能,但也不会为了「情怀」无限期背负技术债。386支持在2012年移除前,同样经历了数年的「功能性死亡」——代码还在,但没人测试、没人修复、没人保证能用。

7.0是终点,7.1是分水岭

7.0是终点,7.1是分水岭

Linux 7.0的最终版本将在未来几个月发布。这是最后一个「理论上还能配置486支持」的主线内核。7.1的合并窗口已经打开,Molnar的补丁正在队列里等待。

对于收藏复古硬件的玩家,这个消息不算致命。Debian、Slackware等发行版的旧版本仓库依然开放,你可以下载2020年代的内核源码自己编译。只是别指望主线社区帮你适配新硬件、修安全漏洞了。

某种程度上,这是开源软件的优势:代码永远在那里,只是维护责任转移到了用户自己肩上。闭源系统早就一刀切了,而Linux让你选择——要么跟上节奏,要么自己维护分支。

架构清理的连锁反应

架构清理的连锁反应

486支持的移除会简化x86-32代码路径。模拟层删除后,内核体积略微缩小,部分条件分支可以合并,测试矩阵收窄。这些收益单独看都很小,但累积起来就是可维护性的提升。

更值得观察的是信号:如果486可以砍,哪些架构会是下一个?

内核邮件列表里偶尔有人提议清理早期ARMv7支持、某些嵌入式MIPS变体,但都没形成共识。486的特殊之处在于,它是x86家族内部最老的「活着的」成员,它的退场标志着32位x86本身进入暮年。虽然586、686支持暂时安全,但长期来看,x86-64架构的统治地位意味着32位代码的整体重要性在下降。

Molnar在补丁里提到的「兼容胶水引发新问题」,某种程度上也适用于更广泛的遗留代码。每多一层抽象、多一个条件分支,就多一个潜在的bug入口。内核社区近年一直在推「删除无用代码」的运动,486只是最新一块被搬走的石头。

你的抽屉里还躺着486主板吗?如果开机,它现在跑的是哪个版本的内核?