Rust开发的操作系统RedoxOS
2024-02-13 11:16:00 阿炯

Redox是一个用Rust语言开发的类似 Unix 的微内核操作系统,其重点是安全、稳定和性能,专注于稳定性和安全性。其灵感来自先前的内核和操作系统,如SeL4、MINIX、Plan 9 和 BSD。它与 GNU 和 BSD 类似,但用一种内存安全的语言编写,在 MIT 许可下发布的开源软件。其大致上类似 Unix,但却是一个完整的操作系统。此外它完全使用 Rust 从零开始编写。


此外,Redox OS 传统上依赖 URI/URL 格式来访问资源,但为了方便将 Linux 软件移植到 Redox 的工作,开发团队已经将资源路径格式更改为与 Linux 兼容的 /scheme/scheme_name/path/to/resource。


新的基于文件的路径格式已开始用于内核和 relibc 实现,并能在不同格式之间进行透明转换。针对 Linux 软件的移植工作也越来越多,目前像 Nano 和 Helix 这样的编辑器已经可以在 Redox OS 上运行。其他一些可在 Redox 上运行的一些程序包括:
极简主义编辑器 kibi。
TUI 幻灯片应用程序 Presenterm。
国际象棋游戏 chess-tui。
十六进制文件查看器 hexyl,等等。


System76 的 COSMIC Desktop 也在向 Redox OS 移植。目前其 Orbital Windowing System 上已经可以运行 cosmic-edit 和 cosmic-files。其他的一些进展还包括:
Redox 现在可在 Raspberry Pi 3 Model B+ 上运行。构建系统也进行了改进,以便可以处理多个 RP 型号,每个型号都有自己的硬件配置。

内核和驱动程序改进:主要包括 PCI 驱动程序的重新设计、内核中的一些修复和清理,以及构建系统的改进。

Relibc:包括将 malloc 代码升级为 dlmalloc-rs 移植版本;之前的 malloc 代码是用 C 编写的,现在已经完全删除。还计划努力实现 libm 和 libcrypt 的 Rust 实现,并实现了几个新的 libc 函数,包括一些宽字符串函数和一些伪终端处理函数。

展望未来,Redox 将致力于其 Web 服务器用例、支持 USB/HID、性能分析和改进、更多更好的自动测试、更多地移植 Linux 应用程序以及开发 relibc 和内核兼容功能。项目团队对 logo 进行了改进,计划在未来进行网站更新以使用新的Logo并计划移植更多Linux软件


项目组发布了2024年4月状态报告,重点介绍了过去几周取得的进展:变化包括调整GCC,使其在该平台上默认构建静态二进制文件;重做USB HID驱动程序,以完成对USB键盘和鼠标的支持;在ARM64下使用QEMU的Redox OS现在可以运行其Orbital桌面(仍有待在真实硬件上实现);增强其内核的futex实现;文档改进以及其他变化。虽然 USB 键盘和鼠标现在可以使用最新的 Redox OS,但由于驱动程序使用轮询,目前 USB 输入设备的性能略有下降。USB 集线器在 Redox OS 上还没有得到很好的支持,因此也有可能出现问题。不过,Redox OS 似乎已经超越了 GNU Hurd,因为在上次检查时,GNU Hurd 仍不支持 USB。

有关 Redox OS 近期进展的更多详情,请参阅其官网上的本月状态报告。


最新版本:0.7
0.7正式于2022年4月下旬发布,更新内容如下:

引导程序:引导程序被完全重写,因此 BIOS 和 UEFI 版本都共享大部分相同的代码,并且都主要用 Rust 编写。这使得硬件支持大大改善,并允许 RedoxFS 得到改进。
Kernel:内核中加入了一些修复和新功能,并删除了一些代码。硬件支持得到改善,性能也得到提高。
1.初步增加了对 aarch64 的支持
2.所有的路径现在都被要求是 UTF-8 的,并且内核强制执行这个要求
3.CPU 特定的变量使用 GS 寄存器,由此带来了各种改进
4.所有的物理内存都被映射了,递归分页已经被移除
5.ACPI AML 代码被转移到 acpid,一个新的用户空间守护程序
6.重写了内联汇编,以便在未来的编译器中保持稳定
7.Initfs 被移到了一个新的文件中,这极大地改善了封装
8.许多内核问题已被修复
redoxfs:RedoxFS 被重写为写时复制文件系统,具有事务性更新和元数据和数据的签名。这种设计大大增加了 RedoxFS 的可靠性。此外,还增加了透明加密功能,如果有硬件加速的话使用 AES。引导程序现在使用与操作系统相同的驱动代码,这使得引导程序可以解锁文件系统,允许内核和 initfs 被文件系统加密和散列。
relibc:Relibc 有不断的各种变化,使更多的软件得到了移植,同时也修复了许多 C 程序和库中的问题。
rust:现在有了一个可以在 Redox 操作系统上运行的 rustc 版本。后续还有一些工作要做,以提高性能并确保 cargo 可以从 Redox OS 内部运行在 Redox OS 项目上。
更多详情可查看此处

最新版本:0.8
0.8正式于2022年11月下旬发布,这是个重大版本更新,新增对 32 位 x86、音频和多显示器(初步)的支持,并优化了很多组件。主要亮点包括:
增加了对 i686/32 位 x86 的支持,预计将在实际硬件上“可以正常工作”。这也包括对 i686 时代硬件常见的 AC'97 音频和 IDE 驱动的支持。
改进了对 64 位 Arm(AArch64)的支持,支持在 QEMU 上启动,但尚未在实际的 AArch64 硬件上工作。
初步支持多显示器,新版固件会提供适当的帧缓存信息(仍使用 VESA 驱动完成)。
对音频的支持工作基本完成,现在默认启用英特尔高清音频驱动。
在实机环境中可以更好的支持 NVMe 存储驱动。
Redox 操作系统镜像现在可以在 BIOS 和 UEFI 系统上工作。
重构了构建系统,以改善对同一源代码树的多架构支持。


官方主页:https://www.redox-os.org/