ReactOS 是一个适用于 x86/x64 平台的免费、开源的操作系统暨项目,旨在提供 Windows 平台下的程序与驱动的二进制兼容性。借由逆向工程等手段,其以净室设计的方法进行开发。
该项目于 7 月 23 日发布了 ReactOS 0.4.9 版本。目前,ReactOS 遵循每三个月发布一个版本的节奏。虽然这种更快的更新周期可能意味着重大变化的减少,但目前项目的努力主要集中于功能质量及细节提升。本版本的部分具体变化如下:
自举(Self-hosting)
在 ReactOS 中构建 ReactOS 的能力,通常被称作自举(Self-hosting),常常被看作操作系统成熟过程中的一个里程碑。虽然 ReactOS 此前就有了自举的能力,但其细节可能与预期的有些差别。
编译任何大型代码库,无论是操作系统还是Web浏览器,都以各种方式对系统造成较大压力,其中最大的一个是内存使用和存储 I/O。正在编译的代码需要从存储器加载到内存中,并且需要更多内存来保存所有编译对象,因为它们被链接在一起。调度也在一定程度上受到重视,因为大多数现代构建系统将尝试生成多个编译过程以加速构建过程。
在过去,ReactOS 实际上能够自举,但是这个功能存在明显的问题。最大的问题是构建 ReactOS 是以更老版本的 ReactOS 内核中实现的。由于内核重新编写为更符合 NT的设计和实现,功能上的各种差距仍有待完成,这使得 ReactOS 无法再次构建自己。 经过多年努力,包括最近一批由 Pierre Schweitzer 完成的文件系统相关更改,ReactOS 再次能够自我托管。 在开源的精神下,FreeBSD 项目的 qsort 实现帮助 Pierre 达成了实现这一目标所需的最后一些部分。
稳定性
系统不稳定性的主要来源是内存管理器,公共缓存,硬件抽象层(HAL)和 FastFAT 驱动程序之间复杂的相互作用。不稳定性的最大罪魁祸首来自 FastFAT 驱动程序导致的重大资源泄漏,导致它占用公共缓存,以至于尝试复制大文件会导致崩溃。为了解决这个问题,Thomas Faber 和 Pierre 共同努力纠正了 FastFAT 驱动程序的行为,添加了写限制支持并限制了它对缓存的使用。虽然更加保守的缓存使用可能会导致系统在 IO 操作期间表现得更慢,但它确保资源仍可用于大型 IO 操作的服务,而不是像以前那样崩溃。
FastFAT 的另一个值得注意的改进是重写对脏卷(dirty volumes)的支持,大大减少了文件损坏的可能性。每当在启动过程中检测到脏卷时,「chkdsk」(检查磁盘)将触发对这些卷的修复。这通常可以保护系统在崩溃后不会变得无法使用。
Shell 改进和功能
shell的一些质量改进已经到来,其中第一个是 Mark Jansen 的内置zipfldr(Zip文件夹)扩展。虽然 Windows 长期拥有此功能,但现在 ReactOS 还可以解压缩压缩文件,而无需安装第三方工具来完成它。正如下面的 gif 所示,ReactOS 的实现确实非常活跃。
当然,有了这样的新扩展,能够管理它们可能是有用的,这是 Katayama Hirofumi MZ一直在研究的东西,以及对 Shell 的大量其他改进。
另一个可能看似简单但实际上相当复杂的主要功能是,当使用鼠标右键拖动文件或文件夹时,可以选择是移动、复制还是链接文件或文件夹。这篇文章由 Giannis Adamopoulos 完成,他之前的工作非常有用,使得当前的 ReactOS shell 能够以用户长期习惯于 Windows 的方式运行和运行。
其他改进
当然,在 ReactOS 较少的部分中存在许多其他变化,许多人提供了贡献和改进。这些功能包括像 Stanislav Motylkov 在 Paint 应用程序中不再崩溃的功能,以及更多的幕后操作,如 Timo Kreuzer 在构建 x64 目标时不断努力准备代码库以实际运行(该项目欠 Timo 许多瓶子啤酒)。
其他质量改进包括 Eric Kohl 在 ReactOS 安装程序的 GUI 组件中的新鼠标属性对话框,而 Eric 的工作涉及启动和停止服务,设备管理器和混音器更适合长期改进和功能。HermèsBélusca-Maïto 继续他的工作,可能被称为 ReactOS 的实用应用程序,例如剪贴板查看器、事件查看器、注销对话框和命令提示符 shell。当然,人们永远不会忘记 RAPPS,这是用于在ReactOS上安装各种应用程序的网关程序。考虑到 ReactOS旨在支持许多不同的语言,只有将其 unicode 支持作为优先事项才是恰当的,这是Alexander Shaposhnikov 正在努力的方向。
Windows 中的兼容性依赖于 ShimEngine,该 ShimEngine 允许加载略有不同版本的库和 API。ReactOS 大致相同,并且 Mark 已经添加了 ReactOS 使用 Version API 将其自身呈现为 Windows 8.1 的能力。作为旁注,这一引擎自身被证明有助于减少游戏Globulation 2的加载时间。
当然,ReactOS 不仅仅是关于此处和现在的功能,还有关于未来的准备工作。Thomas 和 Vadim Galyant 已经开始合并他们对 USB 堆栈的改进,以准备原生、官方支持从这些设备启动。该功能尚未完成,但我每次发布都越来越近。
同步第三方代码
ReactOS 是一个开源项目及其生态系统,它使用了几个其他的开源项目。在 0.4.9 版本中,Amine Khaldi 已将许多用户模式 DLL 同步到 WINE Staging 版本 3.3。
更多信息载于其发布通告。
ReactOS 基于在 Windows NT 架构中出现的最佳设计原则,但完全从「零」开始。ReactOS 不仅对为 Windows 设计的程序及驱动二进制兼容,而且外观与感觉也与 Windows 相近。其最终目标是成为 Windows 的直接(drop-in)替代。
自项目起始,ReactOS 已有了约 20 年的历史,但是 ReactOS 仍处于 Alpha 阶段,因此稳定性及功能的完整程度都存在比较明显的问题,目前并不适合实际使用。虽然如此,自 0.4.7 版本起,ReactOS 开始在 GitHub 进行开发,目前项目仓库已有 260+ Forks 并获得了 3500+ Stars,看起来发展迅速。
ReactOS 的 ISO 非常小,仅有 100 MB 左右,且安装过程也十分快速。其还另外提供支持 live 模式的 ISO。有兴趣的读者或可尝试。
项目首页:
https://www.reactos.org/。
封面图片由编者自 ReactOS 0.4.8 截图;文内的部分内容衍生自 ReactOS.org 与英文维基百科的 ReactOS 词条;本文还参考了 DistroWatch.org 的对应页面;版本变化部分均译自其发布通告,此部分不为文后所言条款授权。