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 用作用户实用程序。
基于 Docker 的构建系统已准备就绪,允许您使用 Kerla 内核创建自己的启动 initramfs。 另外,类似于fish的nsh软件shell和基于Wayland协议的Kazari GUI堆栈正在开发中。
在项目中使用 Rust 语言可以通过使用安全编程技术来减少代码中的错误数量,并提高在使用内存时识别问题的效率。 Rust 通过引用检查、对象所有权和对象生命周期跟踪(范围)以及在运行时评估内存访问的正确性来强制编译时的内存安全。 此外,Rust 还提供针对整数溢出的保护,要求变量值在使用前进行初始化,默认强制执行不可变引用和变量的概念,提供强大的静态类型以最大程度地减少逻辑错误,并简化输入值的处理感谢模式匹配..
对于低级组件(例如操作系统内核)的开发,Rust 提供了对原始指针、结构打包、汇编器内联插入和汇编器文件嵌入的支持。 为了在不依赖于标准库的情况下工作,有单独的 crate 包用于使用字符串、向量和位标志执行操作。 另一个优点是用于评估代码质量(linter、rust-analyzer)和创建单元测试的内置工具,这些工具不仅可以在真实硬件上运行,还可以在 QEMU 中运行。
来源: opennet.ru