1991年Linux诞生时,486芯片还是主流配置。34年后,这段代码终于要进档案馆了。
从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?
Torvalds在2022年第一次公开讨论这事时就表态:「我真的不认为486级硬件还有相关性。」他承认有人还在运行486系统,但强调「从内核开发角度看,它们不重要」。
这个判断有数据支撑。内核崩溃报告系统、邮件列表求助、商业支持请求——所有能量化「用户基数」的渠道里,486的身影几乎消失。工业控制领域或许还有零星存量,但那些场景通常锁定特定内核版本,不求新功能。
Molnar的补丁说明里有个细节:「非常非常少的人」(very very few people)。连用两个very,说明他找过数据,只是没公开具体数字。
这种模糊处理很典型。Linux内核维护者不会为了「仪式感」砍掉功能,但也不会为了「情怀」无限期背负技术债。386支持在2012年移除前,同样经历了数年的「功能性死亡」——代码还在,但没人测试、没人修复、没人保证能用。
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主板吗?如果开机,它现在跑的是哪个版本的内核?
热门跟贴