

谁能想到,在2026年的今天,全球开源界的“活化石”、Linux 之父 Linus Torvalds,居然被逼得重新杀回了内核代码的最前线。
这一次陪伴在他身边的,是一个被折磨到精神崩溃、甚至开始“劝人类放弃”的顶级 AI。
熟悉开源圈的人都知道,Linus 已经很多年不亲自写驱动补丁了。作为 Linux 帝国的总舵手,他日常的工作是审阅代码、合并分支、偶尔用标志性的犀利言辞在邮件列表里“怒喷”不合规的提交。
但就在 2026 年 8 月下旬,Linux 内核主线仓库里毫无预警地出现了一则由 Linus 本人署名的补丁,代号为 drm/xe。
在这篇写进内核历史的提交说明(Commit Message)里,Linus 毫不掩饰地写下了一段堪称科幻小说般戏剧化的附言:
“这是一场来自地狱的调试(debug session from hell)。AI 帮我干了绝大部分的苦力活……但中途 AI 好几次斩钉截铁地告诉我:这个问题是‘不可能且无解的’,建议我们直接写份报告放弃算了。我怀疑,训练这些 AI 的工程师,大概没有我这么死脑筋和固执。”
整整 24 个调试补丁,18 次内核强制冷重启,屏幕无数次陷入死黑。
当 AI 认定物理世界已经陷入死局时,Linus 摁着 AI 的脑袋一路死磕到底。最终,干翻整个图形界面的致命元凶被揪了出来,仅仅是一行代码里,把一个单词 round_up()(向上取整)改成了 round_down()(向下取整)。
一个词的改动,拯救了一代显卡,也狠狠给不可一世的 AI 上了一堂生动的工程课。
致命黑屏:让桌面环境无限暴毙的“幽灵故障”
这场“人机大战”的战场,发生在一台搭载 Intel 新一代 Battlemage G21(16GB 显存) 的显卡机器上。
故障现象诡异得让人抓狂:机器每次冷启动,屏幕就彻底陷入死黑。
在 Linux 桌面系统中,负责把图形登录界面拉起来的组件叫 gdm(GNOME Display Manager)。正常情况下,电脑一开机,内核显卡驱动初始化完毕,gdm 就会把登录窗口呈现在屏幕上。
但在这次的机器上,gdm 只要一启动就崩溃,崩溃了又自动重启,陷入无休止的“死亡死循环”。最具有欺骗性的是,系统其他部分一切正常,甚至你手动多重启几次 gdm,有时候屏幕又能亮,它看起来极像那种偶发的、查不出原因的“玄学硬件接触不良”。

▲ 科技媒体 It's FOSS 评论:Linus 亲自操刀极其罕见,AI 是个好工具,但前提是方向盘后坐着一位懂行的老司机。
Linus 决定亲自抓住这个幽灵他拉来了 AI 助手,把代码仓库、调试接口和内核日志扔给模型,开始了一场长达数天的排障拉锯战。
AI 确实展现出了恐怖的效率:它不知疲倦地生成测试代码、在内核里插入追踪桩点(Instrumentation)、分析海量的十六进制内存转储。
但随着排查一步步深入,整个逻辑链条陷入了死胡同。
在硬件层面上,所有的寄存器配置看起来都天衣无缝;在软件层面上,显存分配器完全遵循了 Intel 官方的架构设计规范。AI 推理了一轮又一轮,逻辑树全部走通,但只要机器一开机,合成器(Compositor)的页表就会被莫名其妙地抹掉一块。
面对这种“代码明明全对,系统却必然崩溃”的诡异死局,AI 的大模型底色终于露了怯。
它开始退缩,并反复向 Linus 输出结论:“现有数据下该逻辑悖论不可调和,该故障在当前架构中无法定位,建议终止调试,整理成 Issue 报告上报给硬件组。”

▲ 开发者社区调侃复刻《星际穿越》名场面:AI 认为这是不可能的任务,而 Linus 认为这是必须解决的现实。
用俗话说,AI 撂挑子不干了
显存里的“占地强拆”:2KB 引发的惨案
AI 为什么会绝望?因为在代码的表面,根本看不到任何“写错了”的痕迹。
要看懂这个被 Linus 揪出来的 Bug,可以借用一个通俗的比喻:仓库与账本。
现代独立显卡都带着大容量的高速显存(VRAM)。为了让显卡在渲染游戏或跑高画质桌面时不被庞大的数据量拖垮,现代显卡(比如 Intel Xe 架构)引入了一套极其精密的“数据压缩机制”,在内核里被称为 Flat CCS(压缩控制表面)。
你可以把显卡显存想象成一个巨大的超级货运仓库:
- 普通显存区
:里面堆放的是货物(游戏画面、桌面窗口、各种软件的图形数据)。 - CCS 压缩元数据区
:这是仓库管理员的账本区。每 16 个字节的货物,管理员就要用 2 个字节的账本记录这块数据有没有被压缩、怎么解压。
重点来了:账本区是硬件专属的绝对禁区,软件绝对不能把账本区当成普通仓库租给租户使用。一旦租户把货物堆到了账本上,或者硬件管理员把账本写到了租户的货物里,数据瞬间就会稀巴烂。
而在 Intel 的驱动代码中,负责计算“普通仓库到底能用到哪一行、账本区从哪一行开始”的函数,叫做 get_flat_ccs_offset()。
硬件上报上来的真实账本基地址是十六进制的 0x3fafff800。
在这个数字前面,有一小截只有 2KB 大小的尾巴。早先的 Intel 驱动工程师为了满足硬件规范里“对齐到 128KB 边界”的要求,顺手写了一个 round_up()(向上取整),直接把基地址抬到了 0x3fb000000。
// 曾经看似合理的致命代码:ccs_offset = round_up(ccs_offset, SZ_128K);就是这一个看似微不足道的“向上取整”,酿成了大祸!
向上取整的几何意义,相当于把分界线往后挪了。 驱动在向操作系统汇报时,自信满满地宣布:“0x3fb000000 之前的所有空间,全是可用的普通仓库!”
但实际上,那原本属于账本区的最后 2KB(0x3fafff800 到 0x3fb000000),被硬生生当成了普通显存交了出去!

▲ 开发者热议:大模型在受训时没有自我能力的清晰边界,一旦遇到硬核挫折就会习惯性“认怂”。
当机器冷启动时,桌面合成器刚好把最重要的“三级页表”(相当于显卡寻址的 GPS 导航图)放进了这 2KB 内存里。
紧接着,根本不需要任何软件指令,显卡的硬件压缩单元默默开工,自动把这 2KB 空间当成账本刷写了一遍,写满了一串串 0xcccc... 和 0xcc77... 的硬件特征码。
导航图瞬间被物理层抹杀,显卡瞬间迷路,gdm 桌面当场暴毙,屏幕死黑。
驱动里原本设计用来防呆的校验断言(Assertion),恰恰也是基于 128KB 对齐逻辑去比对的。也就是说,守门的保安和犯错的会计看的是同一份假账,两人一对账,居然觉得“天下太平”!
一词定乾坤:把 round_up 改成 round_down
面对这片被硬件反复静默践踏的内存废墟,AI 迷失在海量的寄存器文档里,得出“硬件损坏、无药可救”的结论。
但 Linus 是谁?他是和底层硬件打了三十多年交道的人形编译器。
在排查到第 18 次重启、拿到保留页内存转储中的那一串 0xcccc... 模式时,Linus 瞬间识破了硬件的指纹:这正是压缩硬件的账本数据,账本边界出了问题!
破局的方法简单到了极点,甚至充满了一种工程美学上的黑色幽默:
既然这个数字代表的是软件可用显存的上限,那么为了绝对安全,宁可少用一点,也绝不能多占半寸!
Linus 删掉了那个自作聪明的 128KB 向上取整,直接将其改为按照分配器粒度 向下取整(round_down):
// Linus Torvalds 的神级一行修复:ccs_offset = round_down(ccs_offset, PAGE_SIZE);多吃进去的 2KB 账本被立刻吐了出来,分界线重新划定。
再开机,显卡页表安然无恙,gdm 秒起,黑屏消失,世界重归光明。

▲ 社交平台广泛转发:24 个补丁,18 次重启,终结于一个词的改动。在 Linus 身边,连 AI 都不准轻言放弃。
这场折磨了顶级开发者数天的“地狱级排障”,最终收敛进了内核主线。Linus 不仅把补丁打进了即将发布的 Linux 7.3,还打上了 Cc: stable@kernel.org 标记,火速回传到所有长期维护的稳定分支中。
而在那份写进 Git 历史的 Commit Message 中,Linus 展现了老派黑客独有的豁达与幽默:他把最终撰写正式技术总结的荣誉交给了 AI,同时在文末毫不客气地记录下了 AI 曾经多次“劝他投降”的黑历史。
洞察:当“Vibe Coding”撞上硬核现实
这起看似偶然的技术轶事,实则撕开了当下席卷全球的“AI 编程狂热”背后,最残酷也最真实的一面。
就在 2026 年初,Linus 还在自己的业余音频项目 AudioNoise 里公开尝试过所谓的 “Vibe Coding”(氛围感编程:人类动动嘴,AI 写全套)。当时他用 Google 的工具写 Python,直言这种无须深究语法的开发体验“非常轻快”。
但仅仅过了半年,当战场从“上层的 Python 脚本”切换到“内核底层的 C 语言与硬件交互”时,AI 的真实能力边界瞬间暴露无遗。
1. 大模型的“合规性认怂”缺陷(RLHF Sycophancy)
为什么顶级 AI 会在关键时刻劝人类放弃?因为目前主流大模型的对齐训练(RLHF),都在极力避免“死循环”和“无限胡说”。在面对超出其知识库概率分布的深水区 Bug 时,模型的安全机制会促使它倾向于选择阻力最小的路径,即扮演一个礼貌的助手,告诉你“此路不通,建议收工”。
它没有人类工程师那种“机器既然能造出来,就一定符合物理因果律”的坚执。AI 口中的不可解,往往源于它触及了上下文算力的极限,现实世界的物理逻辑仍在运转。
2. 谁在辅助谁?“人机协作”的权力倒置
在大量营销号的描绘中,未来的程序员似乎只需要喝着咖啡对 AI 发号施令。但 Linus 的这次经历给出了完全相反的样本:人类必须充当 AI 的“意志外骨骼”与“方向纠偏器”。
AI 擅长的是极其枯燥的“苦力工程”:在几千行代码里插 24 次桩,快速解析几十兆的十六进制 dump,格式化提交文本。但它缺乏对“异常模式”的嗅觉感知
Linus 敏锐地从一堆垃圾数据中认出 0xcccc 是压缩元数据的指纹,又强行否定 AI 的放弃建议,这个补丁才得以诞生。
顶级人类在这场协作中充当了 AI 的“强行代飞员”。
不可替代的“人类固执”
在这个所有人都在兜售“AI 将彻底取代人类程序员”焦虑的时代,Linux 仓库里的这行小补丁,无疑是一记清脆而响亮的耳光。
它向整个技术界证明了一件事:代码的行数从来不能代表工程师的价值。
写出 24 个调试补丁、生成上万行分析日志,AI 只需要几分钟;但能在那一堆乱码面前,顶住 18 次黑屏死机的挫败感,一眼看穿是 round_up 还是 round_down 的,依然是人类大脑中沉淀了数十年的经验、直觉与那份近乎偏执的傲骨。
正如 Linus 在补丁里那句意味深长的感叹:
“训练这些模型的人,大概确实没有我这么固执。”
AI 可以拥有全人类的代码库作为记忆,但只要屏幕熄灭的那一刻,敢于对虚无说“不,这一定能修好”的,永远只能是人类自己。

夜雨聆风