AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

用 Rust 重写 Linux 内核,这可能吗?

  • 2021-03-25
  • 本文字数:1704 字

    阅读完需:约 6 分钟

用Rust重写Linux内核,这可能吗?

众所周知,Linux 是 C 语言的代言人。但是,时代变了,Rust 正在兴起并赢得越来越多人的支持,它开始逐渐扮演 Linux 系统语言的角色。


在 2020 年 Linux Plumbers 峰会上,开发人员认真考虑过将 Rust 语言用于 Linux 内联代码的想法。此外,已经有很多 Linux 中的 Rust 内容被推向市场。比如,AWS 在 2020 年发布了 Bottlerocket,这是一种专为运行容器而打造的基于 Linux 的开源操作系统,其中包含大量的 Rust 代码。


另一个例子则与 Sylvestre Ledru 有关。他白天的身份是 Mozilla 的主管,而晚上却是 Debian Linux 开发人员。 Ledru 已经使用 LLVM 编译器基础架构及其 Clang C 语言前端和工具链基础架构,将一个 Rust 版本的 Coreutils 移植到了 Linux 中。据了解,Coreutils 是 GNU Shell 核心实用程序。基于这些内容,他已经启动了 Linux 并运行了一些最受欢迎的 Debian 软件包。虽然 Ledru 承认这一平台还没有准备好投入生产,但经过很多繁重的工作后,它现在已经可以使用了。总有一天,它会发展到替代 GNU Coreutils 的地步。

挺进 Linux 世界,Rust 机会在哪?


Rust 之所以受欢迎,是因为开发人员用 Rust 更容易编写出安全的软件。一直以来,安全性深深困扰着微软和谷歌等公司。此前,微软的研究人员称,该公司每年修复的漏洞中有 70% 与内存安全有关。谷歌的调查也发现,Chrome 代码库中所有严重的安全漏洞,70% 是内存管理的安全漏洞。


这些安全问题正好可以使用 Rust 来解决。AWS 产品经理 Samartha Chandrashekar 表示,“Rust 有助于确保线程安全,并防止与内存相关的错误,例如可能导致安全漏洞的缓冲区溢出“。


据悉,2019 年 Linux 安全峰会揭示,大约三分之二的 Linux 内核漏洞来自内存安全问题。


从理论上讲,Rust 可以使用本质上更安全的应用程序接口(API)完全避免这些漏洞。


那么,关于 Linux 中的 Rust 地位,Linux 开发人员 Nelson Elhage 总结道:Linux Rust 的支持者并不是“提议将 Linux 内核用 Rust 重写;他们只是努力想做到让新的代码可以用 Rust 来编写。Rust 支持的三个潜在关注点包括利用内核中的现有 API、架构支持”,以及处理 Rust 和 C 之间的应用程序二进制接口(ABI)兼容性。

Linux 之父:驱动程序可能率先 Rust 化


当然,Rust 能否替代 C 语言,主宰 Linux 世界?Linux 之父 Linus 和 Linux 稳定内核的维护者 Greg Kroah-Hartman 或许最有发言权。


Linus 一直在“等待与观察”。他说:“我对这个项目很感兴趣,但我认为它是由非常热衷于 Rust 的人们推动的,并且我想看看它在实践中的效果究竟如何。”


Linus 表示,“绝不会推动 Linux 中的 Rust 运动。但是,鉴于 Rust 的优势,我愿意接受它。”


Linus 认为,Rust 的首要目标似乎是驱动程序,这是因为在那里,你可以找到许多不同的可行目标,并且内核的这些部分相当小巧且独立。对某些人来说,这可能没那么有趣,但它是非常明显的目标。


在他看来,首先考虑驱动程序的另一个原因是“任何对驱动程序的初期尝试都发生在架构层面。很多驱动程序只关联了少数几个目标架构,因此 Rust 代码在某些架构上不被支持的问题在这里并不算什么大事。”


Linux 稳定内核的维护者 Greg Kroah-Hartman 认同 Linus 的说法,“驱动程序可能是这类尝试的首选领域,因为它们是内核源代码依赖树的'末端枝叶'。它们依赖于核心内核功能,但没有任何内容依赖它们”。


Linus 知道有些人完全不喜欢用户空间中有 Rust 的存在。“人们在抱怨用户空间中的'Rust 化'对未来的内核来说并不是什么好迹象,但究竟如何,我们可以拭目以待。内核与用户空间项目是不一样的——内核在某些方面更难处理(我们使用了很多非常奇怪的头文件,这些文件推动了可以称为“C”的边界),但是在其他许多方面又更容易(主要因为内核是完全自包含的,因此最终二进制文件不依赖其他项目”。


“一切都归结为如何将用 C 编写的内核核心结构和长期规则之间的交互映射到 Rust 结构和长期规则中,以让 Rust 编写的驱动程序能够正确使用它们。想要将所有这些组织起来的开发人员将需要大量的用心努力,我祝他们好运。”Greg Kroah-Hartman 补充说。

写在最后:


目前,几乎可以肯定,用 Rust 重写 Linux 这样的事短时不会发生,但是 Linux 中用户空间程序和驱动程序却有可能率先 Rust 化。

2021-03-25 14:336368
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 368.3 次阅读, 收获喜欢 1802 次。

关注

评论 2 条评论

发布
用户头像
轮子,任何时候都要造,不造不行,你们想想,你带着老婆,出了城,吃着火锅还唱着歌,突然就被新手取代了! 所以,有輪子造的日子,才是好日子! (出自讓子彈飛一會)
2021-04-01 16:00
回复
用户头像
不要重复造轮子
2021-03-31 10:13
回复
没有更多了
发现更多内容

浅析 DDD 领域驱动设计

牧小农

DDD 领域驱动

GitHub上标星120K!Alibaba官网发布了这份Java全栈知识体系手册

Java~~~

Java 架构 面试 JVM 多线程

加速国产开源软件创新,云智慧AIOps社区正式发布

云智慧AIOps社区

开源 算法 数据 场景 智能运维

华为云GaussDB首次亮相2021服贸会,为数字人民币提供坚实数据底座

华为云数据库小助手

金融科技 数字经济 GaussDB 华为云数据库

C/S结构是什么意思?有什么优点?

行云管家

数据库 运维 IT

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java~~~

Java 架构 面试 高并发 系统

无敌!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说

Java~~~

Java 架构 面试 项目 架构师

狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了

Java 编程 架构 面试 程序人生

数据库是什么意思?有什么用?有哪些类型?

行云管家

数据库 运维 IT

一文搞懂音视频开发技术点及职业发展方向

赖猫

c++ android 音视频

云智慧智能研究院实习生招聘信息~只等优秀的你!

云智慧AIOps社区

深度学习 招聘 异常检测 实习 智能运维

打爆怪兽 一起来养猪 养蜂人 幸福饭店

游戏开发_软件开发

软件 App 开发 游戏 语音合成

令我入职阿里的750页微服务架构深度解析文档有何神秘之处?

Java 编程 架构 面试 架构师

无场景不智能-面向场景的智能运维算法体系

云智慧AIOps社区

算法 日志 场景 智能运维 数据指标

GAIA:智能运维领域通用公开数据集

云智慧AIOps社区

算法 AIOPS 数据集 场景 智能运维

精品!阿里P7爆款《K8s+Jenkins》技术笔记,高质量干货必收藏

Java 程序员 架构 面试 k8s

阿里内部架构解密:网络+分布式+RPC+消息中间件+微服务

Java~~~

Java spring 架构 面试 微服务

横空出世!复盘B站面试坑我最深的Java并发:JDK源码剖析

Java~~~

Java 源码 架构 jdk 面试

太强了!京东首席架构师深邃洞察:服务化+云原生+微服务

Java~~~

Java 架构 面试 云原生 架构师

27W字总结阿里Java高并发编程:案例+源码+面试+系统架构设计

Java~~~

Java 架构 面试 算法 多线程

在同一台计算机中运行多个MySQL服务

Java 数据库 后端 msyql

为什么UI自动化难做?—— 关于Selenium UI自动化的思考

LigaAI

测试 UI自动化

把工作讲给家人听

FunTester

读书笔记 FunTester 奈非文化手册 办公效率 居家工作

“小巨人”的转型烦恼,百度智能云能否解压?

百度开发者中心

人工智能 企业资讯 中小企业

百度短视频推荐系统的目标设计

百度Geek说

架构 后端 推荐系统 短视频

必杀器!鹅厂首推569页Netty+Redis+ZK+高并发

Java~~~

Java redis 架构 面试 Netty

别慌!阿里专家破SpringBoot:入门+基础+进阶+项目

Java~~~

Java 数据库 架构 面试 Spring Boot

云智慧AIOps研究院来咯~

云智慧AIOps社区

技术 算法 数据 智能运维 指标

CTO离职前悄悄和我说,吃透这5本Java核心技术笔记,涨薪特别简单

Java~~~

Java MySQL spring 架构 面试

安卓工控主板双网口有什么用途?

双赞工控

安卓主板 工控主板

阿里内部最新“SpringCloudAlibaba学习笔记”出炉

Java 阿里巴巴 架构 面试 微服务

用Rust重写Linux内核,这可能吗?_开源_万佳_InfoQ精选文章