Linux 内核是个庞大而复杂的操作系统的核心,犹如人的大脑一样,处理各种各样的请求,一般而言 Linux 内核更新比较频繁,但最近却被 Linus Torvalds 电脑的内存问题绊住了脚。
Linux 6.1 的合并窗口目前处于开启状态。前两天,一位 Linux 内核开发者问Linus Torvalds是否错过了一个合并请求,Linus 表示:“我正在笔记本电脑上进行合并(非常缓慢)。”
看来电脑速度太慢的问题,连 Linus 大神也躲不过。一开始他以为是个新的内核 bug,检查后发现是内存条问题。
到底怎么回事?
Linus 的电脑内存风波
在出现请求合并非常缓慢的问题之后,Linus 做了检测,他发现,“是我的电脑主桌面上用户空间的随机内存损坏,导致了 allmodconfig 构建随机失败,并出现内部编译器错误等”。
一开始,他以为是新的内核 bug 造成的,虽然偶有发生,但这次他的直觉错了。接着,他启动旧内核进行验证,并在夜间使用内存测试软件进行验证,最终确认——在我的电脑稳定运行两年半后,一个 DIMM 内存随机坏了。
后续 Linus 也只能等新的 DIMM 到货更换。他抱怨道:相当多的时间浪费在了错误的事情上。
Linus 的主 PC 是一台搭载了 AMD RyzenThreadripper 3970X CPU 的工作站,由他在新冠疫情早期组装完成。帖子里还提到,他的主 PC 是为纠错码内存(ECC 内存)设置的,这与日常工作有关,因为 Linux(和所有其他软件)可以从 ECC RAM 执行的纠错中受益。
由于新冠疫情早期 ECC 内存条稀缺且昂贵,他为此还公开抱怨英特尔宣称 ECC 内存是为服务器和嵌入式设备服务的,导致一般用户难以购买到便宜的 ECC 内存条。他认为 ECC 适合所有人,很讨厌那些让 ECC 内存“特殊化”的商业行为。
Linux 6.1的最终发布会推迟吗?
目前,Linus 表示电脑的问题不会对合并窗口产生影响,因为他还可以在另一台机器上完成 Linux 6.1 补丁合并工作,但在常用机器上执行合并对他来说更方便。
Linux 6.1 在今年本就备受开发者关注。自 Linux 6.0 正式发布之时就有人预测今年 12 月发布的 6.1 将会成为今年的 LTS (Long Term Support)版本。根据正常的时间表,Linux 6.1-rc1 将于 10 月 16 日发布,而 Linux 6.1 稳定版则可能在 12 月 4 日或 11 日左右发布。除非 Linux 6.1 的开发出现一些意外状况导致无法准时推出,否则 Linux 6.1 将会在今年正式推出。
Linux 稳定维护者 Greg Kroah-Hartman 在7号的邮件中表示:“他正在编写《Linux 内核编程》第二版,他希望这本书是建立在最新的 Linux 版本之上,目前 Linux 5.10 LTS 版本是在 2026 年到期,然而如果可能,Linux 6.1 是否会成为最新的 LTS 版本,这样他就有可能采用这个最新的 LTS 版本,不过他也无法确定,具体还要等到正式发布。目前 Linux 已正式发布 6.0 版本。”
目前来看,Linux 6.1 很有可能成为今年的 LTS 版本。不过现在 Linux 6.1 补丁合并发生了一点小意外,但大家也不必过于担忧。
据了解,即将到来的Linux 6.1 新增了一个有意思的新功能,那就是检测 CPU 损坏。以往大型集群中总会有部分 CPU 报错,以往是通过查看内核代码来识别,现在开发人员增加了一些代码,可以在检测到CPU损坏、出错时输出信息,这样系统管理员就可以省事了。该功能来自 Linux 6.1 合并窗口的 x86/cpu 分支补丁:在出现分段错误(segfault)时,故障消息会打印出 “有嫌疑” 的 CPU 编号。
此外,新的 AMD GPU IP 支持,英特尔 DG2/Alchemist 的改进,Rust 基础内容,Btrfs 的重大改进,可能还有 MGLRU 等一系列新变化都非常令人期待!
参考来源:
https://www.theregister.com/2022/10/10/linus_torvalds_ecc_memory_fail/
https://lkml.iu.edu/hypermail/linux/kernel/2210.1/00691.html
https://www.solidot.org/story?sid=73011
— 推荐阅读 —
☞ 小鹏飞行汽车完成海外公开首飞;统一充电接口或让苹果每年损失百亿;Linus电脑内存问题致Linux 6.1补丁合并推迟|极客头条 ☞ 源码被外包误上传到 GitHub,丰田近 30 万数据遭泄露? “Git 是我用过最笨重的软件”!喷完 C++ 喷 Git,这位 Azure CTO 到底何许人也?