LWN: kernel 快要有 Rust 了?

如何使用 rust 写内核模块 近年来,Rust 语言以内存安全、高可靠性、零抽象等能力获得大量开发者关注,而这些特性恰好是内核编程中所需要的,所以我们看下如何用rust来写Linux内核模块。 阅读详情

关注了就能看到更多这么棒的文章哦~

Rust heads into the kernel?

By Jake Edge
April 21, 2021
DeepL assisted translation
https://lwn.net/Articles/853423/

在给 linux-kernel 邮件列表的一封长长的邮件中,Miguel Ojeda "介绍" 了 Rust for Linux 这个项目。很可能大多数内核开发者之前已经听说过这项工作了。例如 2020 年的 Linux Plumbers 会议上就对该项目进行了广泛的讨论。以前也在列表中被提出来过。现在,该项目正在询问内核社区对其计划有些什么反馈,因此在 4 月 14 日的时候发布了 RFC。

Adding Rust

Ojeda 首先很老实地表态说,他也理解在内核中新增另一种语言总会有一定的破坏性,所以需要有很好的理由才会这样做。内核已经是一个高度复杂的代码综合产物,对大家理解代码和修改代码都增加了不少困难。要在其中加入第二种语言以及其相关的复杂问题,只会使情况变得更糟。"尽管如此,我们相信,即使就在眼下,如果我们使用 Rust 的话,优势也是超过成本的。"

这些好处主要来自于 Rust 语言的内存安全(memory-safety)特性。我们希望通过避免这些问题来减少内核中的 bug 数量(至少是那些用 Rust 语言实现的部分代码)。目前,对 Rust 实现的代码的定位仍是远离核心内核(core kernel)代码:

请注意,至少在可预见的未来,支持 Rust 的目的是让人们能够用 Rust 编写驱动和类似的 "leaf" 模块。具体来说,我们不打算重写内核核心或那些主要的子系统(例如,`kernel/`,`mm/`,`sched/`…)。相反,Rust 的支持是会建立在这些基础之上。

内核 C 代码和 Rust 之间有很多不匹配的地方,需要一些方式来处理好。为了从 Rust 的安全特性中获得最大的好处,那就需要尽量减少不安全的部分中的起支持作用的内核代码的数量,并仔细记录在文档中。其中一个既定的目标就是要能采用自动机制来确保执行文档记录原则:

通过利用 Rust 现有工具,我们在这个项目中一直在确保执行迄今为止建立好的所有文档准则。例如,我们要求对所有公共 API、安全前提条件(safety preconditions)、"unsafe" block 和类型不变性(type invariants) 进行记录。

到目前为止,这些工作主要集中在实现底层组件(building blocks)和开始对内核 API 进行抽象和封装,但还有很多工作需要去做:"要想覆盖整个内核的 API 接口,这会需要很长的时间来开发稳定。" RFC 中重申了这个任务,但同时也指出有一些工具可以对这个过程有所帮助:

[……]用 Rust 编写的模块不应该直接使用 C kernel API。在内核中使用 Rust 的根本意义就是我们要开发出安全的抽象层,使这些 module 更加容易模块更容易推理,因此,审查、重构等等。

此外,内核的 C 这一侧的绑定(binding)是通过`bindgen`(官方的 Rust 工具)即时(on-the-fly)生成的。我们使用这个工具,就可以避免在 Rust 这一侧更新 binding。

在谷歌安全博客(Google security blog)的一篇文章中(这篇文章在 LWN 发布时引起了大量的评论),Linux 的 Rust 维护者之一 Wedson Almeida Filho 详细描述了 Ojeda 的 RFC 中一个示例驱动程序。这是一个实现 semaphore 的字符设备,主要用于演示的目的。RFC 还包含了一个重新实现过 Android Binder 进程间通信机制,尽管这个尚未完成,但它让我们进一步了解了在内核中使用 Rust 可能会有哪些用处:

目前,我们几乎将 Binder 所需的所有那些通用内核功能都干净利落地封装在安全的 Rust 抽象中了[…] 。

我们还将继续推进修改 Binder 这个原型,来实现更多的抽象,并处理好一些目前处理得比较粗糙的地方。这是一个激动人心的时刻,也是一个难得的机会,很可能会影响到 Linux 内核的开发,同时也可以有利于 Rust 语言的发展。

RFC 指出,目前的 Rust 支持代码在内核已经实现了相当多的代码,但随着时间的推移,会逐步缩减这些改动。在完全支持 Rust 的情况下,"我们在 CI 中使用的小型 x86_64 环境" 的内核 size 增加了大约 4%。Rust 版本的 semaphore 驱动比 C 版本的驱动大 50%左右,而 Binder 驱动的 size 基本上保持相当。然而,"请注意,虽然 Rust 版本尚未完全实现 C 语言的原始模块中的全部功能,但已经足够接近了,可以作为粗略的估计之用"。

Reaction

总的来说,人们对 RFC 的反响还是不错的,尽管有一些例外。当然对现有代码也有一些疑问和担忧。Linus Torvalds 似乎专注于这些代码中调用的 BUG(),很明显,他看到这些时感到很不赞同。内核哪怕面对 error 时会努力继续往下走,但碰到 BUG() 调用的话就会直接放弃,并且打印出 backtrace 以及触发 kernel crash。其中有一个例子里,Rust 标准库中的一些 intrinsic 操作("panicking intrinsics")是内核所不支持的,只要调用这些操作,就可以通过触发 BUG() 从而马上让内核崩溃。Torvalds 建议在编译的时候就让这些调用直接报错,Ojeda 同意这是一个更好的方法,但也指出,随着时间的推移,更多的标准库(standard library)会被删除,很可能这些问题也会被消灭。

Torvalds 还指出了内存分配代码中的 panic!()调用,这在他看来是 "根本性的错误":

如果 Rust 编译器偷偷进行了分配(allocation),然后会出现 panic,那么我们加入 Rust 的一个主要好处就不复存在了。这跟 build 时候的 memory-safe 要求是背道而驰的。

随便在哪个驱动程序中,分配内存失败绝不可以是编译器触发 panic 的理由。它必须被捕捉下来并且进行同步处理(handled synchronously),返回一个 ENOMEM 错误。

Ojeda 再次表示同意。他指出,要调整好 Rust 的标准库供内核使用,还有很多工作要做:

这里的情况是,我们暂时使用 'alloc',它是 Rust 标准库的一部分。然而,我们后续会根据需要定制、重写 'alloc',从而指定其类型(如'Box'、'Vec'等),这样我们就可以用来做一些其他工作,比如传递一个 allocation flag,确保我们总是可以支持这些会出错的 allocation,或者可以重用一些内核数据结构,等等。

用 Binder 驱动作为例子,这是 Torvalds 比较关心的另一点。他希望看到一个 "真正的代码的例子,是真正在做一些有意义的事"。Ojeda 说,计划会增加一些真正同硬件交互的驱动程序。Matthew Wilcox 有一个想法,可以从哪里开始:

我建议把 NVMe 作为一个目标。它是现成的,真实硬件和 qemu 等虚拟环境中都有支持。它的 spec 也是免费提供的,而且大多数设备的实现都非常接近 spec,除非你要追求一些细节。此外,你还可以做性能测试,看看可以对于性能在哪些方面来集中优化。

Greg Kroah-Hartman 同意 Torvalds 的观点,认为 Binder 并不是一个特别好的驱动实例,但他对该项目到目前为止所取得的成就印象深刻:

[……]这组 patch set 是一个伟大的开始,它提供了 "如何在内核构建系统中构建 rust" 的最主要部分的展示,这是一项非同小可的工程。向他们致敬,我所要做的工作就是仅仅在我的系统上成功安装合适的 rust 编译器(这不是这些开发者的错),然后就成功地编译了内核代码。这是一个重大的成就。

他还认为 NVMe 可能是一个不错的选择,但也建议试试 "驱动作者每天都要处理的一些基本问题(platform driver、gpio driver、pcspkr driver、替换/dev/zero 等)" 。看来 Rust for Linux 项目将在不久之后致力于开发一些符合这种期望的 "真正的" 驱动程序。

虽然 Torvalds 重申了他对一些个别 patch 的抱怨,但他也说。"总的来说,我并不讨厌这组 patch"。但另一方面,Peter Zijlstra 似乎从根本上反对在内核中增加第二种实现语言的想法。RFC 指出,内核工具一直专注于 C 语言,"包括 compiler plugins、sanitizers、Coccinelle、lockdep、sparse",但是 "如果 Rust 在内核中的使用随着时间的推移而增加,Rust 相关的工具可能会得到改善"。Zijlstra 对此进行了归纳,并问道:

在重构的时候,我们可以不受限制地移除这些 .rs 内容吗?如果我们不能在没有 Rust 这堆东西的情况下启动 x86_64,那么情况会怎样?

我们可以把这个问题当作未来的问题来暂时忽略,但我认为现在讨论这个问题才是合理的。我真的不关心未来,而且在我看来,在内核中加入 Rust 或其他任何第二语言都会失败。

也许不出意料,他对项目使用的文档格式(代码中的 Markdown 转换为 HTML)强烈反对。他对所使用的代码格式也不满意,根据 RFC 的说法,至少目前还是遵循 "Rust 的习惯性风格",但 "真的非常非常难读"。除了这些,他还想知道 Rust 遵循什么内存模型,以及它与 Linux 内核内存模型(LKMM,Linux kernel memory model)如何 "保持一致(或干脆就不一致?)"。

Memory model

Boqun Feng 说,Rust 目前使用 C11 内存模型,主要是因为 LLVM 编译器默认支持它,但人们很想知道其内存模型与内核的内存模型是否能很好配合。现在,"在 C 这一侧和 Rust 这一侧之间没有需要保持同步的代码,所以我们目前没有问题",但这个情况最终会发生变化的,所以有计划让 Rust 和内核中相关的人员一起讨论这个问题。Almeida 指出,最终希望是让内核中的大多数 Rust 代码只需要关注 Rust 的内存模型:

我们不打算将 C 语言的数据结构直接暴露给那些(在 kernel crate 之外的) Rust 代码。相反,我们打算提供封装函数,对外暴露安全接口,即使底层的实现可能会使用了 unsafe block。所以我们希望绝大多数的 Rust 代码只关心 Rust 的内存模型。

我们承认还没有实现很多封装函数,但我们目前的已经足够实现 Binder 的主要功能了,到目前为止还不错。我们确实打算最终也能够处理其他类别的驱动,这些驱动可能会向我们展示出一些此前未预见到的困难,我们慢慢来吧。

Almeida 不同意 Zijlstra 关于 HTML 是一种无效的文档格式的说法,他认为这是一种个人偏好。对于代码格式,如果有很好的理由,他不反对脱离 Rust 风格,但认为 Zijlstra 的批评没有说服力。" '在 if-clause 表达式周围没有小括号完全是垃圾' 这种说法对我来说听起来并不是一个好的理由。"

Al Viro 试图解释对 HTML 文档的厌恶,语气非常的直接,这使争论暂时偏离了轨道。Zijlstra 说,没有好方法来使用 ASCII 阅读 HTML 文档:"没有什么是一个合理的 ASCII 文档不能完成的,有必要的话可以再加上一些 ASCII art 图。" 他还解释了为什么他对格式的看似随意的抱怨实际上很重要:

当然有关系;我大脑里的词法分析一直在对我大喊 '这里有语法错误',当我不能理智地阅读代码时,我怎么能理解它呢?

你越是让它看起来像(内核里的)C 代码,我们这些 C 语言的人员就越容易真正读懂它。我的眼睛已经读了近 30 年的 C 语言了,就好象内置在视神经中有个相应的词法分析器,阅读那些看起来隐约像 C 语言但绝对不是 C 语言的东西是一种痛苦的经历。

你是在要求加入我们,而不是反过来。我在没有 Rust 的世界里过得很好。

Zijlstra 还提出,许多被吹捧的 Rust 功能都可以在 C 语言中实现。Almeida 同意确实是可以实现的,但 Rust 的价值是人们不可能错误地忽略这些功能,不像 C 语言(至少在不改变编译器的情况下)那样:

在 Rust 中,这是不可能的:受锁保护的数据只有在获取锁之后才能被访问。所以开发者不可能意外地犯这样的错误。而且这是在编译时确保的,因此在运行时没有额外开销。

他还提出了 C 语言中的 ownership 问题:在 C 语言中没有办法转移一个对象的 ownership,但在 Rust 中却可以直接做到:

在 Rust 中,有一种干净的现成方式来转交一个 guard(或任何什么 object)的 ownership,这样在所有权转移后,以前的所有者就不能继续使用它了。同样,这也是在编译时确保的。

但是 Zijlstra 宁愿看到一个支持所有权的 C extension,而不是将 Rust 添加到内核中:

这就意味着我们要比以前更积极地推动新的 C 语言编译器,但至少我们仍是使用单一一种语言。对新东西的转换可以逐步进行,并且在有意义的地方进行,新的 extension 可以针对性地评估性能影响。

Almeida 并不反对这个想法,事实上,恰恰相反:

我鼓励你继续这样做。我们都会从更好的 C 语言中受益。我很乐意对那些被认为等同于或者优于 Rust 的 extension 进行 review 并提供反馈。

我的背景也是 C 语言。我不是 Rust 的粉丝,我只是以我认为的实用主义的观点来看待现有的选项。

然而,有点难以想象内核会因为一个尚不存在的 C extension 而停止继续调查是否能将 Rust 加入内核中。但是还有很多工作需要 Rust for Linux 来完成,其中一些工作很可能需要先完成,之后 Torvalds 才会愿意 merge。例如,似乎需要更多的 "real" driver 实例,以及删除那些导致 BUG()调用的代码。但是,Rust for Linux 显然越来越接近于成为现实。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

rust-kernel:一个小的多任务卵石启发了用Rust编写的内核 x86 Rust内核 这是用Rust编写的x86多线程内核的实现。 内核当前支持内核级线程,虚拟文件​​系统(受Linux启发)和原始驱动程序框架(受Windows启发)。 去做: IDE驱动程序。 ELF解析器。 用户空间加载器。 系统调用。 进程生命周期(fork / exec / wait /消失)。 调度(收益/调度/ make_runnable /睡眠)。 内存管理(mmap / munmap)。 IPC(???)。 安全性得到改善(去除包装纸等)。 动态加载,内核模块。 建造 内核必须由使用夜间配置构建的1.1.0之后的Rust编译器构建,以支持不稳定的功能和drop_in_place函数。 该构建链接到lib目录中预编译的libcore版本。 如果编译器的版本与用于编译libcore的版本不同,则可能会出现恐慌。 如果发生这种情况,请重新编译libc 立即下载

相关推荐

linux-kernel-module-rust:在安全的Rust中编写Linux内核模块的框架

安全Rust中Linux内核模块 对于大多数目的,如果您有兴趣在Rust中编写Linux内核模块,则应查看 ,这是将该过程贡献给上游内核的一种努力。 这是一个用于在Rust中使用围绕内核接口和原语的安全抽象来编写可加载Linux内核模块的框架。 有关此项目的动机和目标的更多信息,请查看以及。 我们立即将重点放在使该项目适用于树外模块的可行性上,但是我们也将该项目视为是否可以用Rust编写树内组件的测试平台。 hello-world目录中有一个简单的演示模块,而tests /目录中有各种其他示例。 设计 我们在内核头文件上运行以生成自动Rust FFI绑定。 bindgen由提供支持,因此我们使用内核自己的构建系统来确定适当的CFLAGS。 然后,我们为这些类型编写安全绑定(请参阅src/的各种文件)。 Rust中的每个内核模块都staticlib在staticlib板条箱中,该板条

LWN: Linux kernel 中的Rust!

关注了就能看到更多这么棒的文章哦~The Rust for Linux projectBy Jonathan CorbetSeptember 16, 2021KangrejosDeepL ...

Linux News搬运工 838

告别130MB/s瓶颈!用Zynq+NVMe实现1.2GB/s高速存储的PL数据分流实战

本文详细介绍了如何通过Zynq+NVMe实现1.2GB/s高速存储的PL数据分流方案,突破传统Zynq架构130MB/s的瓶颈。文章分享了PL直连NVMe的硬件架构设计、软件栈优化及性能调优实战技巧,帮助开发者实现高速数据流的稳定存储。

weixin_42653691的博客 372

LWN:使用Rust进行Linux kernel开发!

Supporting Linux kernel development in RustAugust 31, 2020This article was contributed by Nel...

Linux News搬运工 1085

Docker入门教程:在腾讯云轻量服务器上部署你的第一个容器化应用 (2025)

还在为“在我电脑上明明是好的”而烦恼?本篇Docker入门教程,用通俗易懂的比喻解释镜像、容器的核心概念,并手把手带你在腾讯云轻量服务器上,从运行Nginx到编写Dockerfile打包自己的Python应用,轻松掌握容器化部署。

Clownseven的博客 2083

Appstore 3.2(f)违规自救指南:从触发到申诉的完整应对策略

本文详细解析了Appstore 3.2(f)违规的应对策略,从触发原因到申诉流程,帮助开发者有效自救。文章涵盖隐瞒行为、账户关联和信息造假三大违规场景的判定逻辑,并提供申诉信写作的黄金法则和长期合规防御措施,确保开发者能够顺利通过苹果审核。

weixin_29304985的博客 658

LWN:如何在 kernel 里写 Rust 代码:第一部分!

尽管 GCC 上对 Rust 的支持正在迎头赶上,并且 `rustc_codegen_gcc` 代码生成后端现在能够编译内核的 Rust 组件,但 Rust for Linux 项目目前仅支持使用纯粹的 `rustc` 进行构建。Rust 开发者可能还应该安装 Clippy(Rust 的代码 Lint 工具),rustdoc(Rust 的文档构建工具)和 rust-analyzer(Rust 的 语言服务器),但这些并非严格必需。构建和测试 Rust 代码是审查 Rust 代码的必要条件,但并非充分条件。

Linux News搬运工 1649

电源工程师必看:平均电流模式BUCK双环控制详解(从传递函数到Psim仿真)

本文详细解析了平均电流模式BUCK变换器的双环控制策略,从传递函数推导到Psim仿真实现。针对电源工程师关注的环路设计和稳定性问题,深入比较了电压模式、峰值电流模式和平均电流模式的优缺点,并提供了12V/3A BUCK变换器的完整设计案例,帮助工程师掌握平均电流控制这一中高功率应用的首选方案。

weixin_42696271的博客 394

LWN:Rust 另一些对 kernel 有用的特性!

关注了就能看到更多这么棒的文章哦~More Rust concepts for the kernelBy Jonathan CorbetSeptember 20, 2021Kangrejo...

Linux News搬运工 476

实战教程:用DETR+超分辨率搞定红外小目标检测(附完整代码)

本文提供了一套完整的红外小目标检测实战方案,通过融合EDSR超分辨率技术与改进型DETR深度学习算法,有效解决了红外图像中小目标检测的难题。文章详细介绍了从环境搭建、数据预处理、模型定制(如引入EMA注意力与S2特征层)到训练调优的全流程,并附有完整代码,旨在帮助开发者将前沿算法高效落地于安防、自动驾驶等实际场景。

weixin_29057163的博客 531

基于STM32+4G模块设计的智能灌溉系统

当前智能灌溉系统分为三个部分:温湿度采集部分、灌溉系统部分、OneNet云平台。 灌溉系统部分增加刷卡功能,用户可以通过IC卡刷卡将金额刷到灌溉系统设备里,灌溉系统设备里会记录金额,并且在手机可视化页面上会显示当前的设备金额。 金额会随着时间进行递减,按分钟计费,如果计费到0,就无法启动灌溉,需要重新充值金额才能继续。

4512

LWN: Rust 中对于Linux kernel有用的关键特性!

关注了就能看到更多这么棒的文章哦~Key Rust concepts for the kernelBy Jonathan CorbetSeptember 17, 2021Kangrejos...

Linux News搬运工 518

Midscene.js(2):代码集成 + 桥接模式(Bridge Mode)的使用「喂饭教程」

本文将手把手教你从零开始搭建一个 Node.js 项目,集成 Midscene.js,并利用其桥接模式实现对 Chrome 浏览器的自动化操作。我们将通过具体的实例,来展示 Midscene.js 的便捷性与 AI 能力的结合。

blues_C的博客 1844

LWN:如何在kernel里写Rust代码——第二部分!

在用户空间的 Rust 项目中,程序通常也会从 std(Rust 的标准库)中导入一些内容,但在内核中这不可行,因为内核需要对内存分配和其他标准库抽象掉的细节有更精确的控制。的形式书写,它适用于其所出现的定义内部。约定俗成是,对于返回值的宏使用圆括号,而对于调用以定义结构体的宏使用花括号(此处即是这种情况),但这并非强制要求。在驱动程序的 C 版本中,下一步是定义一些常量,它们代表了该驱动程序支持的三种不同但相关的设备:AX88772A、AX88772C 和 AX88796B。每个板卡对应的类型(例如。

Linux News搬运工 1725

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LWN:维护者峰会上讨论Rust in kernel!

关注了就能看到更多这么棒的文章哦~Using Rust for kernel developmentBy Jonathan CorbetSeptember 27, 2021Maintain...

Linux News搬运工 225

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LWN:学习Rust内核开发的可用资源!

关注了就能看到更多这么棒的文章哦~Resources for learning Rust for kernel developmentBy Daroc AldenSeptember 23, 2024Kangrejos 2024Gemini-1.5-flash translationhttps://lwn.net/Articles/990619/Dirk Behme 在 Kangrejos 2024...

Linux News搬运工 1456

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LWN: 内核 Rust 实验的现状

关于将核心内核(core-kernel)对 Rust 代码的依赖性,Airlie 表示,这在未来一两年内不应该发生。Kroah-Hartman 说,他曾担心核心内核和 Rust 驱动程序之间的交互,但发现交互比他预期的少得多。Ojeda 说他已经调查过,认为它应该可以工作,但他不知道目前的状况。Ojeda 总结说,用 Rust 工作的能力成功地吸引了新的开发者和新的维护者,这是该项目最初的目标之一。他说,更重要的消息是,运行 6.12 内核的 Android 16 系统正在搭载 Rust 编写的。

Linux News搬运工 200

LWN:内核处理Rust代码的流程!

Hindborg 同意,但他也指出,在块(block)子系统中,开发者进行更改时并不担心 Rust 方面的问题。当他收到问题报告时,他会在一天内修复它,一切都会很好。如果 Rust 代码要通过常规的子系统树(subsystem trees),那么维护者至少应该对这些代码进行构建测试(build tests),并且应该有一个明确的方案来应对构建出错(build break)的情况。在他的结论中,他重申,自 6.10 版本以来,Rust 编译器的最低版本一直保持在 1.78.0,即使较新的版本已经获得了支持。

Linux News搬运工 1659

LWN:内核中Rust支持的下一步动作!

关注了就能看到更多这么棒的文章哦~Next steps for Rust in the kernelBy Jonathan CorbetSeptember 19, 2022Maintainers SummitDeepL assisted translationhttps://lwn.net/Articles/908347/Rust for Linux 这个项目是希望今后可以使用 Rust 编程语言...

Linux News搬运工 352

LWN:内核热点: folio,多代LRU,以及Rust!

关注了就能看到更多这么棒的文章哦~The kernel radar: folios, multi-generational LRU, and RustBy Jonathan CorbetJ...

Linux News搬运工 1822

LWN:6.2内核中的Rust!

关注了就能看到更多这么棒的文章哦~Rust in the 6.2 kernelBy Jonathan CorbetNovember 17, 2022DeepL assisted translationhttps://lwn.net/Articles/914458/6.1 版本的合并窗口带来了对用 Rust 编写内核代码的基本支持,这里的关键词是 "基本"。在 6.1 版本中可以创建一个 "hell...

Linux News搬运工 734

LWN:6.3合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.3 merge windowBy Jonathan CorbetMarch 6, 2023DeepL assisted translationhttps://lwn.net/Articles/924384/Linus Torvalds 于 3 月 5 日发布了 6.3-rc1,按时关闭了 6.3 合并窗口。那时已经有 12717...

Linux News搬运工 897

LWN:6.10 合并窗口前半部分!

关注了就能看到更多这么棒的文章哦~The first half of the 6.10 merge windowBy Jonathan CorbetMay 16, 2024Gemini-1.5-flash translationhttps://lwn.net/Articles/973687/6.10 内核版本的合并窗口于 5 月 12 日开启;截至本文撰写之时,已有 6819 个非合并提交被拉入该...

Linux News搬运工 556

LWN:6.2合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.2 merge windowBy Jonathan CorbetDecember 27, 2022DeepL assisted translationhttps://lwn.net/Articles/918146/今年,世界收到了从 Linus Torvalds 来的一份特殊的圣诞礼物:6.2-rc1 kernel prepat...

Linux News搬运工 569

Linux 6.18发布:年度最后版本或成新长期支持版本

新的内核版本意味着对一些新硬件的内置支持。A:Linux 6.18的主要改进包括:XFS卷可以在使用中检查和修复,exFAT驱动程序速度提升16倍,新增对华硕、联想等厂商手持设备的支持,Nouveau驱动支持图灵和安培系列GPU的GSP固件,以及新的Rust版本Binder用于Android进程间通信。经过两年的工作,6.18包含了新的Rust版本Binder,Android的进程间通信管理器。A:Linux 6.18是2025年的最后一个内核版本,按照惯例,年度最后的内核版本通常会被选为长期支持版本。

std86021的博客 634
上一篇: LWN: 努力实现对BPF program签名验证!
下一篇: LWN:5.13合并窗口第一部分!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值