Kerla 项目正在使用 Rust 语言开发兼容 Linux 的内核

Kerla 项目正在开发一个用 Rust 语言编写的操作系统内核。 新内核最初专注于在 ABI 级别提供与 Linux 内核的兼容性,这将允许为 Linux 编译的未修改的可执行文件在基于 Kerla 的环境中运行。 该代码根据 Apache 2.0 和 MIT 许可证分发。 该项目由日本开发商 Seiya Nuta 开发,他因创建用 C 语言编写的微内核操作系统 Resea 而闻名。

在目前的开发阶段,Kerla 只能运行在 x86_64 系统上,并实现 write、stat、mmap、pipe 和 poll 等基本系统调用,支持信号、无名管道和上下文切换。 提供诸如 fork、wait4 和 execve 之类的调用来控制进程。 支持 tty 和伪终端 (pty)。 目前支持的文件系统有initramfs(用于挂载根文件系统)、tmpfs 和devfs。 提供了支持 TCP 和 UDP 套接字的网络堆栈,基于 smoltcp 库实现。

开发人员已经准备好了一个在 QEMU 或带有 virtio-net 驱动程序的 Firecracker 虚拟机中运行的引导环境,您已经可以通过 SSH 连接到该环境。 musl 用作系统库,BusyBox 用作用户实用程序。

Kerla 项目正在使用 Rust 语言开发兼容 Linux 的内核

基于 Docker 的构建系统已准备就绪,允许您使用 Kerla 内核创建自己的启动 initramfs。 另外,类似于fish的nsh软件shell和基于Wayland协议的Kazari GUI堆栈正在开发中。

Kerla 项目正在使用 Rust 语言开发兼容 Linux 的内核

在项目中使用 Rust 语言可以通过使用安全编程技术来减少代码中的错误数量,并提高在使用内存时识别问题的效率。 Rust 通过引用检查、对象所有权和对象生命周期跟踪(范围)以及在运行时评估内存访问的正确性来强制编译时的内存安全。 此外,Rust 还提供针对整数溢出的保护,要求变量值在使用前进行初始化,默认强制执行不可变引用和变量的概念,提供强大的静态类型以最大程度地减少逻辑错误,并简化输入值的处理​​感谢模式匹配..

对于低级组件(例如操作系统内核)的开发,Rust 提供了对原始指针、结构打包、汇编器内联插入和汇编器文件嵌入的支持。 为了在不依赖于标准库的情况下工作,有单独的 crate 包用于使用字符串、向量和位标志执行操作。 另一个优点是用于评估代码质量(linter、rust-analyzer)和创建单元测试的内置工具,这些工具不仅可以在真实硬件上运行,还可以在 QEMU 中运行。

来源: opennet.ru

添加评论