Linux Kernel 6y系列主要发布记录
2023-11-20 21:04:28 阿炯

上接《Linux Kernel 6x系列主要发布记录》。

Linux Kernel 6.6 确认成为 LTS 版本

Greg Kroah-Hartman 已经于2023年11月20日宣布 Linux Kernel 6.6 版本为长期支持 (LTS) 版本;支持期限到 2026 年 12 月。

6.6 版本的内核于 2023 年 10 月 29 日正式发布,是一次包含了新功能、硬件支持、安全增强和性能改进的重大更新。具体包括有:引入了 EEVDF scheduler,最终实现了对 Intel Shadow Stack 的支持,为 Nouveau DRM 驱动程序添加了 Mesa NVK Vulkan 驱动程序所需的 user-space API,继续支持即将到来的 Intel 和 AMD 平台,以及大量的其他驱动程序改进和一些不错的性能优化等。


一般来说,年度 LTS 内核往往是该日历年的最后一个稳定内核版本。Linux 6.6 于十月底发布,Linux 6.7 预计可能会在 2023 年的最后几天或者 2024 年年初达到稳定。但考虑到 6.7 版本规模较大,且年末的假期往往会放慢测试和 bug 修复的速度,导致相关周期拖长,因此 6.7 版本大概率还是可能在 2024 年初登陆。

目前 Kernel.org 已更新相关版本信息。Linux 6.6 生命周期将将截止 2026 年 12 月;与此同时,Linux 6.1、5.15 和 5.10 也将于 2026 年 12 月结束生命周期。因此根据当下的政策,Linux 6.6 LTS 将在未来三年内得到维护,不过也有消息称内核开发人员一直在讨论将 LTS 支持期缩短为 2 年。

更多详情可查看此处

联想向 Linux 内核提交补丁,为最新款 ThinkPad 优化性能

联想于2023年11月下旬提交了一个 Linux 内核驱动程序补丁,专为其最新的 ThinkPad 笔记本电脑构建,目标是优化性能表现 (Ultra-Performance Capability) —— 确保在开启「性能」模式的 ACPI 平台配置下,硬件能够实现最佳 Linux 性能的同时,在平衡和省电模式下保持最佳电源节省。

根据补丁的描述,这项改进性能模式的 ThinkPad ACPI 驱动程序已在 ThinkPad T14 G4 AMD 型号上通过了测试。不过补丁仍在 review 阶段。按照日程进度,它应该会在 v6.8 内核开发周期准备就绪。

Linux 内核放弃支持过时的图形驱动基础设施

Linux 内核团队于2023年11朋下旬准备删除支持旧的和过时的图形驱动程序的基础设施。早在 Linux 6.3 内核中就已经移除了许多旧版的 DRM 驱动程序,现在的补丁进一步删除了支持这些旧的用户空间模式设置图形/显示驱动程序的基础设施。

在 Linux 6.3 内核中,ATI Rage 128、3Dfx、S3 Savage、Intel 810、SiS、VIA 和 Matrox MGA DRM 驱动程序被淘汰。这是为了清除 DRI1 时代过时 GPU 驱动程序的努力的一部分。现在 SUSE 工程师 Thomas Zimmermann 计划进一步删除用户空间模式设置的基础设施。他认为,由于 Linux 6.6 是今年的长期支持版本(LTS)内核。现在是一个很好的时机来删除这个基础设施。如果有人仍在使用这些旧的驱动程序或类似的驱动程序,他们可以继续使用 Linux 6.6 LTS。

Zimmermann 在 dri-devel 上写道:旧的用户空间模式设置驱动程序已经在 Linux v6.3 中被删除。没有人抱怨或要求它们的恢复。现在是时候从 DRM 核心中删除这些驱动程序的基础设施了。

最近的 Linux v6.6 已被指定为长期支持版本,因此任何剩余的用户还有几年时间来购买新的显卡。通过简单的 drm 仍然支持这些旧设备。将适当的驱动程序与内核模式设置合并也是一个选择。

补丁 1 到 7 修复了在删除驱动程序过程中被遗忘的一些微不足道的问题。

补丁 8 和 9 删除了旧的 ioctl 接口。其中一个操作与其他操作不同,因此它有自己的补丁。

补丁 10 到 12 从 DRM 中删除了旧的源代码。随着这些代码的消失,补丁 13 中的 AGP 代码也可以简化。以前有一个用于用户空间模式设置的设备文件 /dev/agpgart,现在已经过时了。

这 14 个补丁在直接渲染管理器子系统中消除了另外 8000 行旧代码。如果没有提出异议,这个旧的用户空间模式设置基础设施的删除可能会在新的一年的 Linux 6.8 内核周期中发生。

这项工作主要是为了清除过时的 GPU 驱动程序,并为用户提供更好的性能和稳定性。对于依赖旧版驱动程序的用户,他们可以继续使用 Linux 6.6 LTS,直到他们准备好升级到支持新的图形驱动程序的版本。

Linux 6.8 将更新 Zstd 代码以获得更好的压缩性能

Linux 6.8 内核计划在2024年升级其 Zstd 代码,以提供更好的压缩性能。在 Linux 6.2 中,内核的 Zstd 压缩/解压缩代码已经根据 Zstd 1.5 的最新状态进行了更新。而在 6.8 内核中,计划升级到 Zstd 1.5.5 版本,这将提供更好的压缩性能。

这次 Zstd 升级对 Linux 内核的动力之一是英特尔希望在 Linux 内核中使用更新的 Zstd 版本,因为它公开了 Zstd 的外部匹配提供程序 API,从而允许 QuickAssist 技术(QAT)加速 LZ 匹配查找阶段。这对于那些拥有 QAT 硬件或将 QAT 加速集成到 Xeon Sapphire Rapids 和即将推出的 Emerald Rapids 处理器的用户来说是个好消息。

除了满足英特尔的需求之外,内核中更新的 Zstd 代码经过测试,发现在写入 + 压缩时间上可以减少约 6%。然而,读取 + 解压缩时间略有增加。Zstd 1.5.5 本身是在今年 4 月发布的,其中包含了一些性能改进、修复和其他变更。目前可以在邮件列表的补丁中找到适用于 Linux 内核的 Zstd 1.5.5 版本,内核维护者计划在 Linux 6.8 合并窗口提交这项工作。

这次 Zstd 代码的升级将为 Linux 内核带来更好的压缩性能,这对于文件系统驱动程序的透明文件系统压缩 / 解压缩、将各种内核资源压缩为 Zstd 格式等方面都是有益的。

Jonathan Corbet 2024 预言

LWN 网站联合创始人兼 Linux 内核维护者 Jonathan Corbet 于2024年1月上旬分享了他对 2024 年的预测,内容包括 Linux 内核社区的变化、企业级 Linux 发行版的市场受到冲击、Firefox 的未来、开源生成式人工智能 (Gen AI) 关注度更高、BPF 大有作为、Python no-GIL 取得成功,以及开源项目维护者面临的危机,等等。

下面简单介绍 Jonathan Corbet 的预测内容。

一、Linux 内核社区开始不再将邮件列表作为其开发流程的核心。这一转变会很缓慢,并且引起许多内核开发者的强烈抵制。但在这个连 Linus 老大都说要做出改变的时代,不可思议的事情很有可能会发生。

二、Linux 6.12 将是下一个长期稳定版内核,预计 2024 年 12 月 1 日发布(除非 Linus 拒绝在美国感恩节假期后立即发布,这种情况下将在一周后推出)。

三、首批用户可见的 Rust 代码最早可能在 Linux 6.8 中合并到内核。这些代码初始阶段应该不会支持许多系统,但它标志着一个重要转变:一旦 Rust 用于用户可见的功能,内核社区将不再可以轻易放弃对该语言的支持。换句话说,将用户可见的 Rust 代码合并到内核中将宣告 Rust 试验取得成功。

四、红帽的企业级 Linux 发行版市场将在 2024 年受到冲击。该市场的控制权此前基本由红帽 RHEL 统治,但随着这一领域的竞争日趋激烈,打造稳定版 Linux 不需要再依赖 RHEL,供应商和用户有许多方法可以从 RHEL 手中夺走部分市场。

五、谷歌在 Chrome 强推 "Manifest V3" 将引起广泛抵制,但如果 Mozilla 今年只是押注人工智能,没有将重心放在 Firefox 上 —— 帮助全世界摆脱浏览器垄断,Firefox 可能再也没有这样的机会来扩大市场份额。

六、开源生成式人工智能 (Gen AI) 在 2024 将受到更广泛关注。部分原因是,在该领域已经有案例证明开源项目比私有项目更具竞争力。而且这些私有平台今年将出现更多关于版权纠纷的事件 —— 从而让更多人将目光转移到开源项目上。

七、对 BPF 而言,今年将是重要的一年。这并不奇怪,因为过去几年也是如此。像可扩展调度程序类这样的项目似乎不会消失。与此同时,思科最近宣布收购 Isovalent,这可能会为 BPF 开发带来新的资源,当然也可能会像许多企业收购一样 —— 毁掉一个重要的 BPF 开发团队。

八、支持自由线程 (no-GIL) 的首个 Python 版本在 10 月发布,并将取得一定的成功。

九、过分追求指标将成为一个更大的问题。这些指标包括: CVE 数量、提交的错误报告、commit 数量、“审查” 的补丁、toots 提升、获得的讨论论坛徽章,等等。

十、开源项目维护者面临的危机在 2024 将会加剧。自由开源软件社区中有许多项目被广泛依赖,但几乎没有得到支持。因此,这些项目往往会面临进展缓慢、背负大量技术债、安全问题等等。此现象并不是新鲜事,对于任何一直关注的人来说,它也不是隐藏的。但从所有迹象来看,重度依赖开源项目的公司在 2024 年并不会为它们提供更多的支持。

Linux Kernel 6.7 正式发布

Linus 于2024年1月上旬在内核邮件列表宣布正式推出 Linux Kernel 6.7。据称此版本是有史以来合并数最多的版本之一,包含 17k+ 个非合并 commit,实际合并的超过 1000 个,主要变化如下:
主线内核已合并实验性 Bcachefs 文件系统
现在默认启用 Intel Meteor Lake 显卡支持
在 x86-64 内核上启用/禁用 32 位模拟的选项
KVM 支持 LoongArch 虚拟化
KVM on RISC-V 支持 Smstateen 扩展
默认启用 Intel Meteor Lake 图形支持,同时还引入了针对 Intel Xe2Lunar Lake 图形的支持
为 Nouveau 开源图形驱动程序新增对 NVIDIA GPU 系统处理器(GSP)固件的支持,从而带来更好的电源管理性能,还包括 Nouveau 设置中的 RTX 40 加速
USB Type-C 驱动现已支持 DP Alt Mode 2.1
AMD Seamless Boot 现适用于更多 AMD 硬件
F2FS 现已支持更大的页面大小
Btrfs 功能增强,例如添加了 FSID(临时文件系统 ID)支持(Valve 希望为 Steam Deck 的  Steam OS 引入这一功能)
AppArmor 访问控制现在可以应用于 io_uring,并支持创建用户命名空间
添加了 Rust 对工作队列的绑定,并升级到 Rust 1.73 工具链
对 perf 工具进行了大量改进和功能更新
移除了古老的 videobuf 层
对 Logitech HID++ 进行了调整
ASUS WMI 驱动增加了对 Screenpad 的支持

Linux Kernel 6.8:网络优化,英特尔Xe GPU驱动,第一个Rust驱动

随着Linux 6.7的发布,v6.8版本在1月中旬开始进入了窗口合并期。来展望一下Linux内核在2024年的工作,主要介绍两个硬件驱动方面的消息,一个是关于网络性能方面,一个是关于Rust驱动的。

并发TCP性能提高

在网络方面除了通常的新有线/无线网络硬件支持和大型Linux网络子系统中的其他常规改动之外,内核还对核心网络代码进行了一些关键改进,这些改进可以在并发的情况下使TCP性能提高约40%。对核心网络结构进行了分析和重组。这项工作的重点是优化缓存行消耗并添加保护措施以确保未来的更改不会倒退。反过来,这种核心网络结构的优化使许多并发连接的TCP性能提高了40%或更多!


这项由于源于谷歌相关人员,他们对网络代码的缓存线优化工作。该补丁系列尝试重新组织核心网络堆栈变量,以最大限度地减少数据传输阶段的缓存行消耗。具体来说,研究了TCP/IP堆栈和TCP中的快速路径定义。

特别是对于AMD EPYC服务器来说,这是一个巨大的改进。感谢谷歌继续推动这些非常诱人的低级内核优化的人们。

英特尔Xe内核GPU驱动程序

Direct Rendering Manager (DRM) 内核图形/显示驱动程序更新包括新的英特尔 "Xe"DRM 和 PowerVR Imagination 驱动程序、实验形式的 AMD 色彩管理属性、Raspberry Pi 5 图形支持等。

除了Xe显卡驱动程序之外,英特尔还引入了对现有软件包的下一代支持,例如英特尔的VC Intrinsics,它已经获得了对英特尔Arrow Lake和Lunar Lake图形架构的支持。这意味着 Xe-LPG+(Arrow Lake/Alchemist)和 Xe2(Lunar Lake/Battlemage)架构已获得该软件项目的支持。

与其他平台相比,英特尔在 Linux 中首次推出 Arc 驱动程序的起步相当缓慢,主要是因为 Team Blue 在提供增强驱动程序功能方面有点晚了。 不过,经过两年的开发,Intel终于将其“改版”的Xe内核显卡驱动提交到了主线内核中。但 Linus Torvalds 最近在合并相关代码时却发现,一些新提交的 Intel Xe 驱动程序代码"严重缺乏"测试。对此他在内核邮件列表中表达了自己的不满:你的测试严重不足。甚至无法构建,原因似乎在于该 commit b49e894c3fd8 ("drm/i915: Replace custom intel runtime_pm tracker with ref_tracker library") 将 "intel_wakeref_t" 类型从 "deep_stack_handle_t" 改为了 "unsigned long"......

真令人不悦。我已经修复了那个损坏的 Xe compat 头文件并完成了构建,但这绝对不是事情的本来应该有的样子。我怎么会遇到这种情况?竟然会没有进行任何构建测试。

为什么 %^!@$% 头文件会包含 C 文件?无论如何,这个错误都不应该发生。与以前的一些 “火爆” 回复相比,Linus 这次的措辞可以说是算的上温和,并且也提出了一些合理的问题。事实上,在 2023 年底的 Linux 基金会的日本开源峰会上,Linus 就表示自己已经收敛了脾气,在吸取了一些教训之后不会再 “对一些公司竖中指”。

但也正如 Phoronix 所言,无论如何 Linus 已经将新代码合并到 Linux 6.8 中。希望这只是 Intel Xe 驱动程序的一个 one-off issue,而没有更大的代码质量问题。

网络驱动支持

Linux 6.8中新的以太网驱动程序硬件支持包括Octeon CN10K设备、Broadcom 5760X P7、Qualcomm SM8550 SoC 和 Texas Instrument DP83TG720S PHY。蓝牙方面,新的驱动程序支持IMC Networks无线蓝牙设备。另外值得注意的是英特尔高速NIC驱动程序增加了对温度和时钟信息报告的支持,以及许多网络驱动程序中的其他随机改进。NVIDIA Mellanox以太网数据中心交换机现在无需重新启动即可享受固件更新。

Linux 6.8中删除了几个过时的WiFi驱动程序。新推出的WiFi支持包括Libertas 16位PCMCIA支持、Atmel at76c50x驱动程序、HostAP ISA/PCMCIA型802.11b驱动程序、zd1201 802.11b USB加密狗、Orinoco ISA/PCMCIA 802.11b驱动程序、Aviator/Raytheon驱动程序、Planet WL3501驱动程序以及RNDIS USB 802.11b驱动程序。

在WiFi协议方面,WiFi7工作仍在进行中,并且还进行了极高吞吐量(EHT) 的改进。

第一个Rus编写的网络PHY驱动程序

自Linux 6.1起,初始的Rust基础设施被添加到Linux内核中。此后为了使内核驱动程序能够用Rust编程语言编写,Linux内核已经合并了许多其他管道和内务管理工作。随着即将到来的Linux 6.8内核周期,第一个Rust网络驱动程序将被引入。最近一个“net-phy-rust”驱动程序被合并到了net-next.git分支。该驱动为phylib Rust绑定,包括了启用Rust编写的PHY驱动程序。AX88796B C驱动程序代码完全用Rust编程语言重写。

Rust ASIX PHY驱动大约135行Rust代码加上各种构建系统位。可以使用Kconfig的“AX88796B_RUST_PHY”选项启用此Rust ASIX PHY驱动程序。AX88796B 驱动程序用于支持X-Surf 100 AX88796B封装中的Asix Electronics PHY。AX88796B是一款100M快速以太网控制器,适用于从HVAC控制到安全系统和其他工业控制系统的嵌入式和工业应用。因此,这不是最令人兴奋的网络硬件(并且该硬件已经得到了C驱动程序的支持),但这个Rust PHY驱动程序是一个开始,并让在接口/绑定上滚动,以实现其他内存安全网络驱动程序将不断完善。

ReiserFS 作者在狱中就被 Linux 内核弃用发表评论

文件系统 ReiserFS 的作者 Hans Reiser 在2024年1月中旬通过信件交流的方式,在 Linux 内核邮件列表上发表了一篇评论。他在信中详细讲述了自己所犯的错误、ReiserFS 的历史、ReiserFS 的废弃以及他对 Reiser4 寄予的希望。

Hans Reiser 因 2006 年谋杀妻子入狱,现被关押在加利福尼亚州的监狱。这封信是他在狱中对 Fredrick R. Brennan 的回信,Fredrick 曾邀请他就从内核中删除 ReiserFS V3 的讨论发表一些看法。目前,这封信的内容已被允许转录并公开再分发。


Hans Reiser 对自己所犯的罪行进行了道歉,并向 ReiserFS 的用户道歉称:“因为我的犯罪和入狱,我没能实现那个梦想,他们也没能看到 Reiser 4 的任何语义改进。”

我不知道 Reiser 5 里有什么 —— 没有人告诉我,我也没资格要求大家不要让那些辛勤工作为用户构建漂亮文件系统的人受我声誉所困。我请你们体谅一下他们的感受。让他们的梦想摆脱我所造成的伤害吧。

在2022年2月的Linux内核社区正在讨论是否要弃用和删除ReiserFS。因为它已经有十多年没有活跃过了,而且在现代内核的生产用例中也不太可能再使用。提出删除 ReiserFS 的开发者表示,他希望改变内核基础设施,但 ReiserFS 的遗留在一定程度上对他的工作造成了阻碍。

目前看来,弃用 ReiserFS 的工作正在推进,但真正从主线内核中删除要等到 2025 年。上周五,SUSE 的 Jan Kara 提交了 v2 补丁,将 ReiserFS 标记为已弃用的文件系统,同时在 Kconfig 和挂载文件系统时发出警告,指出它将被删除。因此,ReiserFS 即将被正式弃用,并会在 2025 年从内核中删除。在现阶段,ReiserFS 与其他现代文件系统如 XFS、EXT4 和 Btrfs 相比,并没有任何明显的优势。

按照计划,用户有三年的时间来迁移到另一个现代文件系统,或者如果他们仍然需要以某种奇怪的方式使用 ReiserFS,可以坚持运行 2025 年前发布的 Linux LTS 内核。

Linus于2024年3月上旬在内核邮件列表宣布正式推出 Linux Kernel 6.8 稳定版。主要变化如下:
LAM/线性地址屏蔽的虚拟化支持
KVM 的 guest 优先内存支持
更新 Bcachefs 文件系统的基本在线文件系统检查和修复机制
对树莓派 5 使用的博通 BCM2712 芯片提供支持
基于 AMD ACPI 的 WiFi 频段 RFI 缓解功能
zswap、CephFS 等功能优化

此外,龙芯 LoongArch 架构在 Linux 6.8 内核已初步支持 Rust。该版本不是 LTS 版本,它的支持周期只有几个月,之后会被 Linux Kernel 6.9 版接替。目前 Linus Torvalds 已经开启了 v6.9 的合并窗口,预计在 2024 年 5 月中旬发布。

v6.9 弃用 ext2 文件系统驱动程序

在即将发布的 6.9 Linux 内核中,ext2 文件系统驱动程序将被标记为已弃用。EXT2(第二代扩展文件系统)是 Linux 内核所用的文件系统,最开始由 Rémy Card 设计用以代替 ext,于 1993 年 1 月加入 Linux 核心支持之中,至今已有30多年的历史。

Linux 开发人员 Michael Opdenacker 解释 ext2 被弃用的主要原因在于,即使文件系统是用 256 字节的 inodes(mkfs.ext2 -I 256)创建的,文件系统驱动程序也会坚持使用 32 位日期。因此驱动程序不支持超过 2038 年 1 月 19 日 03:14:07 UTC 的 inode 时间戳。

对于仍在使用 ext2 及其驱动程序,并且系统日期正确设置为截止日期之前最多 30 年的日期的用户,将收到此警告:
# mount -t ext2 /dev/sda1 /mnt
[  441.680685] ext2 filesystem being mounted at /mnt supports timestamps until 2038-01-19 (ox7fffffff)

由于无法正确支持 2038 年 1 月 19 日之后的时间戳。官方建议 ext2 用户升级到使用 ext4 驱动程序来访问其文件系统,ext4 文件系统驱动程序与 ext2 完全兼容。更多详情可查看此博客