ReactOS 是开源、自由的
Windows NT 系列克隆操作系统,保持了与 Windows 的系统级兼容性。
系统简介
ReactOS 是一款基于
Windows NT 架构的开源操作系统,旨在实现和 NT 与 Windows 操作系统二进制下的完全应用程序和驱动设备的兼容性,通过使用类似构架和提供完全公共接口。
截至2018年12月,ReactOS 仍然被认为是 alpha 软件,功能不完整但许多 Windows 应用程序已经运行(例如 Adobe Reader 6.0,OpenOffice等),因此开发人员仅建议用于评估和测试目的。
发展历程
启动开发
1996 年,一群自由软件开发者开始了一个名为 FreeWin95 的项目,旨在重新实现 Windows 95。但当时对该操作系统仅限于讨论而没有实质性进展。
虽然对于 FreeWin95 项目期待很高,但直到 1997 年末,项目还没有公开发布任何版本,于是项目协调员Jason Filby 联合大家重振该项目并起了一个新名称 “ReactOS” ,并计划重新实现 Windows NT。1998年 2 月 ReactOS 项目正式启动,开始开发系统内核和基本的驱动程序。
代码审查
为了避免版权起诉,ReactOS必须明确地完全区分并且不衍生于 Windows,这是一个需要非常谨慎工作的目标。2006年1月17日,Hartmut Birr 在 ReactOS 开发者邮件列表中指出 ReactOS 包含有反编译的
Windows 源码。因此开发者暂时禁止非开发者进入系统。鉴于ReactOS是开放源码软件,此举引起开放源码社群的不满。ReactOS 的贡献者没受当时的举动影响。
不久后所有软件开发工程都能自由进入了。由于 Birr 的指摘未能证实,开发者决定审查源码。
可能“受污染”的
源码会被封锁,直到那些源码经审查后确定无问题。
大部分的源码已解封,维护和开发都可继续进行,而审查亦同时进行。
2008年,源码已经全部解封。审查也已经全部结束。维护和开发得以正常继续。
参与 Google Summer of Code
从 2006 年开始,ReactOS 项目参与了多次 Google Summers of Code。例如,在GSoC 2011 中, ReactOS指导了一个将 lwIP 集成到网络堆栈中的学生项目。迄今为止,ReactOS曾在 GSoC 参与过五次:2006年,2011年,2016年,2017年和 2018 年。
公开演示
俄罗斯的政治人物 Viktor Alksnis 会见了项目协调员 Aleksey Bragin,Aleksey Bragin介绍了该项目并演示了该项目,演示中显示 ReactOS 在 2007 年已经可以运行当时的 Total Commander 和 Mozilla Firefox。
它还吸引了时任俄罗斯总统
梅德韦杰夫(Dmitry Medvedev)的关注。 梅德韦杰夫访问了斯塔夫罗波尔地区的一所高中,巧合的是 ReactOS 开发者 Marat Karatov 正是该学校的高中生,他借此机会向总统介绍了开源Windows系统,并请求总统资助100万欧元。梅德韦杰夫称对 ReactOS 很感兴趣,表示会考验资助事宜。
ReactOS 社区版
2014年4月,ReactOS 项目宣布推出 iegogo活动,推出基于 0.4版本的 ReactOS Community Edition。筹资活动的目标是50,000美元,除此之外还有额外的伸展目标。ReactOS Community Edition 的开发将以社区为中心,ReactOS 用户投票和资金决定项目旨在支持哪些软件和硬件驱动程序。2014年 6 月 1 日,关于Indiegogo的灵活众筹活动结束时筹集了25,141美元用于社区版的开发,并且不久后启动了支持硬件和软件的投票过程。
ReactOS Hackfest 2015
ReactOS 项目于2015年8月7日至12日在德国亚琛市举办了一场Hackfest。Hackfest 圆满结束,因为它为ReactOS增加了许多功能。
系统开发
核心开发
ReactOS主要用C语言进行编写,另外包含一些用 C ++ 编写的元素,如 ReactOS Explorer 和声音栈。该项目使用 MinGW 和
Visual Studio 进行编译。
开发人员的目标是使内核和用户模式API与Windows NT 5.2(Windows Server 2003)兼容,并增加对更多应用程序和硬件的支持,并计划在开发日趋成熟时针对更新版本的Windows。DirectX支持是通过内部实施 ReactX进行的。2D硬件加速渲染是本机完成的,而其他绘图功能则重定向到OpenGL作为权宜之计解决方案。
开发进度受开发团队规模及其经验水平的影响。作为对实施 Windows 7所需工作量的估计,微软雇佣了大约1,000名开发人员,组成了25个团队,每个团队平均有40名开发人员。但截至2011年9月2日,在 Ohloh 的 ReactOS条目中,通过“非常大,活跃开发者只有 33 位,这些开发人员在 12 个月的时间内贡献了累计,并且累积了104个以前通过 Subversion 从项目开始为代码贡献代码的用户。ReactOS 开发人员 Michele C.在米兰举办的 Hackmeeting 2009 上的演讲中指出,大多数开发人员在使用ReactOS时都了解 Windows体系结构,并且没有任何先验知识。
虽然ReactOS目前主要针对 x86 / AMD64 PC 平台,但是,移植到ARM 架构的努力“正在进行中”,虽然它没有产生太多功能而被放弃了。支持的的Xbox,变体IA-32体系结构,是通过使用一个特定于体系结构的加入HAL,[90]虽然这一点,与端口沿的PowerPC,不再积极维护。
硬件驱动程序堆栈
在硬件驱动程序方面,例如UniATA项目为ReactOS 提供串行ATA驱动程序。该项目还尝试使用FullFAT库重写其FAT可 安装文件系统。ReactOS利用 Haiku 的 USB 堆栈作为参考,并作为其 USB 支持的基础。
网络
ReactOS的网络堆栈构建在 FreeBSD 中 OSKit 网络堆栈端口的TCP部分,以及内部开发的面向数据包协议(如IP)的实现。后来,lwIP被集成到ReactOS的网络堆栈中。Samba / Samba TNG 项目已经提供了LSASS,SAM,NETLOGON 和打印假脱机等 Windows 网络服务作为开源替代方案。
与 Wine 项目合作
ReactOS 和
Wine 项目共享本机运行二进制 Windows 软件的目标,因此可以共享许多依赖项和开发。 ReactOS 使用 Wine 项目的一部分,以便它可以从 Wine 在实现 Win32
API方面的进展中受益。虽然由于体系结构的不同,Wine 的 NTDLL,USER32,KERNEL32,GDI32和 ADVAPI32 组件不能由 ReactOS 直接使用,但代码片段和其他部分可以在两个项目之间共享。不过内核由 ReactOS 单独开发,因为 Wine 依赖于现有的类
Unix 内核。
版本更新
0.4.5
改进了字体和字体指标的渲染,内核和驱动程序中的主要修复,Microsoft Office 2010 经过测试可以正常运行。
0.4.6
修复了几个双引导问题,改进了主题支持,添加了 NFS 驱动程序,修复了几个内核和文件系统的问题。
0.4.7
改进版
应用程序管理器RAPPS,在
资源管理器中实现“快速启动”工具栏; 文件系统驱动程序中的各种错误修复,RDBSS / RXCE和NFS支持的改进。
0.4.8
支持气球通知,通知托盘,shell 自动完成,使用了新的 NTFS 驱动程序,崩溃转储报告和 NT6 + 软件的实验性支持。
0.4.9
ReactOS 再次实现自托管功能,也就意味着在 ReactOS 上可以编译 ReactOS。
0.4.10
支持从 Btrfs 启动。
0.4.11
内核改进:主要为存储改进。
增加对 manifests 的支持。
解决了 .NET 2.0 应用程序无法正常关闭的问题。
USETUP改进,使已安装的React OS可升级。
对负责图形渲染的Win32子系统的改进。
0.4.12
内核改进:修复React OS 的CDFS驱动。
字体渲染改进。
加入Intel e1000 NIC驱动,供VirtualBox和VMware虚拟机使用。
0.4.13
改善USB支持,现在已支持HID和存储设备。
Explorer增加文件搜索功能。Xbox ReactOS 端口改进。FreeLoader FAT 引导加速。系统字体管理通过注册表完成。
ReactOS现在可在x64位环境下启动并工作。
影响评价
下面一些关于 ReactOS 项目的批评提出几条为什么他们不相信 ReactOS 会成为一个有价值的项目的原因。其中,有人指出把与 Windows NT 4.0 兼容作为 ReactOS 的发布目标是一个局限,因为 NT 4.0 评价不佳而且它已经过时了。
作为回复,有人提出虽然目前是把与 Windows NT 4.0 兼容作为目标,但是,Windows后来基于 NT 架构的系统都与 NT 4.0 在系统层次上高度相似(例如:
Windows 2000,
Windows XP,
Windows Server 2003)。因此,想要与后续的 Windows 版本兼容,只要 NT 4.0 的目标完成,剩下都简单了。
以此为由,该批评的回复者说把 NT 4.0 的兼容作为里程碑并不是一个局限,而是未来开发的基础。
其它人则批评认为我们已经有好几个基于 Unix(
Linux 及不同版本的
BSD)的操作系统, 与其再创建一个新的, 不如集中精力改善旧的,努力做好 WINE,让现有的 WINDOWS 应用程序在其上运行得更好。但是,ReactOS 开发者及其他拥护者辩解说,UNIX 类操作系统不一定是唯一的最好的操作系统类型。NT 的设计含有很多概念是 Unix 工作方式的改进,而且一个在更低层次更似 Windows 的操作系统(即是设计成与 Windows 相似,而非执行某某应用程序,尝试把另一个操作系统变成 Windows)将更有机会成功达到更广阔地兼容现有的 Windows 应用程序和(特别是)硬件驱动程序。