第90期 | 驱动没有稳定接口,是故意还是无奈?
上一期数了驱动有多大:内核一半以上是驱动。这一期换一个问法——这么大的一块,为什么没有一张长期有效的“门禁卡”?换了内核版本,树外的驱动常常要重编、要打补丁、要等厂商跟进。这到底是设计上的疏忽,还是有意为之?
一、没有稳定接口,是故意为之
先把两个“接口”分开。内核对用户态的接口,也就是系统调用,是极稳的,几十年前的程序今天还能跑;不稳的,是内核内部的接口——驱动调用内核函数的那一层。Greg Kroah-Hartman 在内核文档里把话说得很直:Linux 没有二进制内核接口,也没有稳定的内核接口¹。你以为自己想要的是一张稳定的接口,其实你真正想要的,是一个能稳定跑起来的驱动,而这只有驱动进了主线树才能得到¹。
道理藏在“谁来改”三个字里。接口一改,树里的驱动由改接口的人顺手一起改好;树外的驱动,改接口的人看不见,账全落在原作者一个人头上。文档里原话的意思是:给每个内核版本、每个发行版各发一份二进制驱动,是噩梦;追着不断变化的接口跑,也是苦差¹。更深一层:没人用的接口删不掉,就会一直占着地方、没人测试;接口能变,内核才能把死接口清掉、把活接口测透。稳定接口听起来省事,冻住的代价是演进停下来,死代码越背越重。
借 Anderson 一句话来照这件事²:系统的性质,不是要素性质的总和。驱动在不在树里,表面看是代码放在哪,实际是组织方式变了没有。树里的驱动共享同一套审查、测试、修复网络,一个人改接口,几千人帮着验;树外的驱动再写得好,也只是一个人扛着一座孤岛。这层差别,代码行数看不出来,组织方式看得出来。
二、AI 的驱动,先问它住在哪棵树
2026 年 10 月 21 日的一篇上游进展,正好是这条老规矩的新证据。Arm Mali-G610 的 Tyr 驱动,是把已有的 C 语言 Panthor 驱动原样移植成 Rust,目标是对用户态完全透明³。2025 年 11 月随 6.18 进树的只是一个桩子:能探测、绑定、上电、问硬件信息、关机;一年后,随 7.3 合入的提交终于让它把 GPU 的微控制器跑起来,背后是 GEM 共享内存、页表管理、GPUVM 三套抽象先到位³。Rust 的安全收益,没有靠另起一棵树拿到,而是靠在树里把抽象一层层补齐。
同一方向上,上一期讲过的 Nova 也在从树外往树里走:长期目标是取代英伟达自家的 Open RM 树外模块。两条线合起来,2026 年的驱动故事不是“谁的驱动更新”,而是“驱动往哪棵树搬”。10 月 27 日,Greg Kroah-Hartman 在布拉格开源峰会的访谈纪要里提到,AI 与模糊匹配工具正在内核里找到 bug,大多是小问题,也有少数零日⁴。树里意味着,这些发现会顺着同一棵树流到驱动作者手里;树外意味着,厂商得自己再搭一套发现与修复的管线。
10 月 3 日还有一组数字可以对照:同一天,Greg 一口气签发了 7.2.9、6.18.55、6.12.112、6.6.158、6.1.189、5.15.222、5.10.271 七个稳定版⁵。一个修复,可以同时沿着七条树往下走,这就是树里驱动免费搭到的便车。树外驱动搭不上这班车,内核一升级,它先要问自己能不能编过去。
言外之物也在这里。对原生 AI 操作系统,驱动问题先不是“支不支持某块加速卡”,而是“这块卡的能力住在哪棵树上”。加速卡驱动若长期住在树外,模型栈就继承了厂商的升级节奏:安全补丁慢一拍,内核升级就被卡一拍,算力的话语权也就留在了厂商手里。固件那一层还在,树里树外之分挪不动固件的边界,但至少把驱动这一层的账摊到了公共树上。线性系统调用进来,要在驱动里翻成向量阵列的活,翻译的关口越重,关口在谁手里就越要紧。
接口一改,树里的驱动由改接口的人顺手改好;树外的驱动,只能等原作者一个人追。程序绘制概念示意图。
三、先查驱动是树里还是树外
手边任何一台 Linux 机器,不用升级内核,也能先把自家的风险图画出来:
lsmod
modinfo -F filename <驱动名>
dkms status
第一条看载入了哪些驱动;第二条看这个驱动文件住在哪:路径在 kernel/drivers/ 下面,多半是树里驱动;落在 updates/dkms/ 或厂商自己的目录里,就是树外驱动;第三条直接列出 DKMS 在管的树外模块。挑显卡或网卡各做一次,记下来:树里几个,树外几个,哪几个是机器一升级就先要被问到的。最近就有现成的提醒:XanMod 在 7.2.12 与 6.18.58 的发布说明里,特意让用户先核对 NVIDIA、VMware 这类专有 DKMS 模块再升级⁶。
落到日常的四种活,同一张风险图有四种读法。一台跑本地模型的机器上,显卡驱动多半是树外模块,内核升级前先问驱动能不能跟上,比升级完再查日志省事;边缘盒上,不少板级驱动来自厂商的板级支持包,内核版本常常因此被钉住,升级的代价要先算进工期;视频 AI 平台里,采集与编解码驱动若在树外,平台升级就要跟着厂商的节奏走;企业私有智能中心里,企业一侧不直接碰驱动,但每一次“模型跑不动了”的报修,查到根上,先分一句是树里还是树外,再决定该等上游、等厂商,还是自己动手。
觉 然 小 注
接口会变,不是系统不讲信用,恰恰是它还在生长。住进树里,不是交出代码,是交出孤岛——改接口的人替你改,测出问题的人替你报。一次驱动跟不上新内核,看着是麻烦,落到实处却逼人看清:依赖到底在谁手里。看清了,往下走才有底气。
引 用 与 出 处
- [1] Kroah-Hartman, G. The Linux Kernel Driver Interface. Linux 内核文档 Documentation/process/stable-api-nonsense.rst. https://kernel.googlesource.com/pub/scm/linux/kernel/git/sre/linux-misc/+/2bebc3cd48701607e38e8258ab9692de9b1a718b/Documentation/process/stable-api-nonsense.rst
- [2] Anderson, P. W. More is Different: Broken Symmetry and the Nature of the Hierarchical Structure of Science. Science, 1972. (思想化用)
- [3] Upstreaming Tyr: Rust, DRM, and the Linux Kernel. Vuink, 2026-10-21. https://vuink.com/post/pbyynoben-d-dpbz/news-and-blog/blog/2026/10/21/upstreaming-tyr-rust-drm-and-the-linux-kernel
- [4] Greg Kroah-Hartman: Inside the stable kernel. Udienza, 2026-10-27. https://www.udienza.com/episodes/greg-kroah-hartman
- [5] Linux Kernel Drops Seven Stable Releases in One Day for All Security Fixes: 7.2.9 Through 5.10.271. Linux Compatible, 2026-10-03. https://www.linuxcompatible.org/story/linux-kernel-drops-seven-stable-releases-in-one-day-for-all-security-fixes-729-through-510271/
- [6] XanMod Releases Linux 7.2.12 and 6.18.58 Kernels for x86-64. Linux Compatible, 2026-10-21. https://www.linuxcompatible.org/story/xanmod-releases-linux-7212-and-61858-kernels-for-x8664/
· · ·