发布用 Rust 编写的 Redox OS 0.8 操作系统

使用Rust语言和微内核概念开发的Redox 0.8操作系统已经发布。 该项目的开发成果是在免费的 MIT 许可证下分发的。 为了测试 Redox OS,提供了 768 MB 大小的演示程序集,以及具有基本图形环境的图像 (256 MB) 和服务器系统的控制台工具 (256 MB)。 这些程序集是为 x86_64 架构生成的,可用于具有 UEFI 和 BIOS 的系统。 除了 Orbital 图形环境之外,演示映像还包括 DOSBox 模拟器、精选游戏(DOOM、Neverball、Neverputt、sopwith、syobonaction)、教程、rodioplay 音乐播放器和 Sodium 文本编辑器。

该操作系统按照Unix哲学开发,借鉴了SeL4、Minix和Plan 9的一些思想。Redox采用微内核概念,在内核级别只提供进程间通信和资源管理,其他所有功能都放在在可用于内核和用户应用程序的库中。 所有驱动程序都在隔离沙箱环境中的用户空间中运行。 为了与现有应用程序兼容,提供了一个特殊的 POSIX 层,允许许多程序无需移植即可运行。

该系统应用“一切都是 URL”的原则。 例如,URL“log://”可用于日志记录,“bus://”可用于进程间通信,“tcp://”可用于网络通信,等等。 模块可以实现为驱动程序、内核扩展和自定义应用程序,可以注册自己的 URL 处理程序,例如,您可以编写一个 I/O 访问模块并将其绑定到“port_io://”URL,然后您可以通过打开 URL“port_io://60”来使用它来访问端口 60。

Redox 中的用户环境是围绕 Orbital 自己的图形 shell(不要与使用 Qt 和 Wayland 的其他 Orbital shell 混淆)和 OrbTk 工具包构建的,该工具包提供了类似于 Flutter、React 和 Redux 的 API。 Netsurf 用作网络浏览器。 该项目还开发了自己的包管理器、一组标准实用程序(binutils、coreutils、netutils、extrautils)、ion 命令 shell、relibc 标准 C 库、类 vim 的钠文本编辑器、网络堆栈和文件系统。 配置是用 Toml 语言设置的。

新版本将继续努力确保其在真实硬件上运行。 除了 x86_64 架构之外,还添加了在 32 位 x86 系统(i686、Pentium II 及更新版本)上运行的功能。 移植到 ARM64 CPU (aarch64) 正在进行中。 尚不支持在真正的 ARM 硬件上运行,但可以在 QEMU 中加载 ARM64 模拟。 默认情况下,音频子系统处于激活状态,并提供对多显示器配置的初始支持(在具有 UEFI 帧缓冲区的系统上)。 Redox OS支持的设备包括AC'97和Intel HD Audio声音芯片、通过VESA BIOS或UEFI GOP API的图形输出、以太网(Intel 1/10 Gigabit以太网、Realtek RTL8168)、输入设备(键盘、鼠标、触摸板) 、SATA(AHCI、IDE)和 NVMe。 对 Wi-Fi 和 USB 的支持尚未准备就绪(USB 仅适用于 QEMU)。

其他创新:

  • 具有 BIOS 和 EFI 的系统的启动映像已合并。
  • clone 和 exec 系统调用的实现已移至用户空间。
  • 下载过程已得到简化。 已经实现了引导程序,该程序由内核启动并提供ELF文件的进一步加载,例如init进程。
  • 添加了升级程序以支持 sudo 等 setuid 程序。
  • 为了简化后台进程的创建和安装,提出了 redox-daemon crate 包。
  • 组装系统经过重新设计,使得可以在一个源代码树中构建不同的体系结构。 为了简化不同配置的组装,建议使用build.sh脚本。 添加了对使用 podman 工具包进行构建的支持。 内核、bootloader 和 initfs 的组装与其他软件包统一。
  • 添加了演示配置,用于使用图形环境构建基本启动映像中未包含的示例程序。
  • audiod 声音子系统中添加了对软件音量控制的支持。
  • 添加了基于AC'97的声音芯片驱动。 改进了英特尔高清音频芯片的驱动程序。
  • 添加了 IDE 控制器的驱动程序。
  • 改进了对 NVMe 驱动器的支持。
  • 改进了 PCI、PS/2、RTL8168、USB HID、VESA 驱动程序。
  • 安装过程已重新设计:引导加载程序、引导程序、内核和 initfs 现在位于 /boot 目录中。
  • 内核简化了内存管理,并增加了从用户级别操作地址空间的能力。
  • 在 Orbital 图形外壳中,添加了对多显示器系统的支持,改进了鼠标光标处理,并添加了用于更改音量的指示器。 该菜单能够将应用程序分为类别。

来源: opennet.ru

添加评论