Kerla:用 Rust 编写并与 Linux ABI 兼容的新内核

最近发布了有关 Kerla 项目的信息,该项目正在开发为用 Rust 语言编写的操作系统内核。 代码在 Apache 2.0 和 MIT 许可下分发。 该项目由日本开发商 Seiya Nuta 开发,Seiya Nuta 以创建用 C 语言编写的微内核操作系统 Resea 而闻名。

新内核最初的目标是 确保在 ABI 级别与 Linux 内核兼容, 这将允许为 Linux 构建的未经修改的二进制文件在基于 Kerla 的环境中运行。

关于喀拉邦

Kerla 是一个单体操作系统内核 在 Rust 中从头开始创建。 在目前的发展阶段,Kerla 只能在 x86_64 架构的系统上运行 并实现基本的系统调用,如 write、stat、mmap、pipe 和 poll,支持信号、未命名管道和上下文切换。 诸如 fork、wait4 和 execve 之类的调用可用于控制进程。 支持 tty 和伪终端 (pty)。 在 initramfs 文件系统中(用于挂载 root FS),仍然支持 tmpfs 和 devfs。

还提供了支持 TCP 和 UDP 套接字的网络堆栈, 基于 smoltcp 库。 开发人员准备了一个在 QEMU 或 Firecracker VM 中使用控制器 virtio-net 的启动环境,您已经可以通过 SSH 连接到该环境. Musl 用作系统库,BusyBox 用作用户实用程序. 基于 Docker,已经准备了一个构建系统,允许您使用 Kerla 内核创建自己的 initramfs 引导。

到目前为止,关于其新内核的细节还很少,但 Kerla 的特性最受关注的是它是用 Rust 编写的。 那么用 Rust 编写它比其他语言或现有代码有什么优势吗? 许多人对这个问题的回答是肯定的,强调语言提供的内存安全优势。

在评估运行时内存访问的准确性时也会提供它。 更重要的是, Mozilla 认为 Rust 提供了防止整数溢出的保护,需要在使用前强制初始化变量值,默认采用引用和不可变变量的概念,提供强静态类型以最小化逻辑错误,并通过模式匹配简化输入处理。

在优势中,我们重点介绍了用于评估代码质量的集成工具 创建不仅可以在真实硬件上运行的单元测试,还可以在 QEMU 上运行。 基本上,Mozilla 发现 Rust 更容易调试,因为编译器会拒绝错误。 然而,海湾指出了 Rust 的一些缺点。

“与 C++ 一样,不使用模板编写惯用的 Rust 几乎是不可能的,因此它具有臃肿的二进制文件和缓慢的编译时间。 所有这些编译时检查也是有代价的。 另外,如果你重写了一些东西,你就会失去旧的成熟代码库,而且你无法在合理的时间内生成质量相似的代码库; 在 Rust 中扩展而不是重写程序要好得多。 最好是扩展程序而不是用 Rust 重写它,”一位软件工程师说。

根据其创建者的说法,正是出于这个原因,Linux 开发人员, 尤其是 Linus Torvalds 本人, 他们拒绝了用 Rust 重写整个内核的想法。

“做一些工作来创建安全链接,然后用 Rust 编写额外的代码,你仍然可以享受那些成熟的代码。 (这就是 Linux 所做的,正在努力添加在 Rust 中编写内核模块的能力),”他补充道。 大约三年来,Linux 开发人员一直在探索使用 Rust 语言编写某些新内核模块的可能性。 这催生了»Rust for Linux« 项目。

最后,如果您有兴趣了解更多信息,可以查阅详细信息。 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。