ToaruOS
2025-03-26 13:31:49 阿炯

ToaruOS是一个为x86-64架构PC设计的完整操作系统,并提供对ARMv8架构的实验性支持。不同于许多专注于实验性设计的业余或研究型操作系统,其目标是成为一个教育资源,提供一个代表性微观世界,展现主流桌面操作系统中的功能。它包含内核、引导加载程序、动态共享对象链接器、C标准库、自研的合成窗口系统、动态字节码编译编程语言、高级代码编辑器以及数十个其他实用程序和示例应用程序。所有必要的源代码(主要为C语言)总计约10万行,都包含在仓库中,Kuroko语言解释器除外,它位于单独的仓库。采用NCSA许可协议授权使用。


ToaruOS is a "complete" operating system for x86-64 PCs and experimental support for ARMv8.


项目历史与发展历程

ToaruOS项目始于2010年12月,最初的目标是“在实践中学习”——通过从头创建一个类Unix系统来学习类Unix系统的设计。开发者在几年前曾参与过Compiz(早期广泛使用的X11合成窗口管理器)的开发,因此ToaruOS早期就拥有了基于类似概念构建的GUI。

2015年发布的1.0版本并非完全从零开始。它使用了Newlib作为C标准库,GUI则基于Cairo、libpng和Freetype。2018年中期,开发者启动了一个新项目来替换这些第三方组件,最终完成并合并到ToaruOS 1.6版本中。


多年来,ToaruOS吸引了许多初学者操作系统开发者,他们尝试使用它作为参考。然而,内核一直是开发者个人感到尴尬的地方。2021年4月,在长时间的休整后,开发者开始着手开发新的内核Misaka,这是一个新的64位、支持SMP的内核。Misaka于5月合并,开启了1.99系列的beta版本,最终发布了ToaruOS 2.0。

核心功能与组件

特色的功能:
• 动态链接的用户空间: 支持共享库和dlopen。
• 合成图形用户界面: 具有软件加速功能,设计灵感来自2000年代后期。
• 虚拟机集成: 在VirtualBox和VMware Workstation中支持绝对鼠标和自动显示大小调整。
• 类Unix终端界面: 包含功能丰富的终端模拟器和一些常见的实用程序。
• 可选的第三方移植: 包括GCC 10.3、Binutils、SDL1.2、Quake等等。

关键组件:
• Misaka(内核): 混合模块化内核,是操作系统的核心。
• Yutani(窗口合成器): 管理窗口缓冲区、布局和输入路由。
• Bim(文本编辑器): 一个受Vim启发的编辑器,支持语法高亮。
• 终端: 一个类似xterm的终端模拟器,支持24位颜色。
• ld.so(动态链接器/加载器): 加载动态链接的ELF二进制文件。
• Esh(shell): 支持管道、重定向、变量等。
• Kuroko(解释器): 一个动态字节码编译编程语言。

当前目标与未来规划

当前正在进行的项目包括:
• 重写网络协议栈,以提高吞吐量、稳定性和服务器支持。
• 通过更好的调度和更智能的用户空间同步函数来提高SMP性能。
• 支持更多硬件,为AHCI、USB、virtio设备等添加新的设备驱动程序。
• 从ToaruOS“Legacy”中恢复移植的软件,例如muPDF和Mesa。
• 提高POSIX兼容性,尤其是在信号、同步原语方面,并提供更多常见的实用程序。
• 继续改进C库,与Newlib相比,它仍然很不完整,并且是恢复旧移植的主要问题来源。
• 替换第三方开发工具,使操作系统能够自托管,只需要添加一个C编译器。
• 在toarucc中实现C编译器工具链。


构建与安装
它的构建可以使用Docker进行简化,推荐使用Github CI流水线。对于希望在适当配置的Linux主机上本地构建的用户,可以使用Docker构建容器。

文件系统布局
其文件系统布局简洁明了,便于理解和管理。

运行
可以在VirtualBox和VMware Workstation虚拟机中获得最佳的用户体验,因为它支持自动调整显示大小和绝对鼠标定位。也可以在QEMU中运行,这提供了最大的硬件灵活性和最佳的调试体验。此外,ToaruOS也已经在真实硬件上成功测试。


ToaruOS是一个独特的操作系统项目,它以其简洁的设计、完整的特性和教育导向的目标而引人注目。虽然它并非一个追求商业化的产品,但其在操作系统设计和实现方面的价值不容忽视。 对于学习操作系统原理和实践的开发者来说,ToaruOS是一个宝贵的学习资源。


最新版本:2
v2.2于2023年8月发布。

项目主页:https://toaruos.org/

https://github.com/klange/toaruos