← 回總覽

Linux 7.0 发布:Google 价值 100 万美元的陈年 Bug 终于修复,Rust 正式“转正”

📅 2026-03-12 07:15 dbaplus社群 软件编程 6 分鐘 6826 字 評分: 85
Linux 内核 Rust 后量子加密 io_uring 文件系统
📌 一句话摘要 Linux 7.0 标志着 Rust 正式进入内核核心、后量子加密技术的引入以及 io_uring 安全漏洞的系统性修复,是兼具技术革新与文化转型的重大版本。 📝 详细摘要 本文深度解析了 Linux 7.0 内核发布的里程碑式更新。核心内容涵盖了 Rust 语言结束五年实验期正式成为内核核心组件,尽管这一过程伴随着维护者社区的激烈文化冲突;技术层面,引入了 ML-DSA 算法以应对量子计算威胁,并实现了 XFS 文件系统的在线元数据自愈功能。针对长期困扰安全界的 io_uring 漏洞(曾致 Google 损失百万美元赏金),新版本通过 BPF 过滤提供了系统性解决方案。

70亿台设备,三十五年。Linux 7.0 标志着自 2022 年以来首次主版本号提升,而这次版本更新意义非凡。

Linux 内核是介于硬件和你在计算机上所做一切之间的无形层。它决定了你的手机如何与其屏幕通信,以及 Netflix 如何流式传输到你的电视。

Android 运行在它之上,互联网的大部分也运行在它之上。当内核发生变化时,无论你是否注意到,数十亿设备最终都会感受到这种变化。

Linus Torvalds 确认了版本提升,并以他一贯的风格,将其归结为纯粹的算术问题。"我快被大数字搞糊涂了,"他写道。他说,几乎到了手指脚趾不够数的时候了。

内核从 2.6 到 3.0,从 4.20 到 5.0,从 5.19 到 6.0。现在 6.19 变成了 7.0。没有技术里程碑,没有 API 中断,只是一个数字而已。

但有时,新功能确实与这种象征意义相吻合。仅 Linux 7.0 合并窗口的前半部分就引入了 7,695 个非合并提交。一项为期五年的实验正式结束,抗量子密码技术到来,并且 Linux 内核制定了首个关于 AI 生成代码的书面政策。

我专业从事 Linux 开发工作已超过 20 年,涉足电信、数字健康和深科技成像等多个领域。我见证了众多内核版本的发布。

有些版本很重要,有些则不然。而这个版本很重要。 一、Linux 7.0 历经五年"战争",终将 Rust 变为官方配置

自 1991 年以来,Linux 内核几乎完全用一种叫做 C 的编程语言编写。C 语言功能强大,但也很"苛刻",因为它允许你犯下可能导致系统崩溃、内存损坏或产生安全漏洞的错误。

Rust 是一种较新的语言,旨在精确地防止这类错误。

争论的焦点在于,是否应该强迫那些老派"工匠"去学习新工具。

Linux 内核 7.0 中最大的新闻并非某项具体功能,而是一种文化转变。

在 2025 年于东京举行的内核维护者峰会上,维护者们达成了共识。Rust 负责人 Miguel Ojeda 提交了一个补丁,宣告 Rust 实验结束。信息很明确:内核中的 Rust 不再是试验性的,它现已成为内核的核心组成部分,并将长期存在。

五年了,这就是 Rust 被贴上"试验性"标签的时间长度。在这五年期间,内核的 C 代码增长到约 3400 万行,Rust 贡献了大约 25,000 行。

这个比例告诉我们,Rust 并非要取代 C,它是在补充 C,一次一个谨慎地针对某个子系统进行补充。

围绕这一决定的戏剧性事件是真实存在的。DMA 子系统维护者 Christoph Hellwig 将 Rust 引入核心子系统称为"癌症"(指的是跨语言维护的负担,而非 Rust 本身)。

"别强迫我去处理你那花里胡哨的新语言,"他说。Hellwig 随后辞去了 DMA 维护者职务。

Wedson Almeida Filho,一位微软工程师,也是 Rust for Linux 的关键贡献者,完全退出了该项目,理由是"非技术性的废话"。就在 Rust 成为官方配置的同一周,Rust 工作的联合负责人 Alex Gaynor 也卸任了。

最受尊敬的内核开发者之一 Ted Ts'o 直言不讳:"问题是,你不能强迫我们所有人都去学 Rust。"

Linus Torvalds 介入并捍卫了 Rust 的地位。稳定版内核维护者 Greg Kroah-Hartman 提出了相反的观点:"我们遇到的大多数错误,都是由于 C 语言中那些愚蠢的小边角情况造成的,而这些在 Rust 中完全不存在。"

Android 16 已经包含了 Rust 内核代码(ashmem 分配器),并在数百万台设备上运行。这不再是理论,而是实际生产环境中的应用。

!Image 1: 图片来源:作者,Linux 7.0 Rust 采用时间表(从 2020 年 RFC 到 2026 年官方状态)

Linux 7.0 Rust 采纳时间线(从 2020 年 RFC 到 2026 年成为官方配置) 二、Linux 内核 7.0 中的后量子密码技术

每次你的计算机将驱动程序或软件组件加载到内核时,都会检查其数字签名,以确保它没有被篡改,可以把它想象成信件上的火漆封印。

问题在于,未来的量子计算机可能会伪造这些封印。本节将介绍用新的封印替换旧封印,这种新封印即使是量子计算机也无法伪造。

大多数人多年内都不会注意到这一点,但它将在未来几十年里发挥重要作用,Linux 7.0 为内核模块验证添加了 ML-DSA 签名支持。

ML-DSA 代表基于模块格的数字签名算法。它是 FIPS 204,一个 NIST 批准的标准,之所以被选中,正是因为格数学对于经典计算机和量子计算机来说都很难破解,现在提供了三个安全级别(ML-DSA 44、65 和 87)。

为什么在实际可用的量子计算机还要数年之遥的今天,这很重要?因为存在"现在收集,以后解密"的攻击方式。国家行为体已经在收集加密数据,等待量子计算机来破解它。

使用传统算法签名的内核模块可能会被追溯性地伪造。

可以把这想象成无法被任何撬锁工具打开的锁,即使这些工具目前还不存在。此版本包含了超过 5,000 行验证代码。

在同样的安全主题下,SHA-1 模块签名被移除了。NIST 在 2011 年就已弃用 SHA-1,实际的碰撞攻击也于 2017 年出现。

Linux 7.0 完全移除了该选项。现有的 SHA-1 签名模块暂时仍可加载,但被淘汰已成定局。 三、XFS 自我修复:Linux 7.0 的悄然突破

文件系统是计算机在硬盘上组织文件的方式。没有它,你的照片、文档和应用程序将只是一串毫无意义的 0 和 1。

XFS 是一种在数据中心和大规模存储系统中广泛使用的文件系统。当其内部结构损坏时(由于断电、硬件故障或软件错误),你可能无法访问驱动器上的所有内容。

直到现在,修复损坏意味着需要将系统下线。此更改使得在系统持续运行的同时进行修复成为可能。

XFS,这个大规模存储的主力文件系统,现在获得了自主自我修复的支持。

一个新的 xfs_healer 守护进程监控健康事件,并在文件系统保持挂载状态时自动检测和修复元数据损坏。无需停机,无需人工干预。

校验和在正常操作期间检测损坏,冗余的元数据副本则作为修复源。

想象一下,一辆能在你驾驶时自己修理发动机的汽车。当然,并非所有问题都能解决,因硬件故障导致的用户文件损坏仍然需要你自己处理。

但是,那种可能导致整个文件系统无法挂载的元数据损坏,现在可以被实时发现并修复了。

对于任何运行大型 XFS 部署的人来说(在企业存储中,这涉及到很多人),这是一种悄无声息、切实可行的改进,能真正节省成本。

!Image 2: 图片来源:作者,Linux 内核 7.0 中的 XFS 自主自愈架构

Linux 内核 7.0 中的 XFS 自主自我修复架构 四、io_uring:Linux 7.0 解决的 100 万美元安全问题

每次程序读取文件、发送网络数据或写入磁盘时,它都会通过所谓的"系统调用"请求内核的许可。这些调用是安全的,但速度较慢,就像每次需要去登机口都要经过安检一样。

io_uring 是一条快速通道,可以绕过大部分安全检查点。问题在于,黑客发现这条快速通道没有安装监控摄像头,Google 因此损失了 100 万美元的漏洞赏金。

io_uring 是任何操作系统中速度最快的 I/O 接口之一,但它也是一场安全噩梦。

2022 年,Google 60% 的漏洞奖励 都给了 io_uring 漏洞利用。Google 为 io_uring 漏洞支付了大约 100 万美元的赏金,并在 Chrome OS 上完全禁用了 io_uring。

核心问题:io_uring 绕过了传统的系统调用,这意味着 seccomp(标准的安全过滤器)无法触及它。这就好比有一个严密监控的前门,和一个完全没有监控的后门。

Linux 内核 7.0 为 io_uring 操作增加了基于 BPF 的过滤功能,系统管理员现在可以对 io_uring 应用细粒度的安全策略,而无需完全禁用它。

这样,你既能获得高性能,又能拥有安全控制。这个修复来得太迟了,但对于容器和云工作负载来说,值得等待。

你的团队是否因安全原因禁用了 io_uring?我很好奇有多少生产环境采取了与 Google 相同的做法。 五、Linux 7.0 调度器:更少的模式,更好的性能

调度器是内核的交通管制员。你的计算机同时运行着数百个程序,但处理器一次只能做一件事(每个核心)。调度器决定接下来谁获得处理器使用权,使用多长时间,以及何时中断某个任务。

一个糟糕的调度器会让你的桌面卡顿、视频延迟或游戏掉帧。一个好的调度器能让一切感觉流畅,即使在重负载下也是如此。

在现代架构上,内核调度器将四种抢占模式减少为两种:PREEMPT_LAZY 和 PREEMPT_FULL。

PREEMPT_LAZY 是一个有趣的选项。它是一个"金发姑娘"选项:对普通任务采用宽松的抢占(让它们完成自己的工作),对实时任务采用激进的抢占。想象一个经理,除非有火警,否则他会让员工说完话再打断。

与此同时,一个开发了十年的时间片延长补丁也被合并了。桌面 Linux 用户应该会注意到更流畅的性能,尽管 7.0 的正式基准测试结果尚未公布。

!Image 3: 图片来源:作者,Linux 内核 7.0 功能概述,涵盖安全性、性能和容器

Linux 内核 7.0 功能概览,涵盖安全、性能和容器 六、Linux 7.0 中的容器和文件系统:悄无声息的胜利

容器是一种打包软件的方式,使得软件在任何地方都能以相同方式运行,就像可以装在任意卡车、火车或船上的海运集装箱一样。Netflix、Spotify 和大多数云服务都在使用它们。

一台服务器可能同时运行数百甚至数千个容器,加快容器的启动速度并减少其内存使用,可以直接转化为更低的云账单和更快的应用程序部署。

有两个较小的改动值得关注。

OPEN_TREE_NAMESPACE(由 Christian Brauner 开发)将容器创建速度提升了 40%。基准测试显示,旧的 pivot_root() 方法在 60 秒内创建约 73,000 个容器,而新的 open_tree() 方法在同一时间内创建约 109,000 个。如果你运行的是拥有数百个节点的 Kubernetes,这会直接影响你的 Pod 启动时间。

EROFS 增加了对容器中共享页缓存的支持。现在,不同容器中具有相同内容哈希的文件将共享一个缓存副本。

在容器环境中,镜像通常共享公共层(事实也确实如此),这可以显著减少内存使用。不再是每个容器都打印自己公司的员工手册,而是公共休息室里放着一本共享的副本。

Btrfs 获得了对大型块大小直接 I/O 的支持,这在以前是不可能的。数据库、视频处理和科学计算工作负载将直接受益。 七、Linux 内核 7.0 AI 代码政策:针对 AI 生成代码的规则

Linux 内核由数千名志愿者和公司员工构建,他们提交代码更改("补丁"),然后由其他人在被接受之前进行审查。

随着像 ChatGPT 和 Claude Code 这样的 AI 工具现在能够编写代码,内核社区需要做出决定:AI 可以提交代码吗?如果 AI 编写的代码出问题了,谁负责?

Linux 7.0 包含了关于 AI 编码助手的官方文档,发布在 kernel.org(https://kernel.org/doc/html/next/process/coding-assistants.html)上。规则很明确:

你必须使用 "Assisted-by" 标签声明使用了 AI 帮助。AI 代理绝不能添加 Signed-off-by 标签,因为只有人类才能根据开发者原创证书对代码进行法律认证。该文档本身的编写方式也考虑到了 AI 模型的可读性。

核心原则是:"AI 不会自己发送补丁,发送补丁的是人。"

每个版本的内核接收来自 1,500 到 2,000 名开发者的贡献,涉及 200 到 250 家公司。面对超过 4000 万行代码(十年间翻倍),并且每两个月大约增长 400,000 行,关于 AI 生成代码的问题不可避免。制定一个官方政策既务实又必要。 八、Linux 内核 7.0 版本历史回顾

!Image 4: 图片来源:作者,Linux 内核版本历史和发展

Linux 内核版本历史与增长

与 iPhone 或 Windows 不同,新版本号通常意味着重大重新设计,Linux 内核版本号只是一个计数器,它们在前一个数字变得太大时递增。

并没有"Linux 7.0 发布活动"。内核每两个月静悄悄地发布一个新版本,盒子上的数字只是装饰。

Torvalds 一直坚持认为,从技术上讲,版本号"本质上毫无意义"。无论盒子上的数字是多少,内核大约每九到十周发布一次,重要的是内核内部的东西。

而 Linux 内核 7.0 内部的东西确实意义重大,Rust 从实验品晋升为核心组件,这是一代人的转变,后量子签名让 Linux 在密码学准备方面领先于大多数操作系统。

XFS 自我修复和 io_uring 沙箱化都是实用的、面向生产环境的改进。

通过 Linux 内核 7.0,这个运行在 Android 手机、云服务器、嵌入式系统和超级计算机之上的内核,在安全性、可靠性以及维持由数千人编写的 4000 万行代码所需的管理方面,都取得了显著的进步。

这值得一次版本号提升,即使 Torvalds 说这只是因为脚趾头不够数了。

查看原文 → 發佈: 2026-03-12 07:15:00 收錄: 2026-03-12 10:01:04

🤖 問 AI

針對這篇文章提問,AI 會根據文章內容回答。按 Ctrl+Enter 送出。