尼克·德萨尼(
让我们回想一下,在开源峰会和嵌入式 Linux 会议最近的一次讨论中,Linus Torvalds
- “桶中鱼”公司的开发人员
подготовили 一个用 Rust 语言为 Linux 内核编写可加载模块的工具包,在接口和内核结构上使用一组抽象层来提高安全性。 使用该实用程序根据现有内核头文件自动生成层宾根 。 Clang 用于构建层。 除了中间层之外,组装的模块还使用 staticlib 包。 - 香港中文大学研究人员
发展 一个使用 Rust 开发嵌入式系统和物联网设备驱动程序的项目,该项目还使用 bindgen 基于内核头文件生成层。 该框架允许您在不更改内核的情况下提高驱动程序安全性 - 建议使用更安全的 Rust 语言在编译阶段阻止问题,而不是在内核中为驱动程序创建额外的隔离级别。 假设设备制造商可能需要这样的方法,即在没有进行适当审核的情况下匆忙开发专有驱动程序。 - 框架开发人员
C2铁锈 用于将 C 代码广播到 Rust,行为 通过最少的手动编辑来转换内核模块的实验。 注意到的问题之一是在内核的许多部分使用的代码使用了 C2Rust 尚不支持的 GCC 扩展。 为了解决这个问题,C2Rust计划添加对GCC属性inline、cold、alias、used和section的支持,并扩展内联汇编器的功能,解决同时对齐和打包的结构(例如xregs_state)的问题。 需要手动工作的重大问题包括无法将重要的 C 宏转换为 Rust 宏以及需要重新定义类型,因为 C2Rust 将 C 类型转换为 libc 包中的定义,但该包不能在内核模块中使用。
来源: opennet.ru